學習筆記 深度模型Wide Deep

2021-10-22 22:30:04 字數 1624 閱讀 1444

來自16年的一篇google的**《wide & deep learning for recommender systems》,文章將傳統的lr和dnn組合構成乙個wide&deep模型(並行結構),既保留了lr的擬合能力,又具有dnn的泛化能力,並且不需要單獨訓練模型(join),可以方便模型的迭代。

問題的提出:

線性模型lr泛化能力較弱,且需要做好特徵工程,無法學習到訓練集中未出現的組合特徵。

fm或dnn通過學習embedding vector雖然可以學習到訓練集中未出現的組合特徵,但是容易過度泛化。

wide部分就是基礎的線性模型,表示為y=wx+b。x特徵部分包括基礎特徵和交叉特徵。交叉特徵在wide部分很重要,可以捕捉到特徵間的互動,起到新增非線性的作用。

deep部分就是個前饋神經網路(a feed-forward neural network),可以簡單理解為embedding+mlp這種普遍的結構。

網路的訓練方式採用的是聯合訓練,並不是單獨的訓練兩部分網路,然後在**的時候在一起使用,而是直接在訓練階段就同時訓練兩部分的網路引數。在訓練的過程中,wide部分主要採用帶l1正則的ftrl演算法進行優化,deep部分採用adagrad進行優化。

tbd
q:哪些特徵適合放在wide側,哪些特徵適合放在deep側,為什麼?

wide部分有利於增強模型的「記憶能力」,deep部分有利於增強模型的「泛化能力」。所謂的「記憶能力」,可以簡單理解為發現「直接的」、「暴力的」、「顯然的」關聯規則的能力。wide側記住的是歷史資料中那些常見、高頻的模式,是推薦系統中的「紅海」。實際上,wide側沒有發現新的模式,只是學習到這些模式之間的權重,做一些模式的篩選。

deep部分的作用就是泛化,為的就是解決**資料**現wide部分沒有包含的特徵。即,能夠從歷史資料中發現低頻、長尾的模式,發現使用者興趣的「藍海」,具備良好的「擴充套件」能力。deep側通過embedding將tag向量化,變tag的精確匹配,為tag向量的模糊查詢。

綜上,wide側需要根據人工經驗、業務背景,將有價值的、顯而易見的特徵及特徵組合輸入這一側。

q:為什麼wide部分要用l1 ftrl訓練?

1)什麼是ftrl:fobos可以看作truncated gradient的一種特殊形式,將每乙個資料的迭代過程,分解成乙個經驗損失梯度下降迭代和乙個最優化問題;rda,非梯度下降類方法,屬於更加通用的乙個primal-dual algorithmic schema的乙個應用,能夠更好地平衡精度和稀疏性。ftrl結合了fobos(好的精度)+ rda(出色的稀疏性)兩個方法的優點,是結合了sgd的高精度並且能產生稀疏解。

2)原因:wide部分可看作傳統的lr,使用ftrl可得到稀疏權重,降低計算複雜度。ftrl收斂更慢,這是因為二階正則希望離上一輪weight不要太遠。從網路結構上看,wide部分直連,梯度一步到位,收斂會比deep快。這樣搭檔ftrl,中和下,給deep部分以機會,學習更多的資訊。

**q:**為什麼deep部分不特別考慮稀疏性的問題?

deep部分是神經網路,稀疏性不重要,即使稀疏也無法降低計算複雜度。

深度學習baseline模型 深度學習模型訓練流程

工作中訓練了很多的深度學習模型,目前到了上公升到方 的角度來看了。日常工作中有的人可能已經在遵循方 做事,可能自己沒有注意,有的人可能沒有遵循方 在做事,雖然可能最後的結果差不多,但花費的時間和精力應該會差別很大,當然這是我自己的感受。我們不必完全按照方 來做,但基本流程跟方 應該一致。下面的具體步...

深度學習模型

深度學習常用方法 深度置信網路 dbn 概率生成模型,生成資料 卷積神經網路 cnn 判別模型,處理二維圖 卷積深度置信網路 cdbn 兩者的結合 迴圈神經網路 rnn 與時間序列有關的 對抗神經網路 gan 兩個網路的零和遊戲,乙個網路用來判別,乙個網路用來生成 自動編碼器 vae 生成模型 深度...

《深度探索c 物件模型》學習筆記

封裝並未給c 帶來任何的空間或執行期的不良後果,c 在布局和訪問時間上的主要額外負擔由虛擬化引起。包括 1 virtual function機制。用以支援乙個有效率的 執行期繫結 2 virtual base class機制。用以實現 多次出現在繼承體系中的base class,有乙個的單一而被共享...