郭 望 胡文心* 吳 雯 賀 樑 竇 亮,2
1(華東師范大學(xué)計(jì)算機(jī)科學(xué)與軟件工程學(xué)院 上海 200062)
基于評(píng)論的推薦,利用用戶評(píng)論文本作為評(píng)分的補(bǔ)充。評(píng)論文本解釋了用戶對(duì)物品打分高低的原因,用戶的評(píng)論集合反映了用戶不同方面的興趣,物品的評(píng)論集合反映了物品的性質(zhì)。
同時(shí)在兩個(gè)層面層次化地構(gòu)建用戶和物品的表示可以更加細(xì)粒度地挖掘用戶和物品特征,但是現(xiàn)有工作大多只單獨(dú)在“單詞”層面或“評(píng)論”層面之一過濾重要特征,例如D-ATT[1](“單詞”層面)和NARRE[2](“評(píng)論”層面)。此外,D-ATT在“單詞”層面建模中先過濾重要單詞再使用CNN編碼文本的方法容易在過濾中丟失一個(gè)單詞的上下文,先編碼每個(gè)單詞的上下文表示再過濾可以有效緩解這個(gè)問題。
用戶興趣與物品性質(zhì)是隨場景動(dòng)態(tài)變化的。對(duì)于給定用戶其面對(duì)不同物品時(shí)表現(xiàn)出的興趣方面是不同的,對(duì)于給定物品其面對(duì)不同用戶時(shí)表現(xiàn)出的主要性質(zhì)也是與具體用戶相關(guān)的。例如一個(gè)喜歡籃球運(yùn)動(dòng)的用戶,面對(duì)一個(gè)球星代言的手機(jī)可能會(huì)打分較高,此時(shí)交互場景中“籃球”的特征被凸顯了,而與手機(jī)其他特性(屏幕大小、性能等)關(guān)系較小。然而現(xiàn)有工作大多在用戶和物品編碼為固定維度的靜態(tài)向量,兩者再進(jìn)行交互,例如DeepCoNN[3],不能突出場景中的主要因素。因此,使用戶和物品的向量表示根據(jù)交互場景的上下文動(dòng)態(tài)變化,可以更好捕捉兩者的交互關(guān)系。
本文提出了一種基于用戶評(píng)論的多層次評(píng)分預(yù)測模型SCRM。每個(gè)用戶和物品都表示為L個(gè)評(píng)論的集合,其中每個(gè)評(píng)論N個(gè)單詞。用戶和物品的表示通過兩個(gè)平行的網(wǎng)絡(luò)建模,兩者結(jié)構(gòu)相同。以用戶為例,在“單詞”層面,通過CNN編碼每個(gè)單詞的局部上下文并使用“門機(jī)制”提取用戶興趣特征,去除冗余信息,得到每個(gè)評(píng)論的表示。在“評(píng)論”層面,通過注意力機(jī)制計(jì)算單個(gè)用戶評(píng)論的交互場景上下文。具體地,計(jì)算單個(gè)用戶評(píng)論到所有物品評(píng)論的相關(guān)性權(quán)重,將所有物品評(píng)論加權(quán)求和作為單個(gè)用戶評(píng)論的上下文表示,與單個(gè)用戶評(píng)論的表示進(jìn)行融合,構(gòu)成“交互場景感知”的用戶評(píng)論表示。對(duì)于每個(gè)用戶評(píng)論重復(fù)同樣的過程,并將它們聚合得到用戶的最終表示。最后,將用戶和物品的最終表示在交互層進(jìn)行匹配,計(jì)算預(yù)測評(píng)分。
在推薦系統(tǒng)中,評(píng)論文本已經(jīng)廣泛地在許多工作中使用,例如HFT[21]、RMR[22]、EFM[23]、TriRank[24]、RBLT[25]和sCVR[26]。這些工作大多將用戶表示為他過去寫的所有評(píng)論的集合,同樣地將物品表示為用戶為它寫過的所有評(píng)論的集合。評(píng)論文本不僅緩解了冷啟動(dòng)問題,也為建模用戶興趣和物品性質(zhì)提供了更豐富的語義信息。
較早的工作大多基于主題模型LDA[20],將從評(píng)論中學(xué)習(xí)到的主題分布作為用戶和物品的表示。例如HFT[21]將LDA和MF統(tǒng)一在同一個(gè)框架中,將評(píng)論文本主題分布的似然函數(shù)作為正則項(xiàng)與MF的目標(biāo)函數(shù)相結(jié)合,擬合評(píng)分?jǐn)?shù)據(jù)。
近來的工作明顯地轉(zhuǎn)向深度學(xué)習(xí)模型。神經(jīng)網(wǎng)絡(luò)在評(píng)論建模中具有明顯的優(yōu)勢,例如自動(dòng)的特征學(xué)習(xí)和十分有競爭力的性能。最近的工作在網(wǎng)絡(luò)結(jié)構(gòu)上大多由 “編碼層”和“交互層”構(gòu)成,例如DeepCoNN[3]、D-ATT[1]和NARRE[2]。在編碼層,使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)抽取文本中的特征,將用戶和物品分別編碼成兩個(gè)低維向量。在交互層,對(duì)兩個(gè)向量進(jìn)行匹配,計(jì)算預(yù)測評(píng)分。
基于深度神經(jīng)網(wǎng)絡(luò)的模型,較早的是DeepCoNN。在編碼層,它同時(shí)將用戶和物品用兩個(gè)平行的網(wǎng)絡(luò)處理,通過CNN編碼為固定長度向量。在交互層,用戶和物品向量通過Factorization Machines(FM)進(jìn)行匹配。
DeepCoNN的結(jié)構(gòu)相對(duì)簡單,近來提出的D-ATT在CNN編碼層之前,加入了注意力機(jī)制。其核心思想是,根據(jù)局部和全局上下文信息衡量每個(gè)單詞的重要性。它使用兩個(gè)平行的網(wǎng)絡(luò)分別過濾相對(duì)于局部和全局重要的單詞。
將評(píng)論集合中所有評(píng)論拼接,作為用戶(物品)的表示,存在比較大的噪聲。因?yàn)橛脩舻拿總€(gè)評(píng)論是在不同時(shí)期寫的,代表用戶不同方面的興趣。NARRE對(duì)每個(gè)評(píng)論單獨(dú)編碼其表示,并衡量每個(gè)評(píng)論的有用性,使用注意力機(jī)制為每個(gè)評(píng)論分配權(quán)重,最后將全部加權(quán)求和作為用戶(物品)的最終表示。
然而,這些模型都只單獨(dú)在“單詞”層面或“評(píng)論”層面之一過濾重要特征,缺少更加細(xì)粒度建模。此外,D-ATT由于先過濾重要單詞,再用CNN編碼單詞的上下文表示,導(dǎo)致單詞的上下文在編碼前已經(jīng)丟失了。而NARRE從評(píng)論有用性的角度計(jì)算評(píng)論的權(quán)重,卻沒有考慮具體的“用戶-物品”交互場景對(duì)評(píng)論表示的影響。事實(shí)上,每個(gè)評(píng)論中所體現(xiàn)的用戶興趣和物品性質(zhì)是與交互場景上下文相關(guān)的。
圖1顯示了SCRM整體的網(wǎng)絡(luò)結(jié)構(gòu)。我們對(duì)于用戶和物品使用同樣的網(wǎng)絡(luò)結(jié)構(gòu),因此下文只詳細(xì)介紹用戶網(wǎng)絡(luò)。

