苑威威,彭敦陸,吳少洪,陳 章,劉 叢
(上海理工大學 光電信息與計算機工程學院,上海 200093)
隨著云計算、大數據技術的飛速普及、互聯網中數據快速增加,信息過載問題日益嚴重,如何快速有效的從復雜的數據中獲取有價值的信息成為了當前大數據發展的關鍵難題.推薦系統[1](Recommendation System)通過推薦算法根據用戶的偏好和需求從海量的數據中挖掘出用戶感興趣的項目,在一定程度上緩解了信息過載的問題,提高了信息檢索的效率,得到了學術界和工業界的廣泛認同.
傳統的推薦算法中主要包括協同過濾、基于內容的推薦算法和混合推薦算法.協同過濾推薦算法是目前應用最廣泛的推薦算法,但其面臨著數據稀疏和冷啟動性的挑戰.此外,協同過濾算法往往采用淺層模型,因而不利于用戶和項目的深層次特征的學習.基于內容的推薦算法通常是利用人工設計的特征,通過用戶的歷史行為數據挖掘用戶和商品間的關系,限制了推薦系統的有效性和擴展性的同時也忽視了商品間的內在關系.
近年來,深度學習技術發展迅猛,在圖像處理、自然語言處理等領域取得了突破性的進展.與傳統的推薦系統相比,深度學習方法具有兩個明顯優勢.一是深度學習網絡是一種深層次的非線性網絡,能夠更好的提取數據的深層特征.二是深度學習模型能夠將多元異構數據映射到一個相同的隱藏空間中,獲得數據的統一表示.
數據挖掘中啤酒和尿不濕的案例表明用戶購買的商品間存在著相互關聯,并非是兩兩獨立的.因此,本文在建模挖掘用戶與商品間關系的同時,通過引入自注意力機制建模商品間的關聯關系.并考慮到緩解推薦系統中數據稀疏性、冷啟動問題,本文提出了AS-SADDL算法,結合自注意力機制與深度學習模型的優點,學習用戶潛在偏好表示.論文的主要貢獻如下:
1)在學習用戶潛在偏好表示模型中引入自注意力機制,建模用戶交互數據間的內在關系,獲得更加有效的用戶潛在偏好表示.
2)分別建模項目的評分數據和特征信息,共同組成項目的潛在表示,彌補了因評分矩陣數據稀疏性和新項目冷啟動性導致的項目間相似度可計算性差的問題.
過去幾十年內,學者們提出的各種推薦算法已經被應用到各類推薦系統中.LI等人[2]提出了基于改進用戶相似性度量和評分預測的協同過濾推薦算法,用于推薦影片和新聞.Schafer[3]提出的基于內容的推薦算法,通過從用戶交互過的項目特征中學習用戶的偏好并用特征表示,用以計算用戶和待預測項目間的匹配度.文獻[4]提出的混合推薦算法通過將協同過濾和基于內容的推薦算法結果融合后推薦.
近幾年來,隨著深度學習在提取數據深層特征表示上的優秀表現,越來越多的研究者們將深度學習方法與推薦系統任務相結合.Vishrawas等人[5]將深度學習應用于推薦問題,提出了一種基于受限玻爾茲曼機的推薦模型.Strub等人[6]采用兩個降噪自編碼器(SDAE),通過用戶和項目的評分數據分別學習用戶和項目的隱表示,來預測缺失評分進行推薦.最近,注意力機制被應用到機器翻譯、推薦系統等不同任務中.例如,James等人[7]將注意力機制應用到機器翻譯任務中,翻譯時,通過建模原句中每個詞的貢獻權重,動態生成中間語義向量,顯著的提高了翻譯的準確性.Gong等人[8]提出了一種基于注意力的卷積神經網絡對微博中的Hashtag進行推薦;Seo[9]等人通過采用雙重局部和全局注意力對用戶偏好和項目屬性進行建模;Vaswani等人[10]通過在翻譯任務中引入自注意力機制建模句子內詞間的內在關系,有效的提高了翻譯的準確性.
通過將深度神經網絡模型從復雜數據中提取深層特征的能力和自注意力機制提取數據間內在關系的能力相結合,本文提出一種新的推薦算法,以用戶與待推薦項目間的相似度,待推薦項目與用戶偏好項目間的平均相似度,共同度量用戶對待推薦項目的喜愛.論文的主要思想是考慮到用戶交互數據間的相互作用和用戶偏好的易變性,如在世界杯期間用戶大都會關心跟足球有關的商品.因此,本文采用深層神經網絡與注意力機制結合的方式建模用戶交互數據,學習用戶的潛在偏好特征表示和項目的潛在表示.同時考慮到項目間可計算性差的問題,利用主成分分析算法(PCA)對項目評分數據進行降維,并與從項目特征中提取的項目特征表示相結合,共同表示一個項目.在一定程度上提高了項目潛在表示的有效性和項目間相似度的可計算性.
本節主要介紹本文用到的相關術語和利用主成分分析法對項目評分數據降維.3.1節給出文章所需相關術語的解釋.3.2節詳細描述了PCA處理項目評分數據的方式.
下面給出所提算法中術語的相關解釋:
項目評分矩陣Rmn:該矩陣由系統中用戶對項目的評分組成,m,n分別表示系統中用戶項目個數.元素Rij表示用戶i對項目j的評分,Rij∈Rmn.
用戶交互項目:與用戶有交互行為的項目,如用戶對項目具有的點擊、下載、瀏覽、評分等行為.
項目特征信息:項目的ID、名稱、項目的屬性等信息,例如,在本文實驗數據中,項目特征信息包括電影的ID、電影名稱、電影上映年份、電影的類別.

