梁順攀 劉 偉 尤殿龍② 劉澤謙 張付志②
①(燕山大學信息科學與工程學院 秦皇島 066004)
②(燕山大學河北省軟件工程重點實驗室 秦皇島 066004)
近年來,許多網站允許用戶以評論的形式表達對目標項目的態度。用戶的評論中包含了豐富的用戶喜好信息以及商品特性信息。使用評論文檔作為輔助信息的推薦模型可以緩解評分矩陣的數據稀疏問題。
根據基礎結構,將基于評論的推薦模型分為兩類,分別是基于主題模型的方法和基于深度模型的方法。基于主題模型的方法[1,2]使用LDA(Latent Dirichlet Allocation)模型[3]抽取評論文本的主題,再根據主題預測評分。由于主題模型會丟失文本詞序,并且學習到的是淺層特征,所以這類方法逐漸被基于深度模型的方法所替代。在基于深度模型的推薦算法中,ConvMF(Convolutional Matrix Factorization)模型[4]使用卷積神經網絡(Convolutional Neural Networks, CNN)處理項目評論文檔;DeepCoNN(Deep Cooperative Neural Networks)模型[5]使用兩個CNN并行處理用戶和商品評論,通過融合層計算用戶對項目的評分;NARRE(Neural Attentional Regression model with Review-level Explanations )模型[6]在DeepCoNN的基礎上考慮了評論的質量,使預測精度進一步上升。TARMF(Topical Attention Regularized Matrix Factorization)[7]采用基于注意力的循環神經網絡(Recurrent Neural Network, RNN)提取主題信息,可以將詞序信息保留,更大程度地理解文本。
CNN存在“不變性”、RNN常會出現梯度消失或者梯度爆炸問題,它們均不能準確地提取評論文本的細粒度特征,影響預測精度。膠囊網絡[8]將神經網絡中的神經元擴展成“膠囊”向量,膠囊的長度代表某個屬性是否存在,膠囊的方向代表屬性的具體描述,這些特性使其可以保存細粒度文本語義,在關系提取[9,10]和文本分類[11,12]任務中有效地改善了CNN的缺點。此外,膠囊網絡僅通過少量迭代就可以獲得較好的結果,避免了RNN的訓練緩慢和梯度問題。使用膠囊網絡的推薦模型
CARP(CApsule network based model for Rating Prediction with user reviews)[13]僅將膠囊網絡設置在模型預測層, MIND(Multi-Interest Network with Dynamic routing)[14]忽略了項目文檔中隱含的項目特性信息,它們都沒有準確地提取出文本的細粒度特征。
在推薦系統中,有些用戶對項目要求過高,習慣給出負面評論,甚至對項目惡意評論,這樣的評論內容是低質量的。目前已經出現了一些使用數據集中用戶對評論的“有用/無用”標記來預測每條評論的有用性的研究[15],但當數據集中不存在這樣的標記時,現有的基于評論文檔的推薦算法[1,2,4,5,7,13,14,16]都無法考慮到評論質量的因素,低質量評論混在大量的評論文檔中會降低挖掘出語義特征的質量,進而影響預測的精度。
為解決CNN挖掘文本特征不準確以及低質量評論影響結果精度的問題,本文提出考慮評論質量的自注意力膠囊網絡評分預測模型SACR。本文模型的主要貢獻總結如下:
(1)本文使用自注意力膠囊網絡同時挖掘用戶和項目評論文檔,并且改進了膠囊的擠壓函數,可以獲取到細粒度級別的用戶偏好和項目特性,解決了使用CNN挖掘文本特征不準確的問題。
(2)為了解決低質量評論會對預測精度產生影響的問題,本文模型使用用戶和項目的編號信息標記那些質量不高的評論,在模型學習時可以避免其帶來的負面影響,從而提升模型的評分預測精度。
(3)將本文模型和基準模型在8個不同規模的現實世界數據集進行實驗,結果證明了SACR避免低質量評論影響的能力以及在評分預測上的準確性。
為充分挖掘用戶的細粒度偏好以及項目的細粒度特性,SACR設置了一個雙塔結構網絡,分別用來處理用戶評論文檔和項目評論文檔,并通過融合層將兩個網絡的輸出和評論質量表示融合,從而預測用戶對項目的評分。SACR模型的3層結構分別是:(1)將評論文檔嵌入表示,并挖掘文本注意力表示的編碼注意力層;(2)挖掘細粒度級別的用戶偏好和項目特性的卷積膠囊層;(3)將評論質量表示與上層輸出連接、變換后預測評分的融合層。本文提出的SACR模型結構如圖1所示。SACR模型中主要用到的符號及其定義如表1所示。由于用戶網絡和項目網絡在前兩層的結構相同,所以以下文主要敘述用戶網絡的詳細結構。