圖1 SCRM整體結(jié)構(gòu)圖
網(wǎng)絡(luò)接受一個(gè)評(píng)論集合,包含多個(gè)評(píng)論{r1,r2,…,rl},其中l(wèi)代表評(píng)論的最大數(shù)量。每個(gè)評(píng)論經(jīng)過“詞嵌入層”映射為詞向量序列,接著在“單詞層面”通過“帶門機(jī)制的卷積層”編碼為固定維度的向量。編碼后的評(píng)論表示在“評(píng)論層面”融合交互場景的上下文。最后將所有評(píng)論表示聚合為用戶(物品)的最終表示,在“交互層”使用FM進(jìn)行匹配。
每個(gè)評(píng)論都是一個(gè)長度為T的單詞序列,每個(gè)單詞是用獨(dú)熱(one-hot)編碼表示的向量。每個(gè)單詞都通過嵌入矩陣Wd×|V|將獨(dú)熱編碼映射到一個(gè)d維稠密向量,其中V是詞匯表的大小。
近年來,卷積神經(jīng)網(wǎng)絡(luò)(CNN)在文本編碼方面得到了廣泛的應(yīng)用[12],例如TextCNN[7]、DCNN[8]。如圖2所示,模型使用CNN來抽取單個(gè)評(píng)論的表示,包括一個(gè)卷積層和一個(gè)池化層。

圖2 單詞層面建模圖
2.2.1卷積層
在卷積層,輸入是一個(gè)長度為T的評(píng)論,包含一個(gè)單詞序列{x1,x2,…,xT}。將評(píng)論表示為一個(gè)矩陣X∈T×d,矩陣中的每一行為每個(gè)單詞對(duì)應(yīng)的d維詞向量。我們使用卷積操作對(duì)句子中每個(gè)大小為h的窗口內(nèi)的單詞進(jìn)行卷積,例如{x1:h,x2:h+1,…,xT-h+1:T}。每個(gè)窗口內(nèi)卷積得到的特征圖是窗口內(nèi)“中心詞”的上下文表示,例如窗口xi:h+i編碼的是單詞的上下文表示。
為了獲得每個(gè)單詞的上下文表示,使用一個(gè)大小為h的滑動(dòng)窗口對(duì)整個(gè)評(píng)論文本進(jìn)行卷積得到特征圖A:
A=f(W*X+b)
式中:*表示卷積運(yùn)算,參數(shù)W∈K×h×d為卷積核權(quán)重,參數(shù)b∈K為偏置項(xiàng),K是卷積核的數(shù)量。f(·)為激活函數(shù)。為了編碼單詞在局部的上下文,實(shí)現(xiàn)中把h設(shè)置為3,過大的窗口容易引入太多噪聲。
2.2.2門機(jī)制
帶門機(jī)制的卷積神經(jīng)網(wǎng)絡(luò)(gated CNN)[10]在語言建模[6]和機(jī)器翻譯[11]等領(lǐng)域取得了良好的性能。長短期記憶網(wǎng)絡(luò)(LSTM)[9]中使用門機(jī)制決定特征的記憶與遺忘,受其啟發(fā),這里為CNN加入門機(jī)制。
A∈K×(T-h+1)中每一列對(duì)應(yīng)一個(gè)單詞的上下文表示。每個(gè)單詞的重要性不同,每個(gè)單詞上下文中不同特征的重要性也不同。因此,使用門機(jī)制給予A中特征不同權(quán)重來過濾相關(guān)信息,得到Ag:
Ag=A?G=
f(W*X+b)?σ(V*X+c)
式中:G=σ(V*X+c)∈K×(T-h+1)為門機(jī)制,控制A中特征的通過率。由于引入了非線性的門機(jī)制,實(shí)現(xiàn)中,激活函數(shù)f(·)使用恒等映射,即f(t)=t。參數(shù)W,V∈K×h×d為卷積核權(quán)重,參數(shù)b,c∈K為偏置項(xiàng)。σ為sigmoid函數(shù)。?為矩陣間的按元素乘法。
門機(jī)制G的作用體現(xiàn)在兩個(gè)層面的:一方面根據(jù)單詞的上下文過濾重要的單詞,另一方面利用按元素乘法,在每個(gè)單詞的上下文表示中過濾更相關(guān)的特征。相比只是給予不同單詞權(quán)重,門機(jī)制G進(jìn)行了更細(xì)粒度的處理。
2.2.3池化層
在池化層,將卷積層輸出的單個(gè)評(píng)論表示Ag每行取最大值,得到向量a∈K。

