标签 href 怎么拼接_【微信】用户-标签的兴趣建模
這一篇分享的是CIKM2020微信的learning to build user-tag profile,主要介紹了微信看一看("Top Stories")中,如何進行用戶-標簽的興趣建模,提升推薦效果。
1、背景
看一下微信看一看場景下的推薦流程:
它整個推薦系統主要有四部分:新聞畫像層(news profile layer),用戶畫像層(user profile layer),召回層(recall layer)和排序層(rank layer)。
在新聞畫像層,對新聞相關的特征如文章標簽,類別等進行提取。在用戶畫像層,對用戶的基本信息和行為信息進行建模。這里很重要的一個特征是用戶標簽。隨后是召回層,有多種召回方式;最后是排序層,可以使用更復雜的模型對召回層得到的結果進行精確的排序,最后展示給用戶。
因為用戶畫像和召回層、排序層的模型非常相關,所以有必要建立一個準確的用戶畫像。論文主要講了對用戶對文章標簽的偏好的建模,提出了User Tag Profiling Model。
構建user-tag profile的時候,對每個user,會收集他閱讀歷史中點擊過的新聞的標簽,并在模型訓練步驟中計算出用戶對這些標簽的偏好。在新聞推薦系統中,通常將點擊過的新聞作為正樣本,瀏覽過但是沒有點擊的新聞作為負樣本。但是直接將這個方法用于標簽,會使點擊過的新聞的標簽都是正樣本,這是有問題的。因為用戶點擊新聞也許只是對其中一個標簽感興趣。
基于這些考慮,文章提出了兩個問題:
RQ1: 如何自動選擇有用的特征?并且學習到同一個field和不同field之間的特征的相互作用?
RQ2:怎么從用戶點擊過的新聞中學習到用戶對不同標簽的偏好?
2、論文主要貢獻
(1)提出了user-tag profiling model,這個模型可以利用用戶信息的多個field,并且適用于其他用戶畫像任務;
(2)在模型中引入了 multi-head attention 機制,共享 query vector;
(3)提出了一個改進的基于FM的交叉特征層;
(4)設計了聯合損失來學習用戶標簽的偏好。
3、UTPM模型整體結構
它分為5層:feature input layer,attention fusion layer,cross feature layer,fully connect layer,predicting layer
3.1 Feature input layer
在特征輸入層,輸入特征,主要包含兩部分:人口統計信息:如年齡、性別等和用戶歷史閱讀信息,用戶閱讀過的新聞對應的標簽集合、類別集合等。
所有的特征都是離散特征,每個特征對應一個field。同時部分是多值離散特征,如點擊過的標簽集合和類別集合。離散特征通過embedding層轉換成相同長度的embedding向量。
3.2 Attention-fusion layer
接來下是Attention-fusion層,在這一層解決提出的問題一:如何自動選擇有用的特征?
在這一層有幾個field,包括性別,年齡,tag,category等。其中如tag,categogy有不止一個離散特征。首先對多值離散特征進行處理:通過multi-head attention(論文里使用two-head attention),為每個特征計算權重,然后加權求和,得到兩個向量輸出。
以tag為例:假設第k個field有H個tag feature,
文中使用的是two-head attention,以第一個attention為例:這H個tag向量,會通過加權相加,得到一個embedding向量f,更有用的tag有更高的權重。
權重通過softmax計算, 其中q是query向量:
這里所有的field共用query向量q1,但參數矩陣 W 是不同的field有不同的參數。這樣每個field 的輸出都得到了:對于單值離散特征,直接通過embedding層得到對應的embedding。對于多值離散特征,則通過這個計算得到embedding向量。
接下來,對這M個field,用同樣的方法進行加權相加得到最終的embedding向量(這里query vector還是共享的)。
論文認為這種共享query向量的方式魯棒性更好,效果也更好。然后類似的,再進行第二個attention的計算。這樣就得到了兩個embedding向量,把他們拼接(concatenate)起來給下一層。
3.3 cross feature layer
接下來是cross feature layer,進行特征交叉。在這一層進一步解決提出的問題一:怎么學習到不同field之間的特征相互作用?
上一層輸出的embedding向量記為x,做兩種處理:一是把輸入x作為線性部分直接傳到下一層;二是對x的不同維度進行特征交叉:x里面的每一維xi,都對應一個隱向量vi,對x的不同維度xi,xj兩兩組合,計算得到
表示特征相關性權重。這里,交叉得到的值直接都保留了,不像FM是相加起來的。
假設x的長度為E,這部分特征交叉得到的長度就為
3.4 Fully connect layer
將attention fusion layer的輸出x和cross feature layer的輸出c進行拼接,經過兩個全連接層得到最終的user embedding。
3.5 Predicting layer
在這一層解決提出的問題2:怎么從用戶點擊過的新聞中學習到用戶對不同標簽的偏好?一種做法是把所有用戶點擊過的新聞中的標簽集合作為正樣本,把曝光未點擊的標簽集合作為負樣本。但用戶點擊某個新聞,并不一定是對這篇新聞所有對應的標簽都感興趣,有可能僅僅對其中部分的標簽感興趣。
因此這篇論文將新聞是否點擊作為label,預測值的計算過程如下:
首先,對于某篇新聞,其對應的所有標簽,(假設N個)轉換成與用戶向量u相同長度的向量;
然后,用戶向量u與所有的標簽向量ti進行內積計算并求和,再通過sigmoid得到預測值。
最后,損失函數采用logloss
這樣,用戶對不同標簽i的偏好分別計算,可以使用戶更感興趣的tag有更高的內積值。
【模型部分就這么多啦】
接下來是論文的實驗部分。
好了,本文就到這啦。
感興趣的同學可以下載論文看看噢,歡迎跟我一起討論~
總結
以上是生活随笔為你收集整理的标签 href 怎么拼接_【微信】用户-标签的兴趣建模的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java面试:java简历包装医疗项目
- 下一篇: 485. Max Consecutive