前言
本篇文章是2020年8月發表於《計算機工程》的一篇期刊論文,文章名稱《基於注意力機制與改進TF-IDF的推薦演算法》。
文章針對傳統推薦系統主要依賴使用者對物品的評分資料而無法學習到使用者和專案的深層次特徵的問題,提出基於注意力機制與改進TF-IDF的推薦演算法(AMITI)。將雙層注意力機制引入並行的神經網路推薦模型,提高了模型對重要特徵的挖掘能力。
摘要
針對傳統推薦系統主要依賴使用者對物品的評分資料而無法學習到使用者和專案的深層次特徵的問題,提出基於注意力機制與改進TF-IDF的推薦演算法(AMITI)。透過將雙層注意力機制引入並行的神經網路推薦模型,提高模型對重要特徵的挖掘能力。基於使用者評分及專案類別改進TF-IDF,依據專案類別權重將推薦結果分類以構建不同型別的專案組並完成推薦。實驗結果表明,AMITI演算法能提高對文字中重要內容的關注度以及專案分配的注意力權重,有效提升推薦精度並在實現專案組推薦後改善推薦效果。
概述
本文提出一種基於注意力機制與改進TF-IDF的推薦演算法AMITI。將注意力機制引入卷積神經網路(Convolutional Neural Network,CNN)中,在卷積層前加入注意力網路,對經過預處理的專案文字資訊進行重新賦權。將多層全連線神經網路學習到的使用者特徵向量和專案特徵向量輸入到第2層注意力機制中,使多層感知機(Multilayer Perceptron,MLP)對注意力分數進行引數化。在完成推薦任務後,透過將使用者評分和專案類別與TF-IDF結合,分析不同專案型別在推薦結果中的權重,獲取使用者對不同專案型別的偏好程度,並對推薦結果進行分類。
AMITI推薦演算法
在NCF推薦模型的基礎上將使用者和專案的屬性資訊作為輸入資料u:{u1,u2,...un},例如,使用者ID、年齡、性別等;專案屬性資訊v:{v1,v2,...vn},例如,專案ID、型別、標題等。AMITI模型架構如圖所示。
引入雙層注意力機制,一層用於與CNN結合構建子網路,使CNN學習專案文字中的重點內容;另一層以使用者及專案特徵向量作為輸入資料,利用注意力機制為使用者歷史互動專案分配個性化權重,得到不同專案對當前預測偏好所起的作用。將推薦結果分組,以專案組的形式向使用者展示推薦結果,增強推薦內容的有序性。
學習使用者和專案潛在特徵
為改善推薦系統中資料稀疏的問題,利用使用者和專案的屬性資訊進行評分預測。將使用者及專案屬性資訊經過資料預處理後輸入到嵌入層對屬性資訊進行編碼,嵌入層將輸入的稀疏向量對映為稠密的低維嵌入向量,得到使用者和專案屬性的嵌入表示pu和qv。在訓練剛開始的時候,嵌入是簡單的隨機選擇,隨著訓練的進行,每個嵌入的向量都會得到更新,以幫助神經網路執行其任務。將使用者和專案的嵌入向量pu、qv輸入到並行的多層全連線神經網路中,分別學習使用者和專案非文字屬性的潛在特徵向量。
其中:f(×)為tanh啟用函式;wn和bn分別為需要學習的權值矩陣和偏置。
引入注意力機制的卷積神經網路
對於專案屬性的文字資訊如專案標題,為了增強網路對文字中重點內容的學習能力,將注意力機制與CNN結合構成提取文字特徵的子網路。文字卷積神經網路構成如圖所示,由注意力層、卷積層、池化層、全連線層組成。
注意力層透過對每個專案文字的詞向量矩陣賦予注意力權重以得到更新後的詞向量矩陣。將專案文字內容透過嵌入層得到詞向量矩陣E∈Rnxd,其中d為詞向量的維度,即把每一個詞對映為d維向量xj∈Rd,n為單詞的個數;F∈Rsxd表示目標使用者ui瀏覽過的所有專案所攜帶文字資訊的詞向量矩陣,xi為第i個詞的詞向量表示xi∈Rd。計算目標使用者詞向量矩陣F中每個詞彙的詞向量表示xi與專案所有文字詞向量矩陣E中每個詞彙xj的注意力分數。a(xi,xj)=vTaR(wa[xi+xj])其中:vTa,wa為訓練引數。
預測評分生成
傳統的神經網路推薦模型在預測層通常執行使用者特徵的隱表示p̂u和專案特徵的隱表示q̂j之間的互動以得到最終的預測評分。由於該模型缺乏對推薦任務的定製最佳化,對使用者所有歷史專案的平等處理會限制其表示能力,例如,在使用者進行電影點播時,被推薦電影可能只與使用者播放歷史中的部分電影相關,而傳統的電影推薦方式通常會把使用者播放歷史中所有的電影作為上下文進行推薦,這與使用者的實際偏好不符。傳統的神經網路推薦模型忽視了使用者歷史專案中不同專案對預測下一個專案所起的作用不同,因此準確率較低。
在AMITI模型的預測層,利用神經注意力網路區分歷史專案的重要性來克服傳統神經網路推薦模型的侷限性。學習到使用者特徵的隱表示p̂u和專案特徵的隱表示q̂j作為注意力層的輸入,學習目標使用者對不同專案的關注度,不同關注度對預測下一專案所起的作用不同。
TF-IDF的改進
TF-IDF常被用於文字分類和資訊檢索,通常僅考慮文件數量和關鍵詞在文件中出現的頻率,而當字詞擁有評分資料時無法充分利用評分資料更準確地計算TF-IDF值。例如,利用TF-IDF計算使用者ui觀看電影中喜劇型別gj的TF-IDF值時,僅將喜劇型別gj在使用者ui瀏覽歷史電影集和整個資料集中出現的頻率代入計算,並未利用使用者對喜劇類電影的評分資料。當喜劇型別gj在使用者瀏覽歷史中出現頻率較低,但使用者對這類電影的評分卻較高時,採用傳統的TF-IDF方法無法準確地獲取使用者對喜劇型別gj的偏好程度。將評分資料引入到TF-IDF方法中,在評估字詞重要程度的同時,避免丟失評分較高的字詞。
AMITI演算法描述
利用深度神經網路結合注意力機制能有效提升推薦演算法對使用者和專案潛在特徵的提取能力,並緩解資料的稀疏性問題。依據專案型別分組將推薦結果推薦給使用者。AMITI 演算法整體實現步驟如下:
輸入 使用者屬性資訊u:{u1,u2,...un},un表示使用者的第n個屬性;專案屬性資訊v:{v1,v2,...vn},vn表示專案的第n個屬性
輸出 生成K個專案組,每個專案組含D個同類專案
步驟1 對使用者屬性和專案屬性進行資料預處理,將其轉換成數字型別。
步驟2 使用者屬性和專案ID及型別屬性輸入嵌入層,得到低維稠密的嵌入向量pu和qv。將pu和qv分別輸入到並行的多層全連線層中進行特徵學習,得到使用者特徵p̂u和專案非文字屬性向量q̂v。
步驟3 對專案名稱做卷積處理,透過注意力機制對電影名稱的詞向量矩陣重新賦權,得到更新後的詞向量矩陣Msxdatt。
步驟4 將詞向量矩陣Msxdatt輸入卷積神經網路中提取專案名稱特徵並生成特徵qtext,再利用tf.concat()函式合併專案各屬性特徵得到最終的專案特徵q̂j。
步驟5 使用注意力機制為每個專案分配個性化權重âij,得到更新後的專案特徵q̂i。
步驟6 將使用者隱含特徵p̂u與專案隱含特徵q̂i作內積計算得到預測評分ŷui。
步驟7 輸入指定使用者產生Top-N個推薦結果,利用改進TF-IDF分析使用者對不同專案型別的偏好程度值Sujgi。
步驟8 根據偏好程度Sujgi值將專案型別降序排列,取前K個型別作為待推薦專案組的組名,K即為推薦專案組的數量。
步驟9 在每個專案組加入D部與組名對應的同類電影,並按每部電影的預測評分降序排列。最終進行由K個專案組構成,且每個專案組包含D部同型別電影的專案組進行推薦。
結尾
春節快到了,在這裡先小小地祝福一波朋友們,大家新的一年事事順意。
另外,願世間昌平,願海晏河清。
明兒個見嘍。
2024-01-30 10:32:58 星期二