為了方便起見,實(shí)驗(yàn)中設(shè)置K=d。
評(píng)論層面的輸入是用戶評(píng)論向量集合{u1,u2,…,ul}和物品評(píng)論向量集合{p1,p2,…,pl},分別用Uo,Po∈l×d表示。Uo中的每行代表一個(gè)用戶評(píng)論的向量表示,Po中的每行代表一個(gè)物品評(píng)論的向量表示。
評(píng)論層面為每個(gè)評(píng)論表示計(jì)算場景上下文,然后將“原評(píng)論表示”和“場景上下文表示”融合為“評(píng)論的動(dòng)態(tài)表示”,動(dòng)態(tài)的含義是評(píng)論的表示根據(jù)當(dāng)前場景上下文動(dòng)態(tài)變化。SCRM在評(píng)論層面主要分為三個(gè)部分:場景上下文編碼層、評(píng)論動(dòng)態(tài)表示編碼層和平均池化層。
2.3.1場景上下文編碼層
場景上下文編碼層根據(jù)用戶評(píng)論集合Uo和物品評(píng)論集合Po計(jì)算每一個(gè)單個(gè)評(píng)論的上下文表示,得到用戶評(píng)論的場景上下文集合Uc和物品評(píng)論的場景上下文集合Pc。
(1) 鍵值對(duì)記憶網(wǎng)絡(luò):注意力機(jī)制廣泛的應(yīng)用于許多任務(wù),例如信息檢索[15]、推薦系統(tǒng)[1]、閱讀理解[13]和機(jī)器翻譯[14]。基于注意力機(jī)制,SCRM使用“鍵值對(duì)記憶網(wǎng)絡(luò)”[27]為每個(gè)原評(píng)論表示計(jì)算場景上下文表示。
“鍵值對(duì)記憶網(wǎng)絡(luò)”的組成包括一個(gè)查詢向量q∈d和一個(gè)“鍵值對(duì)記憶M”,目的是根據(jù)查詢向量q從M中尋找相關(guān)的內(nèi)容。鍵值對(duì)記憶網(wǎng)絡(luò)的查詢過程如圖3所示。


