天天看點

基于深度學習的推薦(三):基于attention的AFM模型

公衆号

關注公衆号:推薦算法工程師,輸入"進群",加入交流群,和小夥伴們一起讨論機器學習,深度學習,推薦算法.

基于深度學習的推薦(三):基于attention的AFM模型

前言

從這周開始,我們關注基于attention機制的推薦模型,首先看下較早提出的AFM(Attentional Factorization Machines)模型.論文連結:AFM

論文作者認為,并非所有的特征互動都包含有效資訊,是以那些"less userful features"應該賦予更低的權重.很明顯,當無效資訊和有效資訊權重相同時,相當于引入了噪聲.而FM缺乏區分不同特征重要性的能力,可能會獲得次優解.

怎麼賦予權重呢?神經網絡中最常見的就是映射,加個權重矩陣(wx+b),但這種線性的權重,有時不能滿足需要.論文中使用了一層映射+sum pooling+sotfmax建構出了非線性權重系數,作者稱之為"Attention-based Pooling".

模型介紹

基于深度學習的推薦(三):基于attention的AFM模型

從整體上看,AFM就是FM+Attention.,前面一部分embeding和pair-wise和FM模型的是類似的,然後後面加了個attention機制,就是AFM模型.

首先看前面一部分.FM中特征的互動是’inner product’,兩個向量做内積,結果是一個值.而AFM中特征互動是’element-wise product’,兩個向量對應元素相乘,結果是向量:

基于深度學習的推薦(三):基于attention的AFM模型

然後給向量一個映射矩陣,對向量元素求和,得到交叉特征部分的預測結果,就是論文中的’sum pooling’:

基于深度學習的推薦(三):基于attention的AFM模型

這就是AFM和FM在特征互動不同的地方,p可以看成是sum pooling,也可以認為是embedding特征的權重矩陣,加上後文互動特征的attention權重,可以說比FM多了兩層權重,一層區分互動特征重要性,一層區分embedding各維特征的重要性.進而大大提高了模型的拟合能力.attention系數可以這樣加上去:

基于深度學習的推薦(三):基于attention的AFM模型

aij可以直接通過最小化損失函數求得,但是當xi,xj沒有共同出現時,是求不出對應的aij的.為了獲得更加通用的模型,作者将attention score–aij進行參數化(有沒有似曾相識,想想FM),并使用如下公式來定義:

基于深度學習的推薦(三):基于attention的AFM模型

是以,最終模型的預測值可以表示為:

基于深度學習的推薦(三):基于attention的AFM模型

代碼實戰

代碼通俗易懂,資料也很小,我們着重看一下attention部分怎麼實作的,代碼格式容易亂,直接截個圖吧:

基于深度學習的推薦(三):基于attention的AFM模型

實際就是根據公式一步步計算的,清晰易懂,變量名稱和論文都是保持一緻的.最後的輸出結果就是線性拟合和特征交叉這部分之和:

基于深度學習的推薦(三):基于attention的AFM模型

這份代碼簡單易懂,從前到後邏輯很清晰,可以拿來練習tensorflow.

原代碼:源代碼出處

我修改了一些細節,完整代碼和資料

繼續閱讀