表1 文章用到的符號以及其所表示Table 1 Explanation of Notations
文章用到的符號以及其所代表的含義見表1.
主成分分析(PCA)是一種統計分析方法,它將原始的眾多具有一定相關性的指標重新組合,得到新的無相關性的綜合指標[11].其中心思想是降維,用低緯度空間內的主成分來代替原始的高緯度空間中的數據.主成分是由原始數據組合得到的,任意兩個主成分間是獨立的,無關聯的,而且這些主成分能夠總體代表原始數據信息.

數據標準化階段,即對于本文實驗數據集,首先根據用戶對項目評分構建項目評分矩陣Rm×n,xij∈Rm×n,xij即用戶對項目的評分,若未評分則初始化評分為0.而后標準化評分矩陣Rm×n,使得其均值為0,方差為1.

(1)
其中,i,j=(1,2,…,n),m,n分別為原矩陣Rm×n的行和列的個數.
(2)
其中λi為由相關系數矩陣求得的特征值,貢獻率G超過閾值0.9的特征值被選取作為主成分.
主成分選取后,由所選取的特征對應的特征向量組成的矩陣C計算項目的評分數據表示,計算公式如下:
(3)

本節首先介紹結合自注意力機制的深度神經網絡模型AS-SADDL,詳細描述了該模型如何從用戶交互項目數據中學習用戶的潛在偏好表示和項目潛在表示.而后給出了推薦列表的生成方式.
現實生活中,用戶偏好并非一成不變的,當用戶關注某些商品時,不可避免的會忽視另外一些商品.因此,本文提出一種新的模型AS-SADDL,該模型在學習用戶潛在偏好表示時,使用自注意力建模用戶交互項目間的內在關系,從而使得學習到的用戶偏好表示更加有效,模型結構如圖1所示.

圖1 AS-SADDL模型Fig.1 AS-SADDL model
由圖可見,模型分為左右兩個部分,模型的左半部分用于學習用戶潛在偏好表示集合Su,分為項目特征數據嵌入、特征提取、自注意力建模嵌入數據內在關系、潛在表示學習四個階段.右半部分采用多層全鏈接神經網絡從項目特征數據中學習項目特征表示集合Sv.
每個項目都具有一系列的特征,如本文實驗數據中每部電影都具有電影名、上映日期、電影所屬類別等特征.但電影的特征數量是有一定區別的,如有些可能只是喜劇片,而另外一些電影則可能屬于多個類別.因此,在項目特征數據嵌入階段,串聯每個項目的特征,并將其編碼成一個固定長度的二進制值向量,作為模型的輸入.以單個用戶為例,用戶交互項目嵌入完成后,I=(I1,…,It),Ii表示用戶的第i個交互項目的特征表示向量.
在項目特征提取階段,通過一層全鏈接神經網絡,將用戶的交互項目的特征表示映射到維空間中提取項目特征.映射方式如下:
ld=fRelu(WI+b)
(4)
其中,Id表示d維空間內用戶i的交互項目特征表示.fRelu(·)在本文中均表示激活函數為Relu的單層全鏈接神經網絡.
自注意力建模,即項目特征表示由d維空間向z維空間映射時,引入自注意力機制,建模項目間的內在關系,注意力機制計算原理如下:
lz=fRelu(WId+b)
(5)
A=softmax(IzW(Id)T)
(6)
Iz=AIz
(7)
其中,W為權重矩陣,b為偏置,公式(5)表示將d維空間內的用戶交互項目特征映射到維空間.公式(6)即計算d維空間內的所有用戶交互項目對維空間內每個用戶交互項目的貢獻權重,模型訓練時通過損失函數自主調節權重矩陣W,經softmax函數歸一化后的矩陣A既為各項目間的注意力權重.公式(7)通過自注意力權重矩陣A對z維空間內的項目進行加權計算,加權計算后維空間內每個項目的特征表示是由其本身和所有與其有關聯的項目共同表示的,最終的輸出Iz既為經自注意力機制加權后的項目特征表示.下文統一用符號fself(.)來表示注意力機制的計算.
AS-SADDL模型為了更好的提取項目間的內在關系,采用三次獨立的自注意力機制對用戶交互項目建模,計算公式如下:
(8)