表1 模型符號定義

圖1 SACR模型結構
第1層是編碼注意力層,本層首先對評論文檔進行詞嵌入,然后依據自注意力權重對詞嵌入矩陣重新賦權,得到用戶或項目文本注意力表示矩陣。以用戶i的評論文檔為例,模型的輸入為用戶i對所有項目的評論文本序列:Ri=[Ri1,...,Rik,...,RiL],其中Rik是第k個單詞在字典中的索引,L是評論文檔的長度。詞嵌入模型輸出得到詞嵌入矩陣Xi=[Xi1,...,Xik,...,XiL],其中Xik ∈Rd是第k個詞向量。詞嵌入矩陣并不能表示出用戶的表達重點,則需要繼續對詞嵌入矩陣進行自注意力變換,獲取表達重點。

第2層是卷積膠囊層。膠囊網絡可以挖掘出文本中的細粒度語義,該層使用膠囊網絡改進傳統的CNN。本層改進了傳統膠囊網絡[8]的擠壓函數,可得到更準確的上層膠囊,進而獲取細粒度的用戶偏好和項目特性。



本文對膠囊網絡[8]的擠壓函數進行了改進,擠壓函數第1項的作用是將sj單位化,第2項的作用是將sj擠壓到[0,1]區間,即當sj很長時,將其拉長為1,當sj很短時,將其壓扁為0。第2項分母的數字1代表擠壓程度,擠壓程度越大總體數值越小,膠囊就會獲得更大的擠壓效果。圖片分類任務中,模型需要擴大特征之間的差別,但在推薦任務中,體現出特征的相似性有助于學習用戶和項目的特征,故本文將其第2 項的擠壓程度1 改為了0.5:0.5+||sj||2,使第2項的權重擴大,膠囊網絡可以更多保留膠囊間的相似性。
經過λ次迭代的路由過程,膠囊網絡輸出得到D個高層膠囊,拼接組成用戶i的膠囊矩陣:Oi=[o1,...,ok,...,oD],Oi ∈RD×e編碼了文本的細粒度特征信息。為了在融合層將細粒度特征與評論質量信息融合,還需計算每個膠囊的長度,將膠囊矩陣映射到與編號嵌入同維度的向量空間,最終,得到卷積膠囊層的輸出:ui=[||o1||,...,||ok||,...,||oD||],ui ∈RD,同理可得項目j在卷積膠囊層的輸出vj ∈RD。
在融合層中,本文使用用戶和項目編號的嵌入對評論質量進行建模,將編號嵌入分別與用戶偏好膠囊和項目特性膠囊相融合,在模型訓練時通過這樣的融合標記可以給惡意用戶和受害項目的膠囊賦予較低的權重,從而降低低質量評論對模型的影響。為了使上文得到的用戶偏好膠囊和項目特性膠囊中包含表示評論質量的因素,將用戶編號嵌入表示αi、項目編號嵌入表示βj與卷積膠囊層獲得的ui,vj相加,公式為

其中,si,tj為融合了評論質量的用戶i的細粒度偏好和項目j的細粒度特性。對si和tj再次進行變換映射,計算用戶i的偏好與項目j的特征的相關程度r?ij。

其中,⊙代表逐元素相乘,Wpre為權重矩陣。計算評分的偏置項,并將以上結果進行整合為

其中,ηi和θj為用戶偏置和項目偏置,bpre為全局偏置,r?ij為模型輸出:用戶i對項目j的預測評分。
本文將SACR模型訓練過程的損失函數設置為

模型使用Adam[17]優化器對目標函數進行優化,Adam優化器可以在訓練過程中自動調整各個參數的學習速率,并且比普通的SGD優化器更準確、收斂更快。
本文在SACR的融合層使用Dropout[18]方法,Dropout可以在模型訓練時隨機刪除ρ百分比的神經元,在每次模型訓練只更新Dropout保留的部分參數,可以緩解模型產生過擬合的問題,提高模型的性能。
本文實驗使用來自Amazon5-core[19]的不同領域的8個數據集。數據集中包含用戶編號、項目編號、評分、評論、評論有用性等9種屬性,本文使用其中的用戶編號、項目編號、評分和評論。Amazon已將數據設置為每個用戶和項目都至少有5條評論,保證了足夠的評論文檔用以提取特征。數據集統計如表2所示。