圖3 鍵值對(duì)記憶網(wǎng)絡(luò)查詢圖
“鍵值對(duì)記憶M”中包含若干鍵值對(duì)(ki,vi),ki,vi∈d。將所有鍵值對(duì)表示為兩個(gè)矩陣K,V∈l×d,其中K、V中對(duì)應(yīng)的同一行的兩個(gè)向量代表一個(gè)鍵值對(duì)(ki,vi),l表示鍵值對(duì)的數(shù)目。給定查詢向量q∈d,基于注意力機(jī)制可以從M中查詢所有與q相關(guān)的鍵ki并得到對(duì)應(yīng)的vi作為查詢結(jié)果返回。使用“基于點(diǎn)積的注意力機(jī)制”可以更好地基于q與ki的內(nèi)容相似性進(jìn)行查詢。
給定查詢向量q和鍵值對(duì)矩陣K×V,使用注意力機(jī)制Attentionvector(q,K,V)查詢:
s=softmax(Kq)
ans=Attentionvector(q,K,V)=Vs=
Vsoftmax(Kq)
式中:s∈l表示q對(duì)所有鍵K的相似性分布,這里利用softmax函數(shù)對(duì)相似性分布進(jìn)行歸一化。
ans∈d表示查詢結(jié)果向量。Vs的含義是:如果q和ki相關(guān)度大,那么就返回相應(yīng)的vi作為查詢結(jié)果。需要注意的是,q可能與多個(gè)ki相關(guān),基于注意力機(jī)制的查詢方式會(huì)將多個(gè)vi按相關(guān)度加權(quán)求和作為查詢結(jié)果。
鍵值對(duì)記憶網(wǎng)絡(luò)中,查詢可以批量進(jìn)行。如果有一組查詢qi∈d,其中i=1,2,…,nq,nq為查詢的數(shù)量,可以將所有查詢表示為一個(gè)矩陣Q∈nq×d,利用對(duì)矩陣運(yùn)算優(yōu)化良好的處理器進(jìn)行加速。
給定查詢矩陣Q和鍵值對(duì)矩陣(K,V),使用注意力機(jī)制Attentionmatrix(Q,K,V)查詢:
S=softmax(QKT)
Ans=Attentionmatrix(Q,K,V)=SV=
softmax(QKT)V
式中:S∈nq×l中的第i行si∈l,表示查詢向量qi∈d對(duì)所有鍵K的相似性分布。這里利用softmax函數(shù)對(duì)S中的每一行進(jìn)行行內(nèi)歸一化。Ans∈nq×d表示查詢結(jié)果向量,其中的每一行代表Q中對(duì)應(yīng)行的查詢結(jié)果。
(2) 場景上下文編碼:交互場景由用戶和物品的關(guān)系定義,用戶多方面的興趣和物品多方面的性質(zhì)之間存在復(fù)雜的依賴關(guān)系,將這種相關(guān)性的語義通過注意力機(jī)制編碼可以表達(dá)“場景上下文”的語義。
以用戶為例,“用戶的上下文”中需要考慮當(dāng)前面對(duì)的物品各方面的性質(zhì),而每個(gè)物品評(píng)論反映了某一方面的性質(zhì),因此根據(jù)整個(gè)物品評(píng)論集合計(jì)算用戶的上下文。此外,用戶興趣是多方面的,每個(gè)用戶評(píng)論體現(xiàn)了不同方面的用戶興趣,所以逐一為每個(gè)用戶評(píng)論計(jì)算上下文。類似地,“物品的上下文”也根據(jù)整個(gè)用戶評(píng)論集合計(jì)算。
SCRM使用“鍵值對(duì)記憶網(wǎng)絡(luò)”為每個(gè)評(píng)論編碼其“場景上下文表示”,以用戶的上下文來說明計(jì)算方法:對(duì)于單個(gè)用戶評(píng)論uo∈d,其上下文表示根據(jù)所有物品評(píng)論集合Po計(jì)算。在鍵值對(duì)記憶網(wǎng)絡(luò)中,令A(yù)ttentionvector(q,K,V)中q=uo,K=Po,V=Po。那么uo的場景上下文uc∈d計(jì)算如下:
uc=Attentionvector(uo,Po,Po)=
Posoftmax(Pouo)
“鍵值對(duì)記憶網(wǎng)絡(luò)”為整個(gè)用戶評(píng)論集合Uo∈l×d逐一計(jì)算其中每個(gè)評(píng)論d的場景上下文表示d。其中i=1,2,…,l表示用戶評(píng)論集合中的第i個(gè)評(píng)論。
使用鍵值對(duì)記憶網(wǎng)絡(luò)中批量查詢方式,可以得到所有用戶評(píng)論的場景上下文表示,使用一個(gè)矩陣Uc∈l×d表示。令A(yù)ttentionmatrix(Q,K,V)中Q=Uo,K=Po,V=Po,得到:
Uc=Attentionmatrix(Uo,Po,Po)=
softmax(UoPoT)Po
類似地,為整個(gè)物品評(píng)論集合Po∈l×d計(jì)算物品評(píng)論的場景上下文集合Pc∈l×d。令A(yù)ttentionmatrix(Q,K,V)中Q=Po,K=Uo,V=Uo,得到:
Pc=Attentionmatrix(Po,Uo,Uo)=
softmax(PoUoT)Uo
在“場景上下文編碼層”,我們最終得到用戶評(píng)論的場景上下文集合Uc和物品評(píng)論的場景上下文集合Pc。
2.3.2評(píng)論動(dòng)態(tài)表示編碼層
在評(píng)論動(dòng)態(tài)表示編碼層,將每個(gè)評(píng)論的“原表示”和“場景上下文表示”進(jìn)行融合,輸出評(píng)論的動(dòng)態(tài)表示。
對(duì)于用戶,“評(píng)論的原表示”反映了用戶某一個(gè)方面的興趣,對(duì)于物品,“評(píng)論的原表示”也反映了物品某一個(gè)方面的性質(zhì)。但是這種用戶興趣或物品性質(zhì)是靜態(tài)的,即使是很強(qiáng)的信號(hào)也不一定與當(dāng)前交互場景相關(guān),需要借助交互場景的上下文來確定用戶興趣或物品性質(zhì)中真實(shí)有效的信號(hào)。
(1) 合并層:在合并層,輸入用戶(或物品)評(píng)論集合的“原表示”矩陣和“場景上下文表示”矩陣,將它們逐評(píng)論拼接并輸出。
對(duì)于用戶,合并后的評(píng)論集合表示Uoc:

對(duì)于物品,合并后的評(píng)論集合表示Poc:

式中:Uo、Po分別為用戶和物品評(píng)論集合的“原表示”矩陣,Uoi、Poi為其中的一行。Pc、Uc分別為用戶和物品評(píng)論集合的“場景上下文表示”矩陣,Pci、Uci為其中的一行。經(jīng)過拼接后的Uoc∈l×2d和Poc∈l×2d每行的維度由擴(kuò)展到了2d。
(2) 融合層:在融合層,將每個(gè)評(píng)論的“原表示”和“場景上下文表示”進(jìn)行融合,得到每個(gè)評(píng)論的“動(dòng)態(tài)表示”。

