google bigtable论文原文_CTR论文笔记[1]:Wideamp;Deep
感覺自己對CTR的論文讀的太少,因此后續會在專欄記錄一下閱讀論文的筆記和心得。
2016年Google發表了文章《Wide & Deep Learning for Recommender Systems》,本文主要記錄了在讀論文時的筆記和一些心得。
一、論文筆記
1、目的:同時解決Memorization和Generalization問題。
Memorization:根據人工經驗和業務背景,選擇可能對label有較大影響的原始特征和組合特征輸入到模型,讓模型通過訓練記憶數據中重要的特征。典型代表是LR,使用大量的原始特征和交叉特征作為輸入。優點是可解釋性高、實現快速高效。缺點是人工設計較多,輸入過于細粒度的特征交叉會導致過擬合,模型記憶的只有部分通過訓練得到高權重的組合特征而已,對于輸入中未添加過的組合特征以及添加過的但是由于訓練數據中共現頻次為0的組合特征,模型的權重都為0,即沒有記憶,無法“擴展”。
Generalization:為高維稀疏的輸入特征學習低維稠密的Embedding向量表示,然后將Embedding向量輸入到神經網絡做深層交互。正如NLP里的詞向量一樣,通過Embedding將特征向量化,顯示特征之間相關性,使模型具備了“擴展”的能力。Generalization的代表是FM、DNN。其優點是人工設計少,可以“擴展”。缺點是存在過度擴展的可能,例如在推薦系統中,用戶評分矩陣極度稀疏,大部分的user和item應該是沒有關聯的,但是經過Embedding向量表示,大部分的user和item之間的評分預測并不為0。
2、模型結構圖:
3、預測公式:
其中
是sigmoid函數, 是原始特征, 是組合特征, 是wide part的權重參數, 是deep part最后一層激活值 的權重參數。在具體實現時,wide側的輸入是一些原始特征尤其是類別特征以及組合特征,數值型特征如年齡也會分桶轉化為類別輸入,分桶的目的在于CTR問題label與數值型特征并不會是線性關系,往往與分段有關。比如年齡對是否下載騰訊動漫APP的影響,20歲與22歲無差別,但是20歲與30歲差別就挺大的。deep側主要是輸入原始的數值型特征、類別特征(類別多的做Embedding),然后在深層神經網絡做隱式深層交互。
4、具體實現:
TensorFlow官方有實現的類tf.estimator.DNNLinearCombinedClassifier。但是我運行官方的TensorFlow Wide & Deep Learning Tutorial總是出錯,所以我換了其他的教程
TensorFlow Wide & Deep Learning Tutorial(廣泛深入的學習教程)?cloud.tencent.com還有不使用TensorFlow的numpy實現:
石塔西:用NumPy手工打造 Wide & Deep?zhuanlan.zhihu.com二、心得:
這里主要記錄了在閱讀論文之前和閱讀過程中產生的一些問題以及自己的理解。
問題1:為啥wide側是記憶,deep側是擴展?
答:wide側輸入特征固定,后續并沒有再進行特征交叉,且歷史上未出現的特征對則對應權重會是0,因此是記憶。deep側由于使用低維稠密向量表示特征,特征之間的相關性就可以由向量之間計算得到,如計算向量的余弦夾角。由于向量是低維稠密的,因此任意兩個特征之間的相關性基本不為0,甚至會有想不到的特征之間相關性很高,這樣就具備了良好的擴展能力。PS:我也不知道當初為什么明白NLP里的詞向量原理以及推薦系統的矩陣分解,卻不明白deep側可以擴展,就像初中高中有些數學題答案里面有顯然二字,當時想不通,最后弄明白了再一想可不就是顯然嘛,但是當時為什么想不到就不知道了。可能是當時沒有這樣的思維方式吧。
三、總結:
Wide&Deep論文的原理并不復雜,我的時間主要耗在那個numpy實現上。建議閱讀論文原文
https://arxiv.org/abs/1606.07792?arxiv.org,然后看看一些詳解即可。
石塔西:看Google如何實現Wide & Deep模型(1)?zhuanlan.zhihu.com刺猬:詳解 Wide & Deep 結構背后的動機?zhuanlan.zhihu.com總結
以上是生活随笔為你收集整理的google bigtable论文原文_CTR论文笔记[1]:Wideamp;Deep的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pytorch dataset data
- 下一篇: set python_使用dict和se