表2 對每個數據集的統計
對每個數據集隨機以8:1:1的比率構建訓練集、驗證集和測試集,在實驗過程中選取均方誤差(Mean Square Error,MSE)作為模型實驗效果的評判標準。為了驗證模型的有效性,實驗選取以下5個模型與SACR進行對比:
(1) PMF[20]:概率矩陣分解模型,僅使用評分矩陣進行矩陣分解預測用戶對項目的評分。
(2) ConvMF[4]:使用項目評論文檔作為輔助,利用CNN挖掘項目特征,結合PMF進行預測評分。
(3) DeepCoNN[5]:使用CNN分析項目評論和用戶評論的深度模型。
(4) NARRE[6]:使用CNN分析項目評論和用戶評論,并考慮了評論質量的深度模型。
(5) CARP[13]:使用注意力機制細粒度分析評論文檔,并利用膠囊網絡預測評分的深度學習模型。
3.2.1 膠囊數量和膠囊維度
輸入膠囊的通道數C和維度e1決定了膠囊網絡處理文本特征的范圍和方向,輸出膠囊的數量D和維度e決定了特征的維度和細粒度。為確定以上參數,本文在Musical Instruments數據集上測試了使用不同參數的情況下模型預測評分誤差的變化。由于膠囊網絡的動態路由是一個逐步求精的過程,故輸出膠囊的數量和維度要少于輸入膠囊的數量和維度,在研究某個參數時,將其他參數設定為固定值。實驗結果如圖2所示。從圖2(a)和圖2(c)觀察到,當膠囊數量取值較小時,膠囊網絡能處理的特征數目相應較少,挖掘到的用戶偏好和項目特性不完整,導致誤差較大,當膠囊數量取值過大時,又會使特征產生冗余,同樣會增高模型誤差;從圖2(b)和圖2(d)觀察到,當膠囊維度取值較小時,特征細節體現得不完整,取值過大會使膠囊的細粒度信息產生冗余。根據結果,本文在實驗中設定使模型MSE達到最小的參數值:C=4,e1=16,D=64,e=4。

圖2 不同數量和維度的膠囊對模型均方誤差的影響
3.2.2 動態路由迭代次數
膠囊網絡中動態路由的迭代次數λ決定了膠囊網絡輸出特征的精度。本文在Musical Instruments,Office Products數據集上測試了模型使用不同動態路由的迭代次數時MSE的變化情況。實驗結果如圖3所示,當迭代次數從1次增加到3次時,模型在兩個數據集上的MSE均明顯降低,且當λ=3時模型的MSE達到最低,說明膠囊網絡在超過兩次迭代之后,就已經找到了較精確的高層膠囊。由于迭代次數選為3次時已經可以挖掘出準確的細粒度特征,所以在繼續迭代后,MSE并沒有繼續降低,反而在升高后趨于平滑。根據結果,本文在實驗中選擇使模型MSE最低時的迭代次數:λ=3。

圖3 不同的迭代次數在兩個數據集上對模型均方誤差的影響
3.2.3 擠壓函數調整
為證明本文改進的擠壓函數可以學習膠囊間的相似性,進而更易學習用戶的偏好和項目的特性,本節將擠壓程度作為參數,設置擠壓程度為1.00,0.75, 0.50, 0.25, 0,并將模型在Musical Instruments, Office Products數據集上進行實驗。由于擠壓程度設置為0可能會造成擠壓函數中分母為0的錯誤,故使用極小值1e-7替代。實驗結果如圖4所示。當擠壓程度為0時,擠壓函數就變成了普通的歸一化函數,失去了擠壓的作用,模型誤差最高;擠壓率為0.25時,函數具有一定的壓扁和拉長膠囊的效果,模型誤差降低;擠壓程度為0.50時模型誤差最低;擠壓程度增加到0.75和1.00時,擠壓效果最強,但擴大了膠囊的差別,忽略了膠囊的相似性,故學習到的特征間聯系變小,模型誤差反而上升。實驗證明使用本文擠壓函數挖掘的特征更準確。

圖4 不同的擠壓程度在兩個數據集上對模型均方誤差的影響
本文同時在Amazon5-cores的8個數據集上對SACR以及基準模型進行實驗,結果如表3所示。