Udynamic=Uconv?Gconv=
(Woc*Uoc+boc)?σ(Voc*Uoc+coc)
式中:*表示卷積運(yùn)算,參數(shù)Woc,Voc∈K×h×2d為卷積核權(quán)重,參數(shù)boc,coc∈K為偏置項(xiàng),K是卷積核的數(shù)量,實(shí)現(xiàn)中設(shè)置K=2d。
Udynamic=Woc*Uoc+boc將每個(gè)評(píng)論拼接后的表示uoci投影到一個(gè)新的語義空間,融合了兩種表示。Gconv=σ(Voc*Uoc+coc)為門機(jī)制,給予評(píng)論表示中不同特征以不同權(quán)重。Udynamic=Uconv?Gconv將兩者按元素相乘,達(dá)到根據(jù)場景上下文動(dòng)態(tài)生成評(píng)論表示的目的。 類似地,對(duì)于物品,也對(duì)拼接后的Poc物品評(píng)論表示集合進(jìn)行卷積,并利用門機(jī)制動(dòng)態(tài)生成評(píng)論表示Pdynamic。
2.3.3平均池化層
在平均池化層,輸入用戶評(píng)論的動(dòng)態(tài)表示集合Udynamic∈l×2d和物品評(píng)論的動(dòng)態(tài)表示集合Pdynamic∈l×2d,輸出用戶的最終表示upool和物品的最終表示ppool。
以用戶為例,對(duì)Udynamic中每列取平均值,得到向量upool∈d:
類似地,對(duì)于物品,根據(jù)Pdynamic得到向量ppool∈d。
平均池化可以反映用戶評(píng)論集合中的多個(gè)方面的特征和總體情況。而最大池化希望觀察到的是強(qiáng)特征,可以去除冗余的噪聲,在“單詞”層面使用最大池化,可以去除很多沒有信息量的單詞的影響,突出一個(gè)評(píng)論內(nèi)部所反映的強(qiáng)信號(hào)。但是在“評(píng)論”層面,每個(gè)評(píng)論反映的用戶興趣和物品性質(zhì)不同,最大池化會(huì)丟失較弱的信號(hào)。

第一部分rrating-based使用隱含因子模型(LFM)[4]來建模評(píng)分?jǐn)?shù)據(jù)中反映的用戶物品關(guān)系。LFM將用戶和物品表示為從歷史評(píng)分?jǐn)?shù)據(jù)中推斷出的向量:

第二部分rreview-based中,將從評(píng)論文本中學(xué)習(xí)得到的用戶表示upool和物品表示ppool拼接為z=[upool,ppool]∈2d并輸入到分解機(jī)(FM)中。FM接受一個(gè)特征向量z并建模特征之間的一階和二階關(guān)系:
式中:w0是全局偏置;wi用于捕捉用戶和物品之間的一階交互強(qiáng)度;viTvj用于捕捉用戶和物品之間的二階交互強(qiáng)度。
實(shí)驗(yàn)部分給出了實(shí)驗(yàn)設(shè)置和經(jīng)驗(yàn)性的評(píng)估。我們設(shè)計(jì)實(shí)驗(yàn)來回答以下幾個(gè)問題:
問題1: SCRM是否超過了最先進(jìn)的方法,例如D-ATT和NARRE?相應(yīng)的提高為多少?
問題2:本文在“單詞”層面的建模方法,是否緩解了D-ATT中上下文丟失的問題?
問題3:本文在“評(píng)論”層面的建模方法,相比NARRE中不考慮場景上下文的方法,是否帶來了性能的提升?
問題4:本文同時(shí)在“單詞”和“評(píng)論”層面抽取評(píng)論文本的表示,是否帶來了性能的提升?
在實(shí)驗(yàn)中,使用了來自不同領(lǐng)域的四個(gè)公開數(shù)據(jù)集來評(píng)估SCRM,表1給出了相關(guān)的統(tǒng)計(jì)數(shù)據(jù)。四個(gè)數(shù)據(jù)集來自Amazon 5-core[17]的Digital Music、Toys and Games、Cell Phones and Accessories、Office Products。后續(xù)實(shí)驗(yàn)中將它們簡稱為“Music”、“Toy”、“Phone”和“Office”。

表1 四個(gè)數(shù)據(jù)集的統(tǒng)計(jì)數(shù)據(jù)
將SCRM和一系列基線方法相比較。

2) DeepCoNN[3](2017)是一個(gè)基于評(píng)論的推薦模型。在編碼層它將用戶(物品)的評(píng)論集合中所有評(píng)論拼接,通過卷積神經(jīng)網(wǎng)絡(luò)(CNN)編碼其表示。在交互層它使用分解機(jī)(FM)建模用戶和物品的交互關(guān)系并計(jì)算預(yù)測評(píng)分。
3) D-ATT[1](2017)是一個(gè)近來提出的模型,在多個(gè)數(shù)據(jù)集上達(dá)到的最先進(jìn)性能的模型之一。它的主要特點(diǎn)是,使用局部注意力和全局注意力在“單詞”層面過濾重要的單詞,通過卷積神經(jīng)網(wǎng)絡(luò)(CNN)編碼其表示,然后將局部表示和全局表示進(jìn)行拼接作為最終表示。在交互層,它使用點(diǎn)積建模用戶和物品的交互關(guān)系并計(jì)算預(yù)測評(píng)分。
4) NARRE[2](2018)是一個(gè)近來提出的模型,在多個(gè)數(shù)據(jù)集上達(dá)到的最先進(jìn)性能的模型之一。它在“評(píng)論”層面對(duì)每個(gè)評(píng)論單獨(dú)編碼其表示,并使用注意力機(jī)制為每個(gè)評(píng)論分配權(quán)重,最后將全部加權(quán)求和作為用戶(物品)的最終表示。在交互層,將隱含因子模型(LFM)中的用戶表示和物品表示擴(kuò)展成“基于評(píng)分的表示”和“基于評(píng)論文本的表示”并計(jì)算預(yù)測評(píng)分。

