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

公衆號

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

前言

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

論文作者認爲,並非所有的特徵交互都包含有效信息,因此那些"less userful features"應該賦予更低的權重.很明顯,當無效信息和有效信息權重相同時,相當於引入了噪聲.而FM缺乏區分不同特徵重要性的能力,可能會獲得次優解.

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

模型介紹

在這裏插入圖片描述

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

首先看前面一部分.FM中特徵的交互是’inner product’,兩個向量做內積,結果是一個值.而AFM中特徵交互是’element-wise product’,兩個向量對應元素相乘,結果是向量:
在這裏插入圖片描述

然後給向量一個映射矩陣,對向量元素求和,得到交叉特徵部分的預測結果,就是論文中的’sum pooling’:
在這裏插入圖片描述

這就是AFM和FM在特徵交互不同的地方,p可以看成是sum pooling,也可以認爲是embedding特徵的權重矩陣,加上後文交互特徵的attention權重,可以說比FM多了兩層權重,一層區分交互特徵重要性,一層區分embedding各維特徵的重要性.從而大大提高了模型的擬合能力.attention係數可以這樣加上去:
在這裏插入圖片描述

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

所以,最終模型的預測值可以表示爲:
在這裏插入圖片描述

代碼實戰

代碼通俗易懂,數據也很小,我們着重看一下attention部分怎麼實現的,代碼格式容易亂,直接截個圖吧:
在這裏插入圖片描述

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

在這裏插入圖片描述

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

原代碼:源代碼出處
我修改了一些細節,完整代碼和數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章