【論文閱讀】:Embedding-based News Recommendation for Millions of Users
非常實用性的一個推薦新聞的模型
摘要:
新聞推薦非常重要,但是傳統的基於使用者id的協同過濾和低秩分解推薦演算法不完全適用於新聞推薦,因為新聞類文章過期的太快了
基於單詞的方法效能不錯,但是有處理同義詞和定義使用者需求的問題
因此本文提出一種基於嵌入式的演算法,基於一種去噪自編碼器的變體的方法來表示文章;用RNN以瀏覽歷史為輸入序列表示使用者;用內積計算來匹配使用者和文章
1 introduction
新聞推薦的三個關鍵點:
- 理解文章內容
- 理解使用者喜好
- 基於兩者選出每個使用者的文章列表
符合這三點的baseline模型是將文章表示成單詞的word的集合,使用者的表示是該使用者瀏覽過的文章包含的word的集合,用候選文章和瀏覽歷史比較共同出現的word來判斷點選的概率,這個模型簡單,容易學習;但是缺點是不能很好的判斷近義詞,也不能很好的更充分的利用使用者的瀏覽歷史
rnn擅長處理輸入序列長度變化的情況,但是隻用這個模型,不能符合要求的響應速度
所以本文提出的模型分為三步,端到端,分散式:
- - 基於去噪自編碼器的分散式表示方法表示出文章
- - 以瀏覽歷史為RNN的輸入 生成使用者表示
- - 用內積的方式匹配出使用者和文章
該方法的核心就是用內積計算來衡量使用者-文章的匹配度,非常快速。現在這種方法已經應用在雅虎日本的新聞推薦了
2、our service and process flow
本文針對的是雅虎日本app中使用者定製模組的部分
使用者登入時為使用者選擇匹配列表的過程如下:
- -登入時識別出更具瀏覽歷史提前計算出的使用者特徵
- - 匹配:根據使用者特徵計算出所有可用的文章
- - 排序:根據一些特徵優先順序重新排序
- - 去重
- - 插入廣告(如果需要的話)
這些過程非常的快
排序時除了考慮相關度,還會考慮文章的頁碼數以及新鮮程度等
用cos距離來計算文字的相似度,貪心的跳過重複的文章。如果一篇文章和優先順序更高的文章的相似度超過一定值,就捨棄
3、artical representations
得到文章的表示方式
為了讓輸入的兩篇文章x1,x2相近時得到的h1,h2內積之和大,對原本的去噪自編碼器進行了修改,輸入變為(x0,x1,x2)三元輸入組,x0 x1是同類(相似)的文章,x2是不同的,在loss函式中新增懲罰來達到訓練效果
得到的h就是後面要用來計算的
4、 user representation
通過使用者的瀏覽歷史來計算使用者特徵,包括的簡單的word-based baseline模型,以及普通rnn形式、lstm形式和gru形式
其中a表示文章集合A中的一篇文章(用一種形式表示出來的),u表示一位使用者,某個使用者瀏覽的一系列文章就構成了使用者u的瀏覽歷史,使用者通過推薦李彪點開文章才構成session,用s表示,下標p表示該文章在推薦列表中的位置
關鍵的目標是:
找到表示使用者和文章相關性的函式R和通過瀏覽歷史構建使用者狀態的函式F,滿足上圖的性質,其中P+表示推薦列表中使用者點選過的文章,P-則是沒有點選的
考慮到響應時間的限制,R必須是可以快速計算的,由於文章多而且時效端,也沒法提前計算好;但是對於F卻有比較充足的時間可以計算
因此,R就用內積計算來進行,
只需要優化表示使用者狀態的函式F:
由於實際中點選的概率跟文章在session中的位置有關係,所以加了一個bias
word-based模型
BoW詞袋 建立一個大的詞表V
相關性就是交集的單詞有多少,有就+1
問題是非常稀疏,也不能處理同義詞;由於瀏覽記錄被認為是一個單詞的集合,所以瀏覽的先後順序和頻率就丟失了
decaying model
使用第三部分所得的h來表示文章
用加權和來表示整個的瀏覽歷史,這樣根據係數可以調整瀏覽歷史的權重
RNN model
簡單RNN
畢竟decaying model是線性的,很多資訊拿不到;而且ut是和上一個的狀態ut-1有關係的,因此使用rnn模型
這裡的啟用函式用tanh,用隨機梯度下降來優化
LSTM
GRU
5、 offline experiments
雅虎日本主頁的資料,每個使用者隨機選擇了超過兩週的資料
結果:
6 deployment
向上部署以GRU的模型作為proposd bucket,以Bow模型為control bucket作對比(1%)
提前計算使用者特徵ut,當用戶訪問該服務時,用內積計算出一段時間內新出的新聞和使用者的相關度
去重後按照從高到低相關性排序
線上的度量包括:sessions(使用者每天使用推薦服務的平均時間) duration(看推薦列表以及點進去後的時間) clicks(在推薦列表中點進去的次數) CTR(點選數除以推薦列表中的展示出的文章數)
將使用者分為重度、中度和輕度使用者
結果很好
部署大規模基於深度學習的模型時會遇到一些挑戰:
學習時間長;更新困難
因此是用兩個模型輪流來,以便進行更新
7 related work
8 conclusion