我們在Tensorflow中實(shí)現(xiàn)了所有的模型并使用了Adam[18]進(jìn)行優(yōu)化,初始學(xué)習(xí)率設(shè)定為0.002。將所有模型訓(xùn)練至連續(xù)5輪驗(yàn)證集性能都不再提升,使用“早停”(early stopping)選擇驗(yàn)證集上表現(xiàn)最佳的模型參數(shù),并匯報(bào)最佳參數(shù)在測試集上的結(jié)果。實(shí)驗(yàn)中發(fā)現(xiàn),MF需要35輪左右才能收斂,其他模型都在20輪以內(nèi)收斂。我們重復(fù)實(shí)驗(yàn)20次,并匯報(bào)平均結(jié)果。
3.3.1評(píng)價(jià)指標(biāo)

式中:N表示用戶對(duì)物品評(píng)分的總數(shù)。
3.3.2參數(shù)設(shè)置
對(duì)于矩陣分解模型(MF),將用戶(物品)向量維度設(shè)置為50。對(duì)于DeepCoNN和NARRE,將卷積核窗口大小設(shè)置為3。對(duì)于D-ATT,根據(jù)原文中的設(shè)定將“局部注意力模塊”中的卷積核窗口大小設(shè)置為3,“全局注意力模塊”中的卷積核窗口大小設(shè)置為{2,3,4}。所有模型的詞向量均維度均設(shè)置為50,并使用預(yù)訓(xùn)練的Glove[19]詞向量初始化。對(duì)含有隱含因子模型(LFM)的交互層中bu、bi、qi、pu均使用了系數(shù)為0.2的L2正則化。對(duì)含有FM的交互層中使用了概率為0.5的dropout,并將FM中的權(quán)重因子維度設(shè)置為10。
3.3.3數(shù)據(jù)預(yù)處理
本文將單個(gè)評(píng)論文本的最大長度設(shè)置為30個(gè)單詞,評(píng)論集合中最多包含20個(gè)評(píng)論。在實(shí)驗(yàn)中,我們發(fā)現(xiàn)這樣設(shè)置可以比較合理地反映不同模型的性能。對(duì)于DeepCoNN和D-ATT,將評(píng)論集合中所有評(píng)論拼接。
3.4.1模型總體表現(xiàn)
表2中匯報(bào)了實(shí)驗(yàn)結(jié)果。對(duì)于“問題1”,我們發(fā)現(xiàn)SCRM在四個(gè)數(shù)據(jù)集上都是表現(xiàn)最好的。表3中匯報(bào)了SCRM相對(duì)于其他模型的提升,其中本文基于提升=(MSEhigh-MSElow)/MSEhigh×100%計(jì)算模型之間的相對(duì)提升。“提升1”-“提升3”分別表示SCRM相對(duì)于DeepCoNN、D-ATT和NARRE的提升百分比,“提升4”表示SCRM相對(duì)于表現(xiàn)最好的模型的提升百分比。SCRM穩(wěn)定而顯著地超過了近來有競爭力的基于評(píng)論的推薦模型DeepCoNN、D-ATT和NARRE(統(tǒng)計(jì)顯著性p<0.01),其中提升最多達(dá)到13.0%(DeepCoNN)、4.6%(D-ATT)和5.6%(NARRE),相對(duì)其中表現(xiàn)最好的模型提升最多達(dá)到3.8%。提升平均為8.8%(DeepCoNN)、3.58%(D-ATT)和4.0%(NARRE),相對(duì)表現(xiàn)最好的模型提升平均達(dá)到3.3%。SCRM通過層次化的細(xì)粒度建模和動(dòng)態(tài)適應(yīng)交互場景的特征表示,全面地超過了現(xiàn)有方法。

表2 模型總體表現(xiàn)對(duì)比(統(tǒng)計(jì)顯著性p<0.01)