潛在表示學習階段即串聯三次注意力機制加權后的項目特征表示,作為三層全鏈接神經網絡的輸入,學習用戶的潛在表示,具體步驟如下:
(9)

模型的右半部分是利用多層全鏈接神經網絡提取項目特征表示,公式如下:
(10)


(11)

本節以top-k推薦為例來闡述本文所提模型推薦項目的過程.首先計算用戶偏好特征與未評分項目間的相似度Sim1,并選取前k項作為候選列表Ck1.Sim1計算公式如下:
(12)
然后,依次計算未評分項目與用戶偏好項目間的相似度Sim2,同樣選取前k項作為候選列表Ck2.項目與項目間的相似度Sim2計算公式如下:
(13)


(14)
(15)
其中,ε為可調節參數,通過依次計算用戶與候選列表中各項目的相關度Sim,選取前項推薦給該用戶.算法的流程如下:

2)通過AS-SADDL模型獲得用戶的潛在偏好特征表示集合Su,以及每個項目的潛在特征表示集合Sv.
3)通過PCA對項目的評分數據降維,獲得項目評分數據表示集合Sr.
5)運用公式(14)、(15)分別計算用戶與候選列表Ck內項目的相似度,并根據計算結果Sim選取前k項作為推薦項目,推薦給用戶.
實驗采用的數據集為MovieLens-100k1,為了測試本文所提模型的表現,在該數據集上進行了一系列的實驗.實驗由三部分組成,第一部分是比較ε取值對模型有效性的影響,第二部分是將本文所提AS-SADDL模型的推薦效果與現有模型如協同過濾模型、基于內容的推薦模型和SDAE模型相比較.第三部分是比較本文所提模型與現有模型的運算速度.
論文選取推薦系統公開數據集MovieLens-100k.該數據集中包含10萬個分值為1~5的評分,943個用戶和1682部電影.數據集中還給出電影名、上映時間以及電影所屬類別等特征信息.本文試驗選取數據集中的80%為訓練集,20%為測試集.采用準確率P(k)、召回率R(k)、F1值F1(k)、MAP(Mean Average Precision)、NDCG(Normalized Cumulative Discounted Gain)作為實驗的主要評價指標.

表2 未評分項目的4種情況Table 2 Four cases of unrated items
給定推薦列表長度,系統根據用戶與未評分項目間Sim的值,選取前k項推薦給用戶.于是,對于一個未曾被用戶評分的項目,最終可能的結果有4種,即系統推薦給用戶且用戶喜歡,系統推薦給用戶但是用戶不喜歡,用戶喜歡但是系統未推薦,用戶不喜歡且系統未推薦.表2總結了這四種可能的情況,其中Ntp,Nfp,Nfn,Ntn分別表示四種情況的數目.
則給定推薦列表長度,系統中用戶個數M后本文所采用評價指標定義如下
(16)
(17)
(18)
所有實驗均在內存為16GB,具有Tesla M60 GPU和8核CPU的服務器上完成.實驗所用模型權重矩陣W均按照標準正態分布隨機初始化,偏置均初始化為0,模型超參取值如下:正則化系數φ均為0.01,隨機梯度下降的學習率lr設置為0.004,增噪率sttddev設置為0.3,項目特征初步嵌入長度為1943.
為了驗證本文提出的基于自注意力機制的推薦算法的推薦效果,實驗將本文所提AS-SADDL模型與現有的協同過濾推薦模型(CF),基于項目內容的推薦模型(Item-based)和基于棧式去噪自編碼器(SDAE)的推薦模型進行對比,綜合性評估本文所提模型的有效性.
實驗1.比較取值對實驗結果影響
上述計算用戶與項目相關度時,超參的取值影響著模型的整體性能.當時ε=0,模型僅考慮用戶與項目間的相關性,當ε=1時僅考慮項目間的相似性.實驗結果如圖2所示,ε值在0.6附近時,算法的準確率、召回率、F1值達到最優.因此,在后續實驗中,ε的取值均設置為0.6.