表3 各模型實驗結果對比
首先,PMF僅使用評分矩陣學習用戶和項目的特征,在評分數據稀疏時模型受影響較大,所以相對于其他基于評論文檔的模型性能是最差的;在基于評論文檔的基準模型中,ConvMF引入了評論文檔作為輔助信息,并且在PMF的基礎上使用CNN處理項目評論,得到的項目特征更加完整,模型性能也較PMF有較大的提升,但其用戶特征還不準確,故與其他模型相比性能較差;Deep-CoNN使用CNN處理用戶和項目評論,并且使用全連接層代替矩陣分解模型,模型的性能顯著高于基于矩陣分解的ConvMF,但CNN不能準確挖掘評論中的細粒度特征,模型性能仍不是基準模型中最高的;NARRE在DeepCoNN的基礎上使用了注意力機制,并考慮了評論質量因素,在其工作[6]中選取的Toys and Games, Kindle Store, Movies and TV上模型性能是基準模型中最高的,但在其他的數據集上僅強于PMF,說明模型基于CNN挖掘特征不夠準確,在稀疏的數據集上泛化能力較弱;CARP使用注意力機制挖掘評論文檔的細粒度特征,并使用膠囊網絡進一步分析用戶項目交互的情感,在前5個數據集中的表現是基準模型中最高的,在后3個數據集中性能與NARRE持平,但其使用注意力挖掘到的特征仍有限,且模型沒有考慮到評論質量對結果的影響;本文模型SACR在各個數據集的平均MSE顯著低于其他模型,且在Office Products, Digital Music, Movies and TV上相對于CARP取得了6.5%,10.5%,6.7%的顯著改進,在Musical Instruments中性能與CARP持平的原因是設置了不同于其他數據集的迭代次數和特征維度,雖然準確率提高,但結果導致模型泛化能力降低。在其他數據集中SACR的性能顯著高于CARP。
綜上所述,在使用相同評論數據集的情況下,本文模型SACR與使用CNN的其他模型相比取得了最低的預測誤差,這說明膠囊網絡在模型訓練的過程中可以比CNN挖掘出更準確的文本特征,由于挖掘出的特征更準確,故可以獲得更高的準確率。
為了驗證SACR避免低質量評論影響的有效性以及使用膠囊網絡進行細粒度特征挖掘的合理性,使用SACR的兩個子模型進行對比實驗,兩個子模型的定義如下:
(1) SACR-base:不包含SACR的融合層中結合評論質量的部分,用于證明SACR可以消除低質量評論對預測結果的負面影響。
(2) SACR-cnn:將SACR的卷積膠囊層替換為連續3次卷積和池化操作的CNN,用于證明SACR的自注意力膠囊網絡可以更細粒度地提取特征。
SACR-cnn相當于在DeepCoNN的基礎上增加了考慮評論質量的融合層,SACR-base相當于將DeepCoNN的CNN替換成本文的卷積膠囊層。分別將SACR-base和SACR-cnn在Amazon5-cores的5個數據集進行實驗,并與SACR以及基準模型DeepCoNN進行對比。實驗結果如表4所示。

表4 子模型預測準確率實驗結果對比
首先,使用膠囊網絡的SACR和SACR-base的性能均高于使用CNN的SACR-cnn和DeepCoNN,說明將神經元擴展成“膠囊”的方式使模型在訓練過程中能比CNN攜帶更豐富的信息,證明SACR能捕獲用戶和項目的細粒度特征,解決了CNN挖掘文本特征不準確的問題。其次,融入編號信息標記評論質量的SACR和SACR-cnn的性能均高于沒有考慮評論質量的DeepCoNN,證明SACR通過對用戶項目進行標記,在模型訓練時可以賦予惡意用戶和受害項目的評論較低權重,進而消除低質量評論對預測結果的負面影響。
本節實驗證明了SACR可以解決使用CNN挖掘文本特征不準確以及低質量評論影響結果精度的問題,SACR可以給用戶生成更加準確的推薦結果。
本文提出了一種考慮評論質量的自注意力膠囊網絡評分預測模型SACR。使用自注意力膠囊網絡處理評論文檔,并改進了膠囊的擠壓函數,使其能更準確地獲取評論文本中的細粒度特征,通過將用戶、項目標識信息與細粒度特征相融合,進一步消除低質量評論對特征挖掘的負面影響。經過與各種基準模型的實驗對照,證明SACR可以更有效地提升評分預測的準確率。此外,本文還通過SACR與子模型的對比實驗,證明了使用自注意力膠囊網絡挖掘特征可以解決使用CNN挖掘文本特征不準確的問題,將用戶和項目信息標記評論可以避免低質量評論對結果的負面影響。
在未來的工作中考慮將時間因素加入到模型中,分析模型在用戶評論的時間分布不同的情況下,對應的細粒度特征的變化;考慮通過其他上下文信息完善模型對推薦結果的可解釋性。