您當前的位置:首頁 > 書法

Learning to Build User-tag Profile in Recommendation System閱讀

作者:由 黃志超 發表于 書法時間:2021-07-03

背景

這篇論文是微信團隊在CIKM2020發表的,主要講述的是如何為“微信看一看”場景的使用者計算出使用者embedding,為下游的作業(如召回,粗排,精排,資料分析,運營)提供資料支援。

Learning to Build User-tag Profile in Recommendation System閱讀

模型

這篇論文的主要模型就如上圖這樣,分成了feature input,attention,cross,fc,predict 五層。

Feature input

feature input層就是我一般的特徵進來的地方,這塊主要是一層低階的特徵,如user維度(靜態特徵有年齡,性別,動態的有點選新聞(新聞的屬性)),大部分特徵都是離散的cate或標籤特徵。

這些離散的特徵進入模型後,第一步當然就是embedding_lookup,轉化為對應embedding向量。例如上圖的tags,那麼tags裡第i個標籤的就會轉化為

Learning to Build User-tag Profile in Recommendation System閱讀

E是embedding向量的維度。

Attention Fusion Layer

attention layer是兩頭,意思就是會有2個attention的行為,併產出2個embedding(PS:具體可以看《attention is all you need》這篇論文)。

但這塊做了些許改動,本文首先會對field裡的特徵做attention merge後輸出f1,在對field之間的向量再做一次attention merge。注意到無論是field內還是field間,對於同一個attention,用的是一個共享的query向量(這個query本身是需要學習的引數,不是搜尋的query)。

Learning to Build User-tag Profile in Recommendation System閱讀

Learning to Build User-tag Profile in Recommendation System閱讀

k是指第k個feature field(field你可以理解為特徵,只不過是多值特徵)。所以不同field之間的差異僅有

W_{k,1}^T

權重矩陣;

作者說這樣做的原因是,用同一個衡量尺度去計算不同的特徵的重要性。

最後,會將2個attention(分別對應q1, q2)的輸出向量concat在一起,作為下一層的輸入。

Cross Layer

1、一般的linear層,將上一層的輸出直接經過linear變換,傳到下一層;

2、對向量的每一維做交叉,attention的輸出為

x

,那麼

x_i,x_j

就是x的第i,j維的數值,

v_i,v_j

是對應維的隱式向量(需要學習訓練,類似FM演算法),最後得到c向量,

Learning to Build User-tag Profile in Recommendation System閱讀

3、再將linear的輸出和cross的輸出concat在一起;

Fully Connect

然後全連線層算出user embedding

Predict Layer

這點也是作者的一個創新點,如果按一般是直接news的embedding和user embedding內積作為預測結果,計算loss,但是因為1個news裡面包含了眾多的標籤,怎樣才能判斷使用者對不同標籤的偏好呢,

Learning to Build User-tag Profile in Recommendation System閱讀

t_i

就是attention裡用到的標籤向量(和user embedding同一空間),N是一條新聞裡的不同標籤數。就是先計算新聞的tag和user的相似度,然後在累加作為User對新聞的偏好,再以click作為label計算logloss訓練模型。

標簽: Attention  embedding  field  向量  user