天天看點

推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

論文名字:Attentional Factorization Machines:Learning the Weight of Feature Interactions via Attention Network

論文位址:http://staff.ustc.edu.cn/~hexn/papers/ijcai17-afm.pdf

若有錯誤或不足,煩請各位dalao指教

AFM模型提出的目的和背景

AFM也是一個典型的基于FM思想提出的模型,我們知道為了解決辛普森悖論問題,需要對不同的特征進行組合,但是這些特征組合對最後模型的性能的影響各不相同,是以為了提升模型的預測結果,AFM提出一種attention結構,讓對結果有很大促進的特征組合有更大的權值。

AFM的模型結構

推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

總體的結構就是這個樣子,是不是很面熟,這個和NFM模型的結構很類似,隻不過NFM在做Bi-interaction之後就直接接入DNN了,而AFM多了一個Attention-based Pooling,并且AFM後面也沒有接入深層網絡,而是直接做weight sum後再接一個線性映射就輸出了,線性映射部分圖中其實是省略掉了。

Input & Embedding Layer

AFM和NFM一樣,都是對二階特征組合方程部分進行模組化,首先輸入部分依然是稀疏特特征和稠密特征concat一起的長向量,這裡需要說明一下,關于數值型特征如何參與特征組合,一開始我也沒明白,看了很多部落格之後,有一位dalao解釋的很清楚(附上傳送門:傳送門)

Pair-wise Interaction Layer

其實,這部分做的工作就是做特征組合,具體的方法如下:

推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

這個 ⊙ \odot ⊙的意思就是,兩個向量對應元素相乘,顯然最後的結果仍然是個向量,假設我們有m個特征,最後組合結束之後就會得到 m ( m − 1 ) 2 \frac{m(m-1)}{2} 2m(m−1)​個組合向量

Attention-based Pooling Layer

這部分其實就相當于NFM在Bilinear interaction layer之後做sum pooling之後在接一個全連接配接層的操作,文中給出的公式如下:

推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

這個 P P P就是全連接配接層的參數,作者指出,如果 P P P的所有值都為1,并且b為0,這個就是FM的二階交叉項,我來給大家推導一下:

推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

是以這種結構可以看作是擴充的FM。這樣的話可以将向量轉化為最後二階特征組合的分數值(這裡注意一下,這個 P P P不是attention score,僅僅是一個映射的權重向量而已),而AFM是要在sum pooling操作的時候,學習一個權重 α i j \alpha_{ij} αij​,表達式如下所示:

推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

文中說,這個權重可以直接通過梯度下降去硬學,但是會有問題,和FM的 w i j w_{ij} wij​一樣,如果這兩個特征組合從來都沒在訓練集裡出現過,那這個權重就學不到了,為了解決這個問題,AFM提出了一個Attention Network的結構,其實就一層而已,具體的表達如下:

推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

這個結構其實就是把每個組合後的特征向量作為樣本輸入到網絡裡,通過一個全連接配接層使用Relu作為激活函數,再通過一個線性映射将向量轉換為數值,具體的網絡結構應該如下所示:

推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

最後的這個值要過一個softmax函數轉換為機率(其實這裡小弟是有疑惑的,一開始我在想,多個特征組合的向量通過這個attention network是否共享這個W呢?看了幾位dalao的代碼發現,應該是共享W的),最後AFM的計算公式就變成了下面這個樣子:

推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

前面的那個 y ^ \hat{y} y^​裡面的b可能合并到偏差 w 0 w_0 w0​裡面了。

Some Problem

AFM也存在過拟合問題,文中提到為了解決隐藏層不同單元依賴過高的問題,在pair-wise interaction layer加入dropout層(什麼是co-adaptations可以看看這篇文章傳送門),同時在attention network上加了L2正則化,最終的loss公式如下(以回歸問題為例):

推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

作者提出,沒有在attention network裡使用dropout的原因是穩定性的問題,同時使用兩個dropout層,模型的穩定性變差,影響性能。

實驗結果

實驗的資料集采用Frappe和MovieLens,評價名額采用的RMSE,為了平衡正負樣本的比例,作者每個正樣本就随機比對兩個負樣本。同時,作者将資料集按7:2:1劃分,70%的訓練集,20%的驗證集(用來調整超參數),10%的測試集用來做對照實驗。Baseline為FM(使用LibFM工具包實作),high-order FM(使用HOFM工具包實作),Wide&Deep和DCN,為了驗證AFM的效果,作者提出了三個問題:

RQ1:dropout和l2正則化對結果真的有影響嗎?效果如何?

RQ2:attention network能不能學習到不同特征組合的權重呢?(就是看AN有沒有用)

RQ3:與SOTA相比,AFM有沒有提升

超參數設計

優化方法使用adagrad,batch-sized大小設為:Frappe(128),MovieLens(4096),embedding-size設為256,attention-factor設為256(attention-factor就是上文提到的attention-network裡的隐藏層的次元),為了防止過拟合,作者還使用了early-stop的政策,同時用FM的embedding結果初始化wide&deep和DCN

超參數結果
推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

以LibFM的結果作為基線,可以看到加Dropout後确實對結果有所提升,而且實驗結果表示,不同的資料集有不同的最優dropout-ratio,而且作者提到文中實作的FM(後面簡稱為vFM)比LibFM性能好的原因有兩點:(1) vFM使用dropout作為正則化的方法而不是l2 (2) vFM使用Adagrad而非SGD(自适應學習率)

推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

為了驗證L2正則化對AFM結果的影響,作者固定dropout為最優值,将 λ \lambda λ從0調整到16,最後的結果如上圖所示,看到AFM的RMSE的值仍然在下降,說明L2正則化是有效果的

接下來要尋找最優的attention-factor的值,如下圖所示:

推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

可以看到無論t取多少,這個模型的結果都很穩定,一個極端情況就是取1,那麼attention-network的參數W就變成了一個向量,這樣整個attention-network就變成了線性變換,但是我們可以看到AFM的結果依然要比FM好很多,這也說明了attention-component的重要性,同時作者記錄每20個epoch的loss,如下圖所示:

推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

可以看到,AFM收斂的比FM快,而且效果更好

Micro-level analysis

還是為了驗證attention network的重要性,作者将attention-score引入到FM當中,并且固定所有的 α i j = 1 R x \alpha_{ij}= \frac{1}{R_x} αij​=Rx​1​,首先使用FM訓練embedding然後固定這個embedding隻訓練attention-network部分,然後選擇三個正樣本(target為1),抽出三個特征組合的attention-score進行分析,如下圖所示:

推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

以第一個樣本為例,可以看到FM所有的attention-score都是一樣的,但是顯然item-tag的特征組合對結果是更有效果的,而AFM對于不同的特征組合有不同的權重,并且對結果有促進作用的權重更大,反之權重小一些,進而證明了attention-network的有效性,而且加入attention-score之後,模型的可解釋性就更強。

對照實驗的結果
推薦算法模型 ----- Attentional Factorization Machines 論文閱讀筆記

不同的算法對照結果,确實是AFM的效果更好一些

繼續閱讀