DeepCTR專題:DeepFM論文學習和實現及感悟
論文地址:https://arxiv.org/pdf/1703.04247.pdf
CTR預估我們知道在比較多的應用場景下都有使用。如:搜尋排序、推薦系統等都有廣泛的應用。並且CTR具有極其重要的 地位,特別相對廣告推薦領域來說更加如此,競價廣告需要通過ctr給出相應的價格,並由此獲得廣告曝光的機會。而ctr的大小決定了出價的高低,直接會影響到該廣告是否能得到曝光機會。這裡涉及到計算廣告相關的知識,暫時就不展開講了。這裡主要介紹一下DeepFM該演算法的基本原理和網路框架。
論文總體來看還是相對比較容易的,主要分為三個部分:
第一部分:演算法的主要背景
第二部分:DeepFM的基本網路框架和原理
第三部分:實驗(papers必須有的部分)
下面分別從我個人理解的角度來說說每個部分吧:
1、DeepFM演算法的背景
(1)首先我們同樣要回顧一下FM演算法的基本原理,FM主要是在LR的基礎上增加了二階交叉項的概念,從而可以獲得一些轎車特徵。但是演算法每個特徵兩兩交叉的話,演算法複雜度是O(n平方),
所以,為了優化FM演算法,將矩陣分解應用其中。
FM的缺點是:
1)僅僅兩兩之間的交叉特徵
2)只能獲得二階交叉的特徵,對於高階特徵並沒有涉及
(2)從16年wide-deep演算法中,或多或少的作者受到了一些啟發,於是想到可以對FM演算法利用深度學習進行優化,預計就提出了DeepFM演算法。
2、DeepFM演算法的基本原理(個人覺得還是比較簡單的)
(1)總體網路結構
網路結構中,主要包含Deep部分和FM部分,網路結構類似Wide-Deep結構。
(2)演算法的原理
首先網路最終輸出是:
其中,FM部分如下所示:
Deep部分如下所示:
網路就是這麼簡單,就是講這兩部分的輸出進行求和並輸出。
3、實驗。實驗部分可以學習別人調節引數的經驗。
(1)Dropout設定:
從作者的實驗來看,dropout設定為0.9效果最佳
(2)隱藏層數設定
從上圖來看,作者實驗資料表明,隱層數量=3效果最佳
(3)隱藏層神經元個數
神經元個數的變化: constant (200-200-200), increasing (100-200-300),decreasing (300-200-100), and diamond (150-300-150)