郭 望 胡文心* 吳 雯 賀 樑 竇 亮,2
1(華東師范大學計算機科學與軟件工程學院 上海 200062)
基于評論的推薦,利用用戶評論文本作為評分的補充。評論文本解釋了用戶對物品打分高低的原因,用戶的評論集合反映了用戶不同方面的興趣,物品的評論集合反映了物品的性質(zhì)。
同時在兩個層面層次化地構(gòu)建用戶和物品的表示可以更加細粒度地挖掘用戶和物品特征,但是現(xiàn)有工作大多只單獨在“單詞”層面或“評論”層面之一過濾重要特征,例如D-ATT[1](“單詞”層面)和NARRE[2](“評論”層面)。此外,D-ATT在“單詞”層面建模中先過濾重要單詞再使用CNN編碼文本的方法容易在過濾中丟失一個單詞的上下文,先編碼每個單詞的上下文表示再過濾可以有效緩解這個問題。
用戶興趣與物品性質(zhì)是隨場景動態(tài)變化的。對于給定用戶其面對不同物品時表現(xiàn)出的興趣方面是不同的,對于給定物品其面對不同用戶時表現(xiàn)出的主要性質(zhì)也是與具體用戶相關(guān)的。例如一個喜歡籃球運動的用戶,面對一個球星代言的手機可能會打分較高,此時交互場景中“籃球”的特征被凸顯了,而與手機其他特性(屏幕大小、性能等)關(guān)系較小。然而現(xiàn)有工作大多在用戶和物品編碼為固定維度的靜態(tài)向量,兩者再進行交互,例如DeepCoNN[3],不能突出場景中的主要因素。因此,使用戶和物品的向量表示根據(jù)交互場景的上下文動態(tài)變化,可以更好捕捉兩者的交互關(guān)系。
本文提出了一種基于用戶評論的多層次評分預測模型SCRM。每個用戶和物品都表示為L個評論的集合,其中每個評論N個單詞。用戶和物品的表示通過兩個平行的網(wǎng)絡建模,兩者結(jié)構(gòu)相同。以用戶為例,在“單詞”層面,通過CNN編碼每個單詞的局部上下文并使用“門機制”提取用戶興趣特征,去除冗余信息,得到每個評論的表示。在“評論”層面,通過注意力機制計算單個用戶評論的交互場景上下文。具體地,計算單個用戶評論到所有物品評論的相關(guān)性權(quán)重,將所有物品評論加權(quán)求和作為單個用戶評論的上下文表示,與單個用戶評論的表示進行融合,構(gòu)成“交互場景感知”的用戶評論表示。對于每個用戶評論重復同樣的過程,并將它們聚合得到用戶的最終表示。最后,將用戶和物品的最終表示在交互層進行匹配,計算預測評分。
在推薦系統(tǒng)中,評論文本已經(jīng)廣泛地在許多工作中使用,例如HFT[21]、RMR[22]、EFM[23]、TriRank[24]、RBLT[25]和sCVR[26]。這些工作大多將用戶表示為他過去寫的所有評論的集合,同樣地將物品表示為用戶為它寫過的所有評論的集合。評論文本不僅緩解了冷啟動問題,也為建模用戶興趣和物品性質(zhì)提供了更豐富的語義信息。
較早的工作大多基于主題模型LDA[20],將從評論中學習到的主題分布作為用戶和物品的表示。例如HFT[21]將LDA和MF統(tǒng)一在同一個框架中,將評論文本主題分布的似然函數(shù)作為正則項與MF的目標函數(shù)相結(jié)合,擬合評分數(shù)據(jù)。
近來的工作明顯地轉(zhuǎn)向深度學習模型。神經(jīng)網(wǎng)絡在評論建模中具有明顯的優(yōu)勢,例如自動的特征學習和十分有競爭力的性能。最近的工作在網(wǎng)絡結(jié)構(gòu)上大多由 “編碼層”和“交互層”構(gòu)成,例如DeepCoNN[3]、D-ATT[1]和NARRE[2]。在編碼層,使用卷積神經(jīng)網(wǎng)絡(CNN)抽取文本中的特征,將用戶和物品分別編碼成兩個低維向量。在交互層,對兩個向量進行匹配,計算預測評分。
基于深度神經(jīng)網(wǎng)絡的模型,較早的是DeepCoNN。在編碼層,它同時將用戶和物品用兩個平行的網(wǎng)絡處理,通過CNN編碼為固定長度向量。在交互層,用戶和物品向量通過Factorization Machines(FM)進行匹配。
DeepCoNN的結(jié)構(gòu)相對簡單,近來提出的D-ATT在CNN編碼層之前,加入了注意力機制。其核心思想是,根據(jù)局部和全局上下文信息衡量每個單詞的重要性。它使用兩個平行的網(wǎng)絡分別過濾相對于局部和全局重要的單詞。
將評論集合中所有評論拼接,作為用戶(物品)的表示,存在比較大的噪聲。因為用戶的每個評論是在不同時期寫的,代表用戶不同方面的興趣。NARRE對每個評論單獨編碼其表示,并衡量每個評論的有用性,使用注意力機制為每個評論分配權(quán)重,最后將全部加權(quán)求和作為用戶(物品)的最終表示。
然而,這些模型都只單獨在“單詞”層面或“評論”層面之一過濾重要特征,缺少更加細粒度建模。此外,D-ATT由于先過濾重要單詞,再用CNN編碼單詞的上下文表示,導致單詞的上下文在編碼前已經(jīng)丟失了。而NARRE從評論有用性的角度計算評論的權(quán)重,卻沒有考慮具體的“用戶-物品”交互場景對評論表示的影響。事實上,每個評論中所體現(xiàn)的用戶興趣和物品性質(zhì)是與交互場景上下文相關(guān)的。
圖1顯示了SCRM整體的網(wǎng)絡結(jié)構(gòu)。我們對于用戶和物品使用同樣的網(wǎng)絡結(jié)構(gòu),因此下文只詳細介紹用戶網(wǎng)絡。
圖1 SCRM整體結(jié)構(gòu)圖
網(wǎng)絡接受一個評論集合,包含多個評論{r1,r2,…,rl},其中l(wèi)代表評論的最大數(shù)量。每個評論經(jīng)過“詞嵌入層”映射為詞向量序列,接著在“單詞層面”通過“帶門機制的卷積層”編碼為固定維度的向量。編碼后的評論表示在“評論層面”融合交互場景的上下文。最后將所有評論表示聚合為用戶(物品)的最終表示,在“交互層”使用FM進行匹配。
每個評論都是一個長度為T的單詞序列,每個單詞是用獨熱(one-hot)編碼表示的向量。每個單詞都通過嵌入矩陣Wd×|V|將獨熱編碼映射到一個d維稠密向量,其中V是詞匯表的大小。
近年來,卷積神經(jīng)網(wǎng)絡(CNN)在文本編碼方面得到了廣泛的應用[12],例如TextCNN[7]、DCNN[8]。如圖2所示,模型使用CNN來抽取單個評論的表示,包括一個卷積層和一個池化層。
圖2 單詞層面建模圖
2.2.1卷積層
在卷積層,輸入是一個長度為T的評論,包含一個單詞序列{x1,x2,…,xT}。將評論表示為一個矩陣X∈T×d,矩陣中的每一行為每個單詞對應的d維詞向量。我們使用卷積操作對句子中每個大小為h的窗口內(nèi)的單詞進行卷積,例如{x1:h,x2:h+1,…,xT-h+1:T}。每個窗口內(nèi)卷積得到的特征圖是窗口內(nèi)“中心詞”的上下文表示,例如窗口xi:h+i編碼的是單詞的上下文表示。
為了獲得每個單詞的上下文表示,使用一個大小為h的滑動窗口對整個評論文本進行卷積得到特征圖A:
A=f(W*X+b)
式中:*表示卷積運算,參數(shù)W∈K×h×d為卷積核權(quán)重,參數(shù)b∈K為偏置項,K是卷積核的數(shù)量。f(·)為激活函數(shù)。為了編碼單詞在局部的上下文,實現(xiàn)中把h設置為3,過大的窗口容易引入太多噪聲。
2.2.2門機制
帶門機制的卷積神經(jīng)網(wǎng)絡(gated CNN)[10]在語言建模[6]和機器翻譯[11]等領(lǐng)域取得了良好的性能。長短期記憶網(wǎng)絡(LSTM)[9]中使用門機制決定特征的記憶與遺忘,受其啟發(fā),這里為CNN加入門機制。
A∈K×(T-h+1)中每一列對應一個單詞的上下文表示。每個單詞的重要性不同,每個單詞上下文中不同特征的重要性也不同。因此,使用門機制給予A中特征不同權(quán)重來過濾相關(guān)信息,得到Ag:
Ag=A?G=
f(W*X+b)?σ(V*X+c)
式中:G=σ(V*X+c)∈K×(T-h+1)為門機制,控制A中特征的通過率。由于引入了非線性的門機制,實現(xiàn)中,激活函數(shù)f(·)使用恒等映射,即f(t)=t。參數(shù)W,V∈K×h×d為卷積核權(quán)重,參數(shù)b,c∈K為偏置項。σ為sigmoid函數(shù)。?為矩陣間的按元素乘法。
門機制G的作用體現(xiàn)在兩個層面的:一方面根據(jù)單詞的上下文過濾重要的單詞,另一方面利用按元素乘法,在每個單詞的上下文表示中過濾更相關(guān)的特征。相比只是給予不同單詞權(quán)重,門機制G進行了更細粒度的處理。
2.2.3池化層
在池化層,將卷積層輸出的單個評論表示Ag每行取最大值,得到向量a∈K。
為了方便起見,實驗中設置K=d。
評論層面的輸入是用戶評論向量集合{u1,u2,…,ul}和物品評論向量集合{p1,p2,…,pl},分別用Uo,Po∈l×d表示。Uo中的每行代表一個用戶評論的向量表示,Po中的每行代表一個物品評論的向量表示。
評論層面為每個評論表示計算場景上下文,然后將“原評論表示”和“場景上下文表示”融合為“評論的動態(tài)表示”,動態(tài)的含義是評論的表示根據(jù)當前場景上下文動態(tài)變化。SCRM在評論層面主要分為三個部分:場景上下文編碼層、評論動態(tài)表示編碼層和平均池化層。
2.3.1場景上下文編碼層
場景上下文編碼層根據(jù)用戶評論集合Uo和物品評論集合Po計算每一個單個評論的上下文表示,得到用戶評論的場景上下文集合Uc和物品評論的場景上下文集合Pc。
(1) 鍵值對記憶網(wǎng)絡:注意力機制廣泛的應用于許多任務,例如信息檢索[15]、推薦系統(tǒng)[1]、閱讀理解[13]和機器翻譯[14]?;谧⒁饬C制,SCRM使用“鍵值對記憶網(wǎng)絡”[27]為每個原評論表示計算場景上下文表示。
“鍵值對記憶網(wǎng)絡”的組成包括一個查詢向量q∈d和一個“鍵值對記憶M”,目的是根據(jù)查詢向量q從M中尋找相關(guān)的內(nèi)容。鍵值對記憶網(wǎng)絡的查詢過程如圖3所示。
圖3 鍵值對記憶網(wǎng)絡查詢圖
“鍵值對記憶M”中包含若干鍵值對(ki,vi),ki,vi∈d。將所有鍵值對表示為兩個矩陣K,V∈l×d,其中K、V中對應的同一行的兩個向量代表一個鍵值對(ki,vi),l表示鍵值對的數(shù)目。給定查詢向量q∈d,基于注意力機制可以從M中查詢所有與q相關(guān)的鍵ki并得到對應的vi作為查詢結(jié)果返回。使用“基于點積的注意力機制”可以更好地基于q與ki的內(nèi)容相似性進行查詢。
給定查詢向量q和鍵值對矩陣K×V,使用注意力機制Attentionvector(q,K,V)查詢:
s=softmax(Kq)
ans=Attentionvector(q,K,V)=Vs=
Vsoftmax(Kq)
式中:s∈l表示q對所有鍵K的相似性分布,這里利用softmax函數(shù)對相似性分布進行歸一化。
ans∈d表示查詢結(jié)果向量。Vs的含義是:如果q和ki相關(guān)度大,那么就返回相應的vi作為查詢結(jié)果。需要注意的是,q可能與多個ki相關(guān),基于注意力機制的查詢方式會將多個vi按相關(guān)度加權(quán)求和作為查詢結(jié)果。
鍵值對記憶網(wǎng)絡中,查詢可以批量進行。如果有一組查詢qi∈d,其中i=1,2,…,nq,nq為查詢的數(shù)量,可以將所有查詢表示為一個矩陣Q∈nq×d,利用對矩陣運算優(yōu)化良好的處理器進行加速。
給定查詢矩陣Q和鍵值對矩陣(K,V),使用注意力機制Attentionmatrix(Q,K,V)查詢:
S=softmax(QKT)
Ans=Attentionmatrix(Q,K,V)=SV=
softmax(QKT)V
式中:S∈nq×l中的第i行si∈l,表示查詢向量qi∈d對所有鍵K的相似性分布。這里利用softmax函數(shù)對S中的每一行進行行內(nèi)歸一化。Ans∈nq×d表示查詢結(jié)果向量,其中的每一行代表Q中對應行的查詢結(jié)果。
(2) 場景上下文編碼:交互場景由用戶和物品的關(guān)系定義,用戶多方面的興趣和物品多方面的性質(zhì)之間存在復雜的依賴關(guān)系,將這種相關(guān)性的語義通過注意力機制編碼可以表達“場景上下文”的語義。
以用戶為例,“用戶的上下文”中需要考慮當前面對的物品各方面的性質(zhì),而每個物品評論反映了某一方面的性質(zhì),因此根據(jù)整個物品評論集合計算用戶的上下文。此外,用戶興趣是多方面的,每個用戶評論體現(xiàn)了不同方面的用戶興趣,所以逐一為每個用戶評論計算上下文。類似地,“物品的上下文”也根據(jù)整個用戶評論集合計算。
SCRM使用“鍵值對記憶網(wǎng)絡”為每個評論編碼其“場景上下文表示”,以用戶的上下文來說明計算方法:對于單個用戶評論uo∈d,其上下文表示根據(jù)所有物品評論集合Po計算。在鍵值對記憶網(wǎng)絡中,令Attentionvector(q,K,V)中q=uo,K=Po,V=Po。那么uo的場景上下文uc∈d計算如下:
uc=Attentionvector(uo,Po,Po)=
Posoftmax(Pouo)
“鍵值對記憶網(wǎng)絡”為整個用戶評論集合Uo∈l×d逐一計算其中每個評論d的場景上下文表示d。其中i=1,2,…,l表示用戶評論集合中的第i個評論。
使用鍵值對記憶網(wǎng)絡中批量查詢方式,可以得到所有用戶評論的場景上下文表示,使用一個矩陣Uc∈l×d表示。令Attentionmatrix(Q,K,V)中Q=Uo,K=Po,V=Po,得到:
Uc=Attentionmatrix(Uo,Po,Po)=
softmax(UoPoT)Po
類似地,為整個物品評論集合Po∈l×d計算物品評論的場景上下文集合Pc∈l×d。令Attentionmatrix(Q,K,V)中Q=Po,K=Uo,V=Uo,得到:
Pc=Attentionmatrix(Po,Uo,Uo)=
softmax(PoUoT)Uo
在“場景上下文編碼層”,我們最終得到用戶評論的場景上下文集合Uc和物品評論的場景上下文集合Pc。
2.3.2評論動態(tài)表示編碼層
在評論動態(tài)表示編碼層,將每個評論的“原表示”和“場景上下文表示”進行融合,輸出評論的動態(tài)表示。
對于用戶,“評論的原表示”反映了用戶某一個方面的興趣,對于物品,“評論的原表示”也反映了物品某一個方面的性質(zhì)。但是這種用戶興趣或物品性質(zhì)是靜態(tài)的,即使是很強的信號也不一定與當前交互場景相關(guān),需要借助交互場景的上下文來確定用戶興趣或物品性質(zhì)中真實有效的信號。
(1) 合并層:在合并層,輸入用戶(或物品)評論集合的“原表示”矩陣和“場景上下文表示”矩陣,將它們逐評論拼接并輸出。
對于用戶,合并后的評論集合表示Uoc:
對于物品,合并后的評論集合表示Poc:
式中:Uo、Po分別為用戶和物品評論集合的“原表示”矩陣,Uoi、Poi為其中的一行。Pc、Uc分別為用戶和物品評論集合的“場景上下文表示”矩陣,Pci、Uci為其中的一行。經(jīng)過拼接后的Uoc∈l×2d和Poc∈l×2d每行的維度由擴展到了2d。
(2) 融合層:在融合層,將每個評論的“原表示”和“場景上下文表示”進行融合,得到每個評論的“動態(tài)表示”。
Udynamic=Uconv?Gconv=
(Woc*Uoc+boc)?σ(Voc*Uoc+coc)
式中:*表示卷積運算,參數(shù)Woc,Voc∈K×h×2d為卷積核權(quán)重,參數(shù)boc,coc∈K為偏置項,K是卷積核的數(shù)量,實現(xiàn)中設置K=2d。
Udynamic=Woc*Uoc+boc將每個評論拼接后的表示uoci投影到一個新的語義空間,融合了兩種表示。Gconv=σ(Voc*Uoc+coc)為門機制,給予評論表示中不同特征以不同權(quán)重。Udynamic=Uconv?Gconv將兩者按元素相乘,達到根據(jù)場景上下文動態(tài)生成評論表示的目的。 類似地,對于物品,也對拼接后的Poc物品評論表示集合進行卷積,并利用門機制動態(tài)生成評論表示Pdynamic。
2.3.3平均池化層
在平均池化層,輸入用戶評論的動態(tài)表示集合Udynamic∈l×2d和物品評論的動態(tài)表示集合Pdynamic∈l×2d,輸出用戶的最終表示upool和物品的最終表示ppool。
以用戶為例,對Udynamic中每列取平均值,得到向量upool∈d:
類似地,對于物品,根據(jù)Pdynamic得到向量ppool∈d。
平均池化可以反映用戶評論集合中的多個方面的特征和總體情況。而最大池化希望觀察到的是強特征,可以去除冗余的噪聲,在“單詞”層面使用最大池化,可以去除很多沒有信息量的單詞的影響,突出一個評論內(nèi)部所反映的強信號。但是在“評論”層面,每個評論反映的用戶興趣和物品性質(zhì)不同,最大池化會丟失較弱的信號。
第一部分rrating-based使用隱含因子模型(LFM)[4]來建模評分數(shù)據(jù)中反映的用戶物品關(guān)系。LFM將用戶和物品表示為從歷史評分數(shù)據(jù)中推斷出的向量:
第二部分rreview-based中,將從評論文本中學習得到的用戶表示upool和物品表示ppool拼接為z=[upool,ppool]∈2d并輸入到分解機(FM)中。FM接受一個特征向量z并建模特征之間的一階和二階關(guān)系:
式中:w0是全局偏置;wi用于捕捉用戶和物品之間的一階交互強度;viTvj用于捕捉用戶和物品之間的二階交互強度。
實驗部分給出了實驗設置和經(jīng)驗性的評估。我們設計實驗來回答以下幾個問題:
問題1: SCRM是否超過了最先進的方法,例如D-ATT和NARRE?相應的提高為多少?
問題2:本文在“單詞”層面的建模方法,是否緩解了D-ATT中上下文丟失的問題?
問題3:本文在“評論”層面的建模方法,相比NARRE中不考慮場景上下文的方法,是否帶來了性能的提升?
問題4:本文同時在“單詞”和“評論”層面抽取評論文本的表示,是否帶來了性能的提升?
在實驗中,使用了來自不同領(lǐng)域的四個公開數(shù)據(jù)集來評估SCRM,表1給出了相關(guān)的統(tǒng)計數(shù)據(jù)。四個數(shù)據(jù)集來自Amazon 5-core[17]的Digital Music、Toys and Games、Cell Phones and Accessories、Office Products。后續(xù)實驗中將它們簡稱為“Music”、“Toy”、“Phone”和“Office”。
表1 四個數(shù)據(jù)集的統(tǒng)計數(shù)據(jù)
將SCRM和一系列基線方法相比較。
2) DeepCoNN[3](2017)是一個基于評論的推薦模型。在編碼層它將用戶(物品)的評論集合中所有評論拼接,通過卷積神經(jīng)網(wǎng)絡(CNN)編碼其表示。在交互層它使用分解機(FM)建模用戶和物品的交互關(guān)系并計算預測評分。
3) D-ATT[1](2017)是一個近來提出的模型,在多個數(shù)據(jù)集上達到的最先進性能的模型之一。它的主要特點是,使用局部注意力和全局注意力在“單詞”層面過濾重要的單詞,通過卷積神經(jīng)網(wǎng)絡(CNN)編碼其表示,然后將局部表示和全局表示進行拼接作為最終表示。在交互層,它使用點積建模用戶和物品的交互關(guān)系并計算預測評分。
4) NARRE[2](2018)是一個近來提出的模型,在多個數(shù)據(jù)集上達到的最先進性能的模型之一。它在“評論”層面對每個評論單獨編碼其表示,并使用注意力機制為每個評論分配權(quán)重,最后將全部加權(quán)求和作為用戶(物品)的最終表示。在交互層,將隱含因子模型(LFM)中的用戶表示和物品表示擴展成“基于評分的表示”和“基于評論文本的表示”并計算預測評分。
我們在Tensorflow中實現(xiàn)了所有的模型并使用了Adam[18]進行優(yōu)化,初始學習率設定為0.002。將所有模型訓練至連續(xù)5輪驗證集性能都不再提升,使用“早?!?early stopping)選擇驗證集上表現(xiàn)最佳的模型參數(shù),并匯報最佳參數(shù)在測試集上的結(jié)果。實驗中發(fā)現(xiàn),MF需要35輪左右才能收斂,其他模型都在20輪以內(nèi)收斂。我們重復實驗20次,并匯報平均結(jié)果。
3.3.1評價指標
式中:N表示用戶對物品評分的總數(shù)。
3.3.2參數(shù)設置
對于矩陣分解模型(MF),將用戶(物品)向量維度設置為50。對于DeepCoNN和NARRE,將卷積核窗口大小設置為3。對于D-ATT,根據(jù)原文中的設定將“局部注意力模塊”中的卷積核窗口大小設置為3,“全局注意力模塊”中的卷積核窗口大小設置為{2,3,4}。所有模型的詞向量均維度均設置為50,并使用預訓練的Glove[19]詞向量初始化。對含有隱含因子模型(LFM)的交互層中bu、bi、qi、pu均使用了系數(shù)為0.2的L2正則化。對含有FM的交互層中使用了概率為0.5的dropout,并將FM中的權(quán)重因子維度設置為10。
3.3.3數(shù)據(jù)預處理
本文將單個評論文本的最大長度設置為30個單詞,評論集合中最多包含20個評論。在實驗中,我們發(fā)現(xiàn)這樣設置可以比較合理地反映不同模型的性能。對于DeepCoNN和D-ATT,將評論集合中所有評論拼接。
3.4.1模型總體表現(xiàn)
表2中匯報了實驗結(jié)果。對于“問題1”,我們發(fā)現(xiàn)SCRM在四個數(shù)據(jù)集上都是表現(xiàn)最好的。表3中匯報了SCRM相對于其他模型的提升,其中本文基于提升=(MSEhigh-MSElow)/MSEhigh×100%計算模型之間的相對提升?!疤嵘?”-“提升3”分別表示SCRM相對于DeepCoNN、D-ATT和NARRE的提升百分比,“提升4”表示SCRM相對于表現(xiàn)最好的模型的提升百分比。SCRM穩(wěn)定而顯著地超過了近來有競爭力的基于評論的推薦模型DeepCoNN、D-ATT和NARRE(統(tǒng)計顯著性p<0.01),其中提升最多達到13.0%(DeepCoNN)、4.6%(D-ATT)和5.6%(NARRE),相對其中表現(xiàn)最好的模型提升最多達到3.8%。提升平均為8.8%(DeepCoNN)、3.58%(D-ATT)和4.0%(NARRE),相對表現(xiàn)最好的模型提升平均達到3.3%。SCRM通過層次化的細粒度建模和動態(tài)適應交互場景的特征表示,全面地超過了現(xiàn)有方法。
表2 模型總體表現(xiàn)對比(統(tǒng)計顯著性p<0.01)
表3 SCRM性能提升百分比
此外我們發(fā)現(xiàn),D-ATT和NARRE的表現(xiàn)穩(wěn)定地超過DeepCoNN,這來源于它們對在“單詞”層面或“評論”層面對評論更細粒度的處理。D-ATT和NARRE的相對排名在不同數(shù)據(jù)集上的有所不同,我們認為不同領(lǐng)域?qū)τ凇皢卧~”層面和“評論”層面的關(guān)注程度不同。NARRE在Digital Music數(shù)據(jù)集上超過了D-ATT,因為在音樂領(lǐng)域用戶的興趣相對更加多樣性和主觀性的,因此在“評論”層面對每個評論獨立建模更有助于區(qū)分不同方面的興趣。D-ATT在其他三個數(shù)據(jù)集上表現(xiàn)更好,例如Toys and Games數(shù)據(jù)集上,我們觀察到大多是父母為孩子買玩具,相對于音樂電影等文化產(chǎn)品而言興趣相對集中,此時“單詞”層面的細粒度建模就會體現(xiàn)出更大的作用,可以更清晰地反映用戶的具體興趣。與兩個基線模型不同的是,SCRM在不同領(lǐng)域上都有良好的表現(xiàn),這來源于兼顧多層面的用戶興趣建模,使得兩個層面相輔相成、互相促進。例如在Digital Music數(shù)據(jù)集上SCRM相對D-ATT和 NARRE的提高分別為4.6%和3.3%,根據(jù)領(lǐng)域特點SCRM更多彌補了“評論”層面的缺失。相反地,在Toys and Games數(shù)據(jù)集上提高分別為3.8%和5.6%,SCRM更多彌補了“單詞”層面的缺失。
3.4.2“單詞”層建模:緩解了單詞上下文丟失
對于“問題2”,本文設計了實驗來比較D-ATT與SCRM在只有“單詞”層面建模的情況下性能。為了公平起見,我們對兩個模型做了兩點修改:首先,保證它們都只在“單詞層面”上建模,并且將評論集合中所有評論拼接作為輸入。其次,保證它們具有相同的交互層,避免交互層不同帶來的影響。具體地,本文將修改后的D-ATT命名為“D-ATT-2”,其中只保留了局部注意力模塊(SCRM也在“單詞”層面只考慮局部上下文),在交互層更換為FM。SCRM修改后命名為“SCRM-2”,只保留“單詞”層面的gated CNN,去除了“評論”層面的部分,并在交互層只使用FM。
表4匯報了在四個數(shù)據(jù)集上“D-ATT-2”和“SCRM-2”的結(jié)果,并將原始的D-ATT模型的結(jié)果作為參照?!疤嵘币恍斜硎尽癝CRM-2”相對“D-ATT-2”的性能提升。
表4 “單詞”層面表現(xiàn)對比
我們發(fā)現(xiàn),在四個數(shù)據(jù)集上,SCRM-2在“單詞”層面的表現(xiàn)都超過了D-ATT-2。我們認為這是D-ATT“單詞”層面存在單詞上下文丟失的問題引起的。D-ATT利用局部注意力機制給予每個單詞不同權(quán)重來選擇重要的單詞,然后再將過濾后的評論送入CNN中編碼每個單詞的上下文表示。例如,評論中的一句話“I like Memory Of Trees too.”,Memory Of Trees是一首歌曲的名字。在D-ATT中,局部注意力根據(jù)上下文“Memory Of Trees”會保留中心詞“Of”,因為這三個詞經(jīng)常作為詞組出現(xiàn),但是根據(jù)上下文“l(fā)ike Memory Of”丟棄中心詞“Memory”,根據(jù)上下文“Of Trees too”會丟棄中心詞“Trees”,因為它的上下文沒有特殊意義。過濾后的評論表示變?yōu)椤皒xx like xxx Of xxx xxx”的形式,此時CNN再希望編碼“Memory Of Trees”作為一個整體詞組的表示時,已經(jīng)丟失了“Of”的上下文“Memory”和“Trees”。
相反,SCRM先編碼滑動窗口內(nèi)每個單詞上下文表示,然后再過濾有意義的單詞上下文或詞組。例如,先在gated CNN得到所有三元組“I like Memory”、“l(fā)ike Memory Of”、” Memory Of Trees”、“Of Trees too”,再利用“門機制”過濾得到“I like Memory”和” Memory Of Trees”兩個有意義的三元組。最后將“I like Memory”中無意義的部分過濾,得到“xxx like xxx”和” Memory Of Trees”,它們表達了用戶對歌曲喜愛的情感。此外,gated CNN中的“門機制”與“注意力機制”不同,“注意力機制”為每個單詞上下文向量a∈d生成一個標量權(quán)重w∈1,而“門機制”生成權(quán)重向量w∈d,更加細粒度地過濾相關(guān)特征。
3.4.3“評論”層建模:場景上下文的作用
對于“問題3”,本文設計了實驗來評估在“評論”層面的引入場景上下文的方法相對于只是從評論有用性的角度計算評論的權(quán)重的NARRE是否帶來了性能的提升。為了公平起見,本文也對NARRE進行了修改:原本NARRE沒有在“單詞”層面過濾有效信息,因此為它加入word-level gated CNN保證兩個模型在“單詞”層面相同,然后比較它們在“評論”層面建模的差異。此外,兩個模型在交互層也略有不同,但是都是將LFM擴展成“基于評分”和“基于評論”兩部分,這里把交互層都統(tǒng)一改為FM。本文將修改后的NARRE命名為“NARRE-3”和“SCRM-3”。表5匯報了在四個數(shù)據(jù)集上的結(jié)果,并將原始的NARRE模型的結(jié)果作為參照?!疤嵘币恍斜硎尽癝CRM-3”相對“NARRE-3”的性能提升。
表5 “評論”層面表現(xiàn)對比
我們發(fā)現(xiàn),在四個數(shù)據(jù)集上SCRM-3在“評論”層面的表現(xiàn)都超過了NARRE-3。NARRE在“評論”層面使用注意力機制給予每個評論表示權(quán)重,并進行平均池化為一個固定維度的向量作為用戶(物品)表示。在交互層之前,用戶表示和物品表示都沒有聯(lián)系,反映的是靜態(tài)的用戶興趣和物品性質(zhì)。SCRM考慮到交互場景的不同對用戶和物品表示的影響,在平均池化之前編碼了每個評論的場景上下文,并與原表示融合,生成動態(tài)的用戶和物品表示,消除了場景無關(guān)的信息,突出了場景中重要的特征。
此外,我們嘗試保留NARRE的原始交互層,但是加入“單詞”層面模塊,表5中的“NARRE-4”一行匯報了相應的結(jié)果。將第一行和第二行的“NARRE”和“NARRE-4”比較,我們發(fā)現(xiàn)增加“單詞”層面的建模對Digital Music數(shù)據(jù)集提升不大,但是其他三個數(shù)據(jù)集均有明顯提升。這再次驗證了在問題1中的推斷:不同領(lǐng)域中用戶興趣的多樣性程度不同,音樂電影等領(lǐng)域中“評論”層面的建模顯得更加重要。
3.4.4層次化建模的作用
對于“問題4”,本文設計了實驗比較只有“單詞”層面建模和同時在“單詞”和“評論”兩個層面建模的不同,將這兩種的情況命名為“SCRM-4”和“SCRM-5”。表6匯報了在四個數(shù)據(jù)集上比較的結(jié)果。“提升”一欄表示“兩個層面”同時建模相對于只有“單詞”層面建模的提升。
表6 單層建模與層次化建模表現(xiàn)對比
我們發(fā)現(xiàn),同時在“單詞”和“評論”兩個層面建模,相比只在“單詞”層面有了提高。層次化的特征抽取一方面對“評論內(nèi)特征”進行了更細粒度的抽取,另一方面通過獨立建模每個評論,對不同評論所代表的多方面興趣的進行區(qū)分并融合場景信息,更好地突出了場景中顯著的某一方面的興趣。此外,在表5中我們發(fā)現(xiàn)“NARRE-4”超過了原始的NARRE,再次證明了多層次建模的必要性。
在推薦系統(tǒng)中,只根據(jù)“用戶-物品評分矩陣”推斷出用戶和物品的表示,在數(shù)據(jù)稀疏時會出現(xiàn)嚴重的冷啟動問題,從評論文本中挖掘用戶興趣和物品性質(zhì)作為補充成為主流的方法。
本文主要的貢獻是:(1)同時在“單詞”和“評論”層面更加細粒度地從評論文本中抽取特征。(2)在“單詞”層面,編碼每個單詞的局部上下文表示、過濾相關(guān)的上下文特征,并緩解了D-ATT[1]中單詞上下文丟失的情況,保留更豐富的語義。(3)在“評論”層面,編碼每個評論在當前交互場景中的上下文,動態(tài)生成用戶和物品表示,突出在當前交互場景中決定用戶打分的主要因素。(4)在多個數(shù)據(jù)集上進行了實驗。SCRM在每個數(shù)據(jù)集上都顯著地超過了基準MF、DeepCoNN、D-ATT和NARRE,并在“單詞”層面超過了D-ATT,在“評論”層面超過了NARRE。
但是SCRM仍然存在一些不足之處:第一,對于單個評論仍然將評論內(nèi)所有句子拼接,丟失了句子級別的語義。第二,對于每個單詞而言,只編碼了局部的上下文,沒有更進一步的復雜語義,例如“我喜歡在周末聽Memory Of Trees”中“周末”代表的時間場景和歌曲“Memory Of Trees”不能建立關(guān)系。
本研究對“層次化的評論建?!焙汀皥鼍跋嚓P(guān)的推薦”提供了一些新思路,我們將來的方向是,加入“句子”層面的細粒度興趣建模以抽取更豐富的語義關(guān)系。