圖2 ε取值對比Fig.2 Comparisonofε圖3 計算效率對比Fig.3 Comparisonofcomputationalefficiency
實驗2.本文所提模型與其它模型的計算效果對比
本組實驗通過改變推薦列表k的長度分別采用準確率、召回率、F1值、MAP、NDCG比較本文所提模型與其他模型的優劣.
準確率值的大小在一定程度上反應了推薦算法的有效性,實驗結果如圖4所示.觀察實驗結果可以看出,四種模型隨著推薦列表長度的增加具有相同的變化趨勢.當推薦列表長度大于200時,隨著推薦列表長度的增加,推薦的準確率呈現降低的趨勢.這是由于推薦列表中用戶喜歡的項目個數Ntp達到了相應的閾值造成的.四種推薦模型中基于內容和協同過濾的推薦模型的準確率變化幅度相似,基于SDAE的推薦模型的準確率相比上兩種模型有了很大的提高,但本文所提模型的準確率遠高于其他三種算法.
AS-SADDL算法與其他三種模型的召回率的比較實驗如圖5所示.四種推薦模型隨著k值的增加變化類似,recall值均先增大,后趨于穩定.這是由于當推薦結果小于閾值時,Nfn值偏大導致的.實驗結果表明AS-SADDL模型與其他三種模型相比較,具有較高的召回率,推薦結果更加準確.
F1值作為綜合度量準確率和召回率的指標,本實驗主要比較四種模型F1值的大小,實驗結果如圖6所示.隨著k值的增大,四種模型的F1均先增大,當推薦列表中用戶喜歡的項目個數Ntp達到一定閾值又呈降低趨勢.且本文所提AS-SADDL模型在各個k值上均具有明顯優勢.

圖4 算法準確率比較Fig.4 Comparison of precision

圖5 算法召回率比較Fig.5 Comparison of recall

圖6 算法F1值比較Fig.6 Comparison of F1 value
表3是各種模型在推薦性能上的對比,從實驗結果可見,AS-SADDL模型與其他模型相比具有更好的推薦性能.在MAP、NDCG@10、NDCG@20上,AS-SADDL模型都顯示了很好的結果.這表明相比于其他模型,AS-SADDL模型最終給出的推薦列表中用戶偏愛的項目排名靠前,更加有利于提高用戶的體驗.實驗結果同時也說明了注意力機制的引入使得模型能獲得更加有效的用戶潛在表示,提高了模型的推薦性能.

表3 推薦性能對比表Table 3 Recommended performance comparison table
實驗3.比較計算效率
實驗通過選取不同的值來比較本文所提AS-SADDL模型與其他三種模型的計算效率.實驗結果如圖3所示,從圖中可以看出,對于不同值,本文所提模型的計算效率優于 Item-based和SDAE模型.CF模型的計算效率比本文所提模型略高,這可能是因為AS-SADDL模型為提高項目間的可計算性,同時考慮項目評分數據和特征數據導致的.
實驗結果表明,本文所提模型具有較高的有效性.在同一個數據集中,在不同的推薦列表長度值上,與其他現有推薦方法相比較,本文所提模型具有較高的命中率,推薦列表中用戶偏愛項目排名靠前,推薦的結果相對更加準確.
推薦系統能夠解決信息過載,可以幫助用戶快速高效的從海量信息中找到他們需要的項目.本文所提模型分別對項目評分數據信息和項目自身特征信息進行建模,學習項目潛在表示,提高了項目間的可計算性.另外,在建模用戶交互數據時采用一種基于自注意力機制的深度神經網絡模型(AS-SADDL).模型在提取項目數據潛在表示的同時,考慮項目間的相互關系,有效地提高了學習到的潛在表示的有效性.實驗表明,所提模型具有較高的準確率、召回率、F1值,推薦效果更加準確完善.下一步工作將考慮在模型中引入知識圖譜,完善項目及用戶數據信息,進一步提高推薦效果.