搜尋意圖: 如果你在找「寬深學習 是什麼」或「寬深學習 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。
TL;DR: 結合寬線性模型和深度神經網絡的混合機器學習架構,寬部分用於學習特徵組合,深部分用於學習高階特徵交互,常用於推薦系統和分類任務
實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。
下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。
結合寬線性模型和深度神經網絡的混合機器學習架構,寬部分用於學習特徵組合,深部分用於學習高階特徵交互,常用於推薦系統和分類任務
核心概念
寬深學習解決了機器學習中的一個古老難題:線性模型與非線性模型的權衡。傳統方法需要進行二選一:要麼使用線性模型(易於理解、計算快速但表達能力有限),要麼使用深度神經網絡(表達能力強但難以解釋、容易過擬合)。寬深學習的創新之處在於「同時使用兩者」,讓兩種模型各司其職。
寬部分使用廣義線性模型(GLM),特別是帶特徵交叉的邏輯迴歸。它的優勢在於能有效記憶訓練資料中出現過的特定特徵組合。例如,在推薦系統中,「用戶 ID = 123 且應用類別 = 遊戲」這個特徵組合可以直接學到其權重。深部分使用多層全連接網絡或卷積網絡,通過多層非線性變換學習高階特徵表示。
運作原理
寬部分(Memorization Layer)
寬部分通常是一個邏輯迴歸模型,輸入為原始特徵和人工設計的特徵交叉(feature cross)。例如,對於用戶年齡、性別和興趣類別,寬部分可能會包括「年齡 AND 興趣」、「性別 AND 興趣」等交叉特徵。輸出為原始特徵和交叉特徵的加權和,經過 sigmoid 函數得到預測。
寬部分的特徵交叉必須手工設計。在推薦系統中,工程師需要根據業務知識判斷哪些特徵組合重要。寬部分對這些已知的、高頻的特徵組合有很強的記憶能力。
深部分(Generalization Layer)
深部分是多層前饋神經網絡。輸入為原始特徵和/或嵌入向量。例如,用戶 ID、應用 ID 等高維稀疏特徵先通過嵌入層轉換為稠密向量,再輸入深度網絡。深度網絡通過多層非線性變換自動學習複雜的特徵交互。
深部分沒有特徵交叉的限制,理論上能學習任意複雜的特徵組合。深部分對訓練資料中未出現過的特徵組合具有泛化能力。
融合層(Joint Training)
寬部分和深部分的輸出各自經過激活函數(如 sigmoid),然後相加或拼接後進入最終的輸出層。在二分類任務中,常見的融合方式是將兩部分的輸出相加,再經過 sigmoid:
output = sigmoid(wide_output + deep_output)
在訓練階段,寬部分和深部分的參數同時更新。寬部分使用 L1 或 L2 正則化防止過擬合。深部分使用 Dropout、批歸一化等技巧。
實際應用
Google Play 推薦:Google Play 商店用寬深學習預測用戶是否會安裝某個應用。寬部分記憶用戶過去安裝過的應用類別、安裝時間等特徵組合。深部分學習應用隱藏特徵(如應用品質、評分、下載量)與用戶隱藏興趣的交互。
廣告點擊率預測:線上廣告平台需要預測用戶是否會點擊廣告。寬部分記憶「特定用戶點擊特定廣告類型」的歷史模式。深部分學習用戶和廣告的隱藏表示,發現新的點擊機會。
電商推薦:寬部分記憶「購買過 A 類商品的用戶傾向於購買 B 類商品」等規律。深部分學習商品特徵(如材質、顏色、價格)與用戶隱藏偏好的關係。
搜尋引擎排名:搜尋結果排名結合了匹配信號(寬部分)和相關性信號(深部分)。寬部分確保查詢詞和文檔的完整匹配,深部分識別語義相關的文檔。
常見誤區
誤區 1:深度學習已經夠強大,寬部分是多餘的。深度網絡確實表達能力強,但在實務中,直接讓深度網絡學習已知的特徵組合往往不如寬部分高效。寬部分的線性組合方式是一種有效的歸納偏差(inductive bias)。
誤區 2:寬部分必須手工設計特徵交叉。雖然傳統做法需要手工設計,但現代系統可以自動生成候選交叉特徵,或用深度網絡學習的特徵重要性指導特徵交叉設計。
誤區 3:寬深學習適用於所有場景。寬深學習在推薦系統、分類任務上表現優異,但對於純迴歸、時間序列等問題,簡單模型可能足夠。寬深學習增加了模型複雜度和訓練成本。
誤區 4:寬和深可以獨立訓練後融合。寬深學習的關鍵是「聯合訓練」。如果分別訓練再融合,會失去梯度信息流通帶來的優化效果。
與相關技術的比較
寬深學習 vs. 純線性模型:純線性模型計算快速、易於解釋,但表達能力有限。寬深學習保留線性模型的優勢(記憶能力、可解釋性),補充深度網絡的泛化能力。
寬深學習 vs. 純深度網絡:純深度網絡表達能力強,但在訓練樣本有限、特徵交叉清晰的場景,可能不如寬深學習高效。深度網絡需要更多資料和計算資源才能達到相同性能。
寬深學習 vs. Gradient Boosting(如 XGBoost):兩者都是混合方法。Gradient Boosting 逐步訓練決策樹,寬深學習並行訓練線性和非線性模型。寬深學習更適合超大規模資料和分散訓練,Gradient Boosting 更適合中等規模資料和快速迭代。
寬深學習 vs. 因子分解機(Factorization Machines):因子分解機是一種線性模型的擴展,能自動學習特徵交叉。寬深學習同時使用顯式交叉(寬部分)和隱式交叉(深部分),更加靈活。寬深學習在大規模應用中計算效率更高。
常見問題
寬部分的特徵交叉應該如何設計?
特徵交叉設計結合業務知識和資料探索。首先,從推薦任務的業務邏輯出發:在推薦系統中,「用戶類型 AND 商品類別」通常是重要的交叉,因為不同用戶群體對不同類別商品的偏好差異大。其次,用統計方法分析資料:計算各特徵組合的出現頻率和轉化率,選擇高頻且高轉化的組合。第三,用特徵重要性分析(如 SHAP)識別貢獻大的交叉。在實務中,通常從 2 路交叉開始(兩個特徵的組合),逐步嘗試高階交叉。過多交叉會增加模型複雜度和過擬合風險。
寬深學習的訓練時間會比單個模型長多少?
寬深學習的訓練時間通常比單個模型長 20-50%。寬部分的訓練非常快(線性模型只需數秒到數分鐘),瓶頸在深部分的神經網絡訓練。由於寬和深同時訓練,梯度計算涉及兩個部分,每個反向傳播步驟會多消耗資源。但與訓練一個等規模的深度網絡相比,寬深學習由於寬部分的正則化作用,實際上可能更快收斂,所需 epoch 更少。在分散訓練環境中,寬部分可以在 CPU 上訓練,深部分在 GPU 上訓練,實現並行化加速。
寬深學習在線上推理服務中如何部署?
部署寬深學習需要同時維護兩個模型和融合邏輯。一般做法是:(1)寬部分導出為查詢表或簡化的線性計算(執行非常快,毫秒級);(2)深部分導出為優化的推理框架(如 TensorFlow Lite、ONNX、TensorRT),在 GPU 或 TPU 上運行;(3)應用層同時調用兩部分,獲得各自的預測概率,相加後得到最終結果。在 Google Play 和廣告系統中,這個流程通常在毫秒內完成。為了進一步加速,可以用蒸餾技術將寬深模型知識遷移到單個輕量模型。