表3 SCRM性能提升百分比
此外我們發(fā)現(xiàn),D-ATT和NARRE的表現(xiàn)穩(wěn)定地超過DeepCoNN,這來源于它們對(duì)在“單詞”層面或“評(píng)論”層面對(duì)評(píng)論更細(xì)粒度的處理。D-ATT和NARRE的相對(duì)排名在不同數(shù)據(jù)集上的有所不同,我們認(rèn)為不同領(lǐng)域?qū)τ凇皢卧~”層面和“評(píng)論”層面的關(guān)注程度不同。NARRE在Digital Music數(shù)據(jù)集上超過了D-ATT,因?yàn)樵谝魳奉I(lǐng)域用戶的興趣相對(duì)更加多樣性和主觀性的,因此在“評(píng)論”層面對(duì)每個(gè)評(píng)論獨(dú)立建模更有助于區(qū)分不同方面的興趣。D-ATT在其他三個(gè)數(shù)據(jù)集上表現(xiàn)更好,例如Toys and Games數(shù)據(jù)集上,我們觀察到大多是父母為孩子買玩具,相對(duì)于音樂電影等文化產(chǎn)品而言興趣相對(duì)集中,此時(shí)“單詞”層面的細(xì)粒度建模就會(huì)體現(xiàn)出更大的作用,可以更清晰地反映用戶的具體興趣。與兩個(gè)基線模型不同的是,SCRM在不同領(lǐng)域上都有良好的表現(xiàn),這來源于兼顧多層面的用戶興趣建模,使得兩個(gè)層面相輔相成、互相促進(jìn)。例如在Digital Music數(shù)據(jù)集上SCRM相對(duì)D-ATT和 NARRE的提高分別為4.6%和3.3%,根據(jù)領(lǐng)域特點(diǎn)SCRM更多彌補(bǔ)了“評(píng)論”層面的缺失。相反地,在Toys and Games數(shù)據(jù)集上提高分別為3.8%和5.6%,SCRM更多彌補(bǔ)了“單詞”層面的缺失。
3.4.2“單詞”層建模:緩解了單詞上下文丟失
對(duì)于“問題2”,本文設(shè)計(jì)了實(shí)驗(yàn)來比較D-ATT與SCRM在只有“單詞”層面建模的情況下性能。為了公平起見,我們對(duì)兩個(gè)模型做了兩點(diǎn)修改:首先,保證它們都只在“單詞層面”上建模,并且將評(píng)論集合中所有評(píng)論拼接作為輸入。其次,保證它們具有相同的交互層,避免交互層不同帶來的影響。具體地,本文將修改后的D-ATT命名為“D-ATT-2”,其中只保留了局部注意力模塊(SCRM也在“單詞”層面只考慮局部上下文),在交互層更換為FM。SCRM修改后命名為“SCRM-2”,只保留“單詞”層面的gated CNN,去除了“評(píng)論”層面的部分,并在交互層只使用FM。
表4匯報(bào)了在四個(gè)數(shù)據(jù)集上“D-ATT-2”和“SCRM-2”的結(jié)果,并將原始的D-ATT模型的結(jié)果作為參照。“提升”一行表示“SCRM-2”相對(duì)“D-ATT-2”的性能提升。

表4 “單詞”層面表現(xiàn)對(duì)比
我們發(fā)現(xiàn),在四個(gè)數(shù)據(jù)集上,SCRM-2在“單詞”層面的表現(xiàn)都超過了D-ATT-2。我們認(rèn)為這是D-ATT“單詞”層面存在單詞上下文丟失的問題引起的。D-ATT利用局部注意力機(jī)制給予每個(gè)單詞不同權(quán)重來選擇重要的單詞,然后再將過濾后的評(píng)論送入CNN中編碼每個(gè)單詞的上下文表示。例如,評(píng)論中的一句話“I like Memory Of Trees too.”,Memory Of Trees是一首歌曲的名字。在D-ATT中,局部注意力根據(jù)上下文“Memory Of Trees”會(huì)保留中心詞“Of”,因?yàn)檫@三個(gè)詞經(jīng)常作為詞組出現(xiàn),但是根據(jù)上下文“l(fā)ike Memory Of”丟棄中心詞“Memory”,根據(jù)上下文“Of Trees too”會(huì)丟棄中心詞“Trees”,因?yàn)樗纳舷挛臎]有特殊意義。過濾后的評(píng)論表示變?yōu)椤皒xx like xxx Of xxx xxx”的形式,此時(shí)CNN再希望編碼“Memory Of Trees”作為一個(gè)整體詞組的表示時(shí),已經(jīng)丟失了“Of”的上下文“Memory”和“Trees”。
相反,SCRM先編碼滑動(dòng)窗口內(nèi)每個(gè)單詞上下文表示,然后再過濾有意義的單詞上下文或詞組。例如,先在gated CNN得到所有三元組“I like Memory”、“l(fā)ike Memory Of”、” Memory Of Trees”、“Of Trees too”,再利用“門機(jī)制”過濾得到“I like Memory”和” Memory Of Trees”兩個(gè)有意義的三元組。最后將“I like Memory”中無意義的部分過濾,得到“xxx like xxx”和” Memory Of Trees”,它們表達(dá)了用戶對(duì)歌曲喜愛的情感。此外,gated CNN中的“門機(jī)制”與“注意力機(jī)制”不同,“注意力機(jī)制”為每個(gè)單詞上下文向量a∈d生成一個(gè)標(biāo)量權(quán)重w∈1,而“門機(jī)制”生成權(quán)重向量w∈d,更加細(xì)粒度地過濾相關(guān)特征。
3.4.3“評(píng)論”層建模:場景上下文的作用
對(duì)于“問題3”,本文設(shè)計(jì)了實(shí)驗(yàn)來評(píng)估在“評(píng)論”層面的引入場景上下文的方法相對(duì)于只是從評(píng)論有用性的角度計(jì)算評(píng)論的權(quán)重的NARRE是否帶來了性能的提升。為了公平起見,本文也對(duì)NARRE進(jìn)行了修改:原本NARRE沒有在“單詞”層面過濾有效信息,因此為它加入word-level gated CNN保證兩個(gè)模型在“單詞”層面相同,然后比較它們在“評(píng)論”層面建模的差異。此外,兩個(gè)模型在交互層也略有不同,但是都是將LFM擴(kuò)展成“基于評(píng)分”和“基于評(píng)論”兩部分,這里把交互層都統(tǒng)一改為FM。本文將修改后的NARRE命名為“NARRE-3”和“SCRM-3”。表5匯報(bào)了在四個(gè)數(shù)據(jù)集上的結(jié)果,并將原始的NARRE模型的結(jié)果作為參照。“提升”一行表示“SCRM-3”相對(duì)“NARRE-3”的性能提升。

表5 “評(píng)論”層面表現(xiàn)對(duì)比
我們發(fā)現(xiàn),在四個(gè)數(shù)據(jù)集上SCRM-3在“評(píng)論”層面的表現(xiàn)都超過了NARRE-3。NARRE在“評(píng)論”層面使用注意力機(jī)制給予每個(gè)評(píng)論表示權(quán)重,并進(jìn)行平均池化為一個(gè)固定維度的向量作為用戶(物品)表示。在交互層之前,用戶表示和物品表示都沒有聯(lián)系,反映的是靜態(tài)的用戶興趣和物品性質(zhì)。SCRM考慮到交互場景的不同對(duì)用戶和物品表示的影響,在平均池化之前編碼了每個(gè)評(píng)論的場景上下文,并與原表示融合,生成動(dòng)態(tài)的用戶和物品表示,消除了場景無關(guān)的信息,突出了場景中重要的特征。
此外,我們嘗試保留NARRE的原始交互層,但是加入“單詞”層面模塊,表5中的“NARRE-4”一行匯報(bào)了相應(yīng)的結(jié)果。將第一行和第二行的“NARRE”和“NARRE-4”比較,我們發(fā)現(xiàn)增加“單詞”層面的建模對(duì)Digital Music數(shù)據(jù)集提升不大,但是其他三個(gè)數(shù)據(jù)集均有明顯提升。這再次驗(yàn)證了在問題1中的推斷:不同領(lǐng)域中用戶興趣的多樣性程度不同,音樂電影等領(lǐng)域中“評(píng)論”層面的建模顯得更加重要。
3.4.4層次化建模的作用
對(duì)于“問題4”,本文設(shè)計(jì)了實(shí)驗(yàn)比較只有“單詞”層面建模和同時(shí)在“單詞”和“評(píng)論”兩個(gè)層面建模的不同,將這兩種的情況命名為“SCRM-4”和“SCRM-5”。表6匯報(bào)了在四個(gè)數(shù)據(jù)集上比較的結(jié)果。“提升”一欄表示“兩個(gè)層面”同時(shí)建模相對(duì)于只有“單詞”層面建模的提升。

表6 單層建模與層次化建模表現(xiàn)對(duì)比
我們發(fā)現(xiàn),同時(shí)在“單詞”和“評(píng)論”兩個(gè)層面建模,相比只在“單詞”層面有了提高。層次化的特征抽取一方面對(duì)“評(píng)論內(nèi)特征”進(jìn)行了更細(xì)粒度的抽取,另一方面通過獨(dú)立建模每個(gè)評(píng)論,對(duì)不同評(píng)論所代表的多方面興趣的進(jìn)行區(qū)分并融合場景信息,更好地突出了場景中顯著的某一方面的興趣。此外,在表5中我們發(fā)現(xiàn)“NARRE-4”超過了原始的NARRE,再次證明了多層次建模的必要性。
在推薦系統(tǒng)中,只根據(jù)“用戶-物品評(píng)分矩陣”推斷出用戶和物品的表示,在數(shù)據(jù)稀疏時(shí)會(huì)出現(xiàn)嚴(yán)重的冷啟動(dòng)問題,從評(píng)論文本中挖掘用戶興趣和物品性質(zhì)作為補(bǔ)充成為主流的方法。
本文主要的貢獻(xiàn)是:(1)同時(shí)在“單詞”和“評(píng)論”層面更加細(xì)粒度地從評(píng)論文本中抽取特征。(2)在“單詞”層面,編碼每個(gè)單詞的局部上下文表示、過濾相關(guān)的上下文特征,并緩解了D-ATT[1]中單詞上下文丟失的情況,保留更豐富的語義。(3)在“評(píng)論”層面,編碼每個(gè)評(píng)論在當(dāng)前交互場景中的上下文,動(dòng)態(tài)生成用戶和物品表示,突出在當(dāng)前交互場景中決定用戶打分的主要因素。(4)在多個(gè)數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn)。SCRM在每個(gè)數(shù)據(jù)集上都顯著地超過了基準(zhǔn)MF、DeepCoNN、D-ATT和NARRE,并在“單詞”層面超過了D-ATT,在“評(píng)論”層面超過了NARRE。
但是SCRM仍然存在一些不足之處:第一,對(duì)于單個(gè)評(píng)論仍然將評(píng)論內(nèi)所有句子拼接,丟失了句子級(jí)別的語義。第二,對(duì)于每個(gè)單詞而言,只編碼了局部的上下文,沒有更進(jìn)一步的復(fù)雜語義,例如“我喜歡在周末聽Memory Of Trees”中“周末”代表的時(shí)間場景和歌曲“Memory Of Trees”不能建立關(guān)系。
本研究對(duì)“層次化的評(píng)論建模”和“場景相關(guān)的推薦”提供了一些新思路,我們將來的方向是,加入“句子”層面的細(xì)粒度興趣建模以抽取更豐富的語義關(guān)系。