霍雨佳,左 欣,張 虹
(1.貴州理工學院 人工智能與電氣工程學院,貴州 貴陽 550003;2.貴州省教育廳貴州省人工智能與智能控制特色重點實驗室,貴州 貴陽 550003;3.貴州師范學院 繼續教育學院,貴州 貴陽 550018;4.貴州財經大學 外語學院,貴州 貴陽 550025)
推薦系統的目標是通過分析用戶與項目的互動數據,發現并預測用戶對其它項目的興趣,目前最為經典且有效的是基于協同過濾的推薦系統[1]。基于用戶和基于項目是協同過濾系統的兩種類型,兩者思想基本一致,以基于用戶的協同過濾系統為例,其核心思想是通過用戶評分數據評估用戶間的相似性,通過計算相似用戶對目標項目評分的加權調和值來預測未知的評分。此類算法在稀疏數據集難以準確建立用戶間的相似性,導致推薦的準確率較低[2]。
目前針對稀疏數據推薦系統較為有效的措施主要有基于矩陣分解模型[3]、基于集成學習方法[4]和基于深度學習[5]。在基于矩陣分解模型的方法中,文獻[6]在用戶矩陣中引入了用戶關系的隱特征矩陣,極大地提高了對稀疏數據的預測效果。在基于集成學習的方法中,文獻[7]使用多種相似性度量方法產生多個弱預測模型,然后通過集成算法將弱預測模型組合成強預測模型。在基于深度學習的方法中,被研究的神經網絡模型包括了卷積神經網絡[8]、深度信念網絡[9]、長短期記憶網絡[10]和自編碼器[11]等。深度學習技術能夠學習數據的深度特征,在特征提取能力方面具有較好的性能,但目前深度學習模型的超參數難以確定,且訓練難度較大。
為了利用深度學習技術的優勢,同時降低模型的訓練復雜度,提出了一種基于多核學習卷積神經網絡的稀疏數據推薦系統。不同于上述基于深度學習的推薦方法,本文利用結構簡單的卷積神經網絡(convolutional neural networks,CNN)提取輔助信息的特征,為了保證簡單CNN結構的特征提取效果,通過多核學習技術對神經網絡中間層進行核學習和組合,豐富特征向量的類型。此外,為了避免潛在因子矩陣的負入口所造成的信息損失,改用非負矩陣模型預測用戶對項目的評分。
本文模型考慮了項目描述這一關鍵的輔助信息,如:商品介紹、電影劇情、歌曲介紹以及新聞摘要等,將輔助信息經過CNN處理生成文本潛在因子。圖1是推薦系統的完整結構。本文以電影推薦系統為描述對象,將電影作為項目,電影的情節作為項目的描述。首先在預處理階段,刪除輔助信息中的顯著性較低的內容,如一些標點符號和輔助詞。然后使用Word2Vec模型[12]將輔助信息轉化成密集分布的詞表示,將詞表示送入CNN學習密集向量的上下文特征,基于CNN輸出的特征向量初始化非負矩陣模型的基礎矩陣(項目潛在因子),非負矩陣模型預測出用戶-項目矩陣的缺失評分。

圖1 推薦系統的完整結構
設U=[u1,u2,u3,…,um]為所有用戶的列表,I=[i1,i2,i3,…,in]為所有項目的列表,將用戶-項目評分矩陣表示為Rui∈[0.5,1,2,3,4,5]m×n,其中Rui表示用戶u對項目i的評分,m為用戶總數量,n為項目總數量。系統的目標是預測出缺失的評分R′ui,設G為項目描述信息,共包含l個詞,記為w1,w2,w3,…,wl。基于n個項目的全部描述信息建立語料庫C,表示為C∈{w1,w2,w3,…,wl,wl+1,…,wt},t為語料庫C的詞數量。
運用詞嵌入模型Word2vec處理語料庫C,生成s-維的詞向量。Word2vec順序地訓練C中的詞,最大化詞的對數概率,其數學模型為
(1)
式中:|C|為語料庫C的大小,c為訓練窗口的大小。
采用層次Softmax[13]定義每個輸出詞的概率p(wt+j|wt),語義嵌入的維度應當和CNN的輸入維度相等。CNN的輸入層采用語料庫的Word2Vec模型,將Word2Vec模型轉化成輔助信息的密集矩陣,數學式為
(2)
式中:vti表示詞向量t的第i個維度,s為向量的維數。將矩陣X的每個詞向量直接級聯,因此X保留了詞之間的語義。設vi∈X為第i個詞向量,將一個長度為l的句子表示為
v1∶l=v1⊕v2⊕…⊕vl
(3)
式中:“⊕”表示將向量級聯。
圖2是卷積神經網絡[14]的結構。

圖2 卷積神經網絡的結構
卷積層對不同大小的窗口進行卷積運算,提取出詞在輔助信息中的上下文信息。上下文信息中包含了詞的順序信息,卷積核的大小決定了目標詞的周圍詞數量。假設h個詞向量wi:i+h-1傳入卷積核W,產生的特征設為ψi,那么卷積的計算式可表示為
ψi=f(Wh?X(:,vi:i+h-1)+b)
(4)
式中:“?”表示卷積運算,Wh表示大小為h的卷積核,b∈為一個偏置項,f為非線性激活函數。由于該卷積核的目標是分析詞向量,因此核的一個維度保持與向量表示長度相等,另一個維度有所變化。卷積核處理的每個詞向量為{v1:h,v2:h+1,v3:h+1,…,vn-h+1:n},生成每個詞的上下文特征圖為ψ=[ψ1,ψ2,ψ3,…,ψn-h+1]。
經過最大池化層計算特定filter特征圖的最大值,選出特征圖中最重要的特征。此外,池化方法通過池化操作將不同長度的句子統一成固定長度的特征向量,避免加入無關的上下文特征。每個filter被提取一個特征,通過多個filter學習文本的上下文特征集。最大池化層的計算模型為
Xf=[max(ψ1),max(ψ2),max(ψ3),…,max(ψn-h+1)]
(5)
上下文特征集送入全連接層,全連接層將Xf轉化至k維的空間,構成協同過濾的潛在因子。在全連接層采用非線性投影生成k維的潛在因子向量,投影的數學模型為
Xv=tanh(Wf2{tanh(Wf1Xf+bf1)}+bf2)
(6)
式中:Wf1和Wf2均為投影矩陣,bf1和bf2分別為Wf1和Wf2所對應的偏置向量,Xv∈k。
基于非負矩陣分解(nonnegative matrix factorization,NMF)[15]實現評分預測,通過NMF將矩陣R∈R+m×n分解成兩個子矩陣M∈R+m×k和N∈R+k×n,并且R、M和N的所有入口均為非負項,因此可獲得以下關系:R≈M×N。在推薦系統的場景下,R+m×n表示m×n的非負矩陣,M可理解為項目,N為潛在因子,k為R的不可分解因子數量。因為在真實的推薦問題中,不存在負項的情況(項目、用戶、評分),所以對M和N的非負約束提高了協同過濾系統的可解釋性。
基于項目潛在因子對NMF進行初始化,模型的目標是找到兩個排名較低的非負矩陣MXv∈R+m×k和N∈R+k×n來預測評分,計算式為:R=MXvN。將R和MXvN之間設立一個約束,作為目標函數
(7)
式中:MXv表示基于項目上下文特征初始化的潛在因子矩陣。
在預測過程中可能發生過擬合的情況,因此為目標函數加入F-范數正則項[16],目標函數改寫為

(8)
式中:ρm為特征向量(MXv)u的正則項,ρn為Ni的正則項。
通過最小化目標函數獲得特征矩陣MXv和N,數學模型為
(9)
式中:M>0且N>0。
將矩陣N初始化為k×n大小的隨機矩陣:N=random[]k×n,k為評分矩陣的最小因子。通過迭代更新M和N計算目標函數的最小值,迭代的數學式為
(10)
用戶u對于項目i的預測評分可計算為下式
R′ui=MuNi
(11)
式中:R′ui為預測評分。
算法1總結了本文推薦系統的算法,算法迭代更新兩個潛在因子矩陣M和N,直至達到收斂。
算法1:基于非負最大矩陣的推薦算法。
輸入:數據集的評分矩陣R,最大迭代次數Maxiter,閾值threshold。
輸出:特征矩陣M和N。
(1)預處理電影輔助信息, 獲得句子矩陣;
(2)采用CNN提取句子矩陣的特征向量;
(3)初始化:N=random[]k×n,M=Xv=MXv。
(4)forkfrom 1 toMaxiterdo
(5) forufrom 1 toMdo

(7) endfor
(8) forifrom 1 toNdo

(10) endfor
(11)Rerr=RMSE(R-MN)2//計算目標函數
(12) ifRerr (13) break; (14) endif (15)endfor (16)Return。 為了保證簡單CNN結構的特征提取效果,通過多核學習技術對神經網絡中間層進行核學習和組合,豐富特征向量的類型。 采用多核學習將CNN每層的低顯著性特征集組合成高顯著性特征集,通過凸組合將每層的權重向量組合,組合的數學模型為 (12) 上述多核學習方法可以組合任意類型的核,本文將CNN每個中間層的表示向量作為一個核,對CNN進行多核學習,經過多核學習獲得的多個核稱為“組合核”,該機制類似于Boosting提升算法,通過組合多個弱分類能力的核來提高CNN的總體表征能力。 (13) 式中:ζr(x)=g(Wrx+b),Wr為權重矩陣,b為偏置向量,g為非線性元素函數,l表示網絡中中間層的數量,“°”表示矩陣乘法運算(在卷積層的矩陣之間為卷積運算),最終ζout把最高層的表示映射到輸出。 CNN的卷積層輸出是形狀不同的矩陣形式,網絡訓練之后對CNN的中間表示進行壓縮來建立每一層的核。將卷積層的表示壓縮,與最小長度的表示矩陣對齊,刪除多余的元素。假設φr(x)表示CNN網絡第r層的表示。圖3是對CNN每個中間層進行多核學習的網絡結構圖。 圖3 KerNET程序具有CNN作為基礎網絡 傳統CNN僅使用最后一個隱層的輸出作為網絡的表示,而在CNN的中間層也包含了輸入數據不同角度的特征。本文采用多核學習組合中間層的表示,以期提高神經網絡的泛化能力。本文的多核學習框架包含兩個階段:首先訓練CNN,確定CNN的參數;然后使用每個中間層表示φr建立基礎核kr(x,z)=<φr(x),φr(z)>。最終,通過多核學習(式(12))將基礎核結合。算法2是多核學習CNN算法的偽代碼。 算法2:多核學習CNN算法。 輸入:輸入數據矩陣X。 輸出:多核特征表示kμ。 (1)訓練CNN網絡,獲得網絡參數; (2)獲得CNN每一個中間層的表示φ0,φ1,…,φr(x)表示第r層的實例x; (3)將中間層表示轉化為基礎核:ki(x,z)=<φi(x),φi(z)>; (4)使用多核學習獲得組合核:kμ(x,z)=∑rμrkr(x,z)。 本文的實驗環境為PC機:Intel i7-9700 6核心處理器,16 GB內存,操作系統為64位 Windows 10操作系統。 采用2個在推薦系統領域廣泛應用的benchmark數據集,分別為MovieLens 1M、MovieLens 10M。MovieLens 1M數據集包含1 000 209個顯式評分,評分值為Rui∈{0.5,1,2,3,4,5},用戶數量為6040,電影數量約3900部。MovieLens 10M數據集包含10 000 054個顯式評分,評分值為Rui∈{1,2,3,4,5},用戶數量為71 567,電影數量約10 681部。兩個數據集的基本信息見表1,2個數據集均較為稀疏。 表1 實驗數據集的信息 將電影的情節作為輔助信息,用于預測每個電影的評分。在其它應用場景下可將商品的介紹作為輔助信息,本文以電影推薦問題為研究目標。原數據集不包含每個電影的情節信息,利用IMDB提供的開放API,基于Python語言編寫腳本檢索每部電影的劇情信息。 對劇情信息進行以下預處理:首先,每個劇情文本的最大長度設為250個詞,不足250個詞的補充結束符。然后,計算每個詞的TF-IDF(term frequency-inverse document frequency)[18],刪除TF-IDF>0.5的詞。詞頻(term frequency,TF)定義為詞在劇情文本中出現的次數,逆向文件頻率(inverse document frequency,IDF)反映了詞在所有文檔中的重要性。通過TF-IDF排除語料庫中的相同詞,選擇TF-IDF值最高的8000個詞構成語料庫。將劇情文本中的非語料庫詞刪除,保留語料庫中的詞。 應用Word2vec模型處理預處理后的劇情文本,生成電影項目的分布式表示。Word2Vec模型生成s維的特征向量,語料庫和生成的詞向量中包含了電影劇情的詞特征和詞的上下文特征。然后使用這些數據初始化卷積神經網絡的輸入層,即句子矩陣。經過卷積神經網絡學習獲得項目潛在因子向量,利用該向量初始化非負最大矩陣的項目潛在因素矩陣,最終生成對評分的預測結果。 將數據集的80%樣本劃分為訓練集,剩余的20%為測試集。將根均方誤差RMSE作為評分預測模型的評價標準,RMSE的數學式為 (14) 式中:R′為預測的評分。 采用精度、召回率、準確率和AUC也作為推薦系統的評價標準。基于項目的評分將項目分為相關類和不相關類,評分1-3作為不相關類,評分4-5為相關類。推薦系統的精度Pre、召回率Rec和準確率Acc分別計算為 (15) (16) (17) 式中:TP表示相關項被推薦,TN表示不相關項未被推薦,FP表示不相關項被推薦,FN表示相關項未被推薦。 AUC是精度和召回率兩者間的權衡指標,評價推薦結果的總性能。采用5折交叉驗證對評分預測模型進行訓練,并生成對于缺失評分的預測。 (1)潛在因子參數 為了確定項目潛在因子的維度K值,通過試錯法測試了不同K值的效果,K值分別為:50,60,70,80,90,100。圖4是不同K值所對應的平均RMSE結果,圖中可看出K值越高,RMSE越低,說明項目潛在因子的維度越高,評分預測的準確率也越高。下文實驗中將潛在因子參數設為100。 圖4 不同K值所對應的平均RMSE結果 (2)卷積神經網絡參數 采用圖2所示的卷積神經網絡結構,卷積層設置3個區域大小3、4、5,區域的另一個維度等于項目的評分維度,即MovieLens 1M(0.5,1,2,3,4,5)的維度為6,MovieLens 10M(1,2,3,4,5)的維度為5。每個區域分別為2個filter,共6個filter。 通過試錯實驗測試卷積神經網絡的輸入(句子矩陣)維度對模型的影響。圖5是不同輸入維度下模型的預測性能,可看出輸入維度越高,平均RMSE值略有下降,但是變化并非十分明顯。考慮性能和計算復雜度之間的平衡,將輸入維度設為200。 圖5 不同輸入維度下模型的預測性能 經過試錯法將多核學習的μ值設為:卷積層=0.2,映射層0.1,池化層0.1,輸出層0.6。 (1)評分預測實驗 本文的主要貢獻是提出了新的評分預測技術,用以解決稀疏性數據的推薦問題。首先對本文的評分預測性能進行驗證,選擇近年來的5個評分預測技術作為對比方法。文獻[19]結合LDA主題模型和PMF技術對未知評分進行預測,LDA主題模型和本文所采用的詞嵌入模型較為相似,因此將該方法作為對比方法來評價詞模型的有效性,將其簡記為LDAPMF。文獻[20]結合將項目上下文信息輸入PMF的項目潛在因子,對包含上下文信息的PMF進行統一運算,通過該算法驗證本文CNN特征的有效性,將其簡記為PMFLF。文獻[21]是基于長短期記憶網絡的未知評分預測方法,簡記為LSTMRT;文獻[22]是基于貝葉斯深度神經網絡的未知評分預測方法,簡記為BDNNRT;文獻[23]是基于深度信念網絡深度學習的未知評分預測方法,簡記為DBNRT。文獻[21-23]均為基于深度神經網絡的預測方法,是近年來性能較好的預測方法,選擇這3個方法可以驗證本文方法的性能優劣。 圖6是不同推薦系統對于評分預測的平均RMSE值,圖中“本文方法1”表示在本文系統中采用常規CNN的模型,“本文方法2”表示在本文系統中采用多核學習CNN的模型。比較圖中的結果可看出LSTMRT的預測性能略低于PMFLF,可見深度學習技術在評分預測問題上并未表現出明顯的優勢。本文方法1的預測效果好于LDAPMF、PMFLF、LSTMRT、BDNNRT和DBNRT方法,因此文中CNN卷積方法和輔助信息相結合的方法能夠實現較好的評分預測效果。此外,“本文方法2”的預測效果也好于“本文方法1”,可看出本文通過多核學習技術能夠有效地提高CNN網絡的特征學習效果。 圖6 不同推薦系統評分預測的平均RMSE值 (2)推薦系統實驗 在LDAPMF、PMFLF、LSTMRT、BDNNRT和DBNRT 這5個對比方法中,LSTMRT的研究僅給出了預測評分的結果,并未提供推薦系統的推薦結果,因此將LSTMRT方法排除。圖7是不同推薦系統基于預測評分的推薦性能,圖7(a)和圖7(b)分別為推薦系統的平均準確率指標和AUC指標。圖中“本文方法1”表示在本文系統中采用常規CNN的模型,“本文方法2”表示在本文系統中采用多核學習CNN的模型。 比較圖7中的結果可看出LDAPMF方法受到預測評分準確率的影響,其推薦性能明顯低于其它推薦系統。本文方法1的推薦效果好于LDAPMF、PMFLF、BDNNRT和DBNRT方法,因此文中CNN卷積方法和輔助信息相結合的方法能夠實現較好的推薦效果,增強推薦系統的性能。此外,“本文方法2”的推薦性能也好于“本文方法1”,可看出本文通過多核學習技術能夠有效地增強推薦系統的性能。 圖7 推薦系統的性能 本文利用結構簡單的卷積神經網絡提取輔助信息的特征,為了保證簡單CNN結構的特征提取效果,通過多核學習技術對神經網絡中間層進行核學習和組合,豐富特征向量的類型。為了避免潛在因素矩陣的負入口所造成信息損失,利用非負矩陣模型預測用戶對項目的評分。實驗結果表明了文中CNN卷積方法和輔助信息相結合的方法能夠實現較好的評分預測效果,并且通過多核學習技術能夠有效地提高CNN網絡的特征學習效果。 雖然本文以電影推薦問題為描述對象,但是在許多實際應用中項目均包括簡介、說明等文字信息,因此本文方法可以應用于其它各種類型的電子商務問題中。考慮到訓練復雜度問題,本文主要采用了簡單的CNN結構,未來將關注于不同神經網絡結構在特定問題的預測效果。2 增強深度神經網絡通過多核學習
2.1 多核學習

2.2 多核學習卷積神經網絡


3 實驗和結果分析
3.1 數據預處理

3.2 性能評價標準
3.3 模型的參數設置


3.4 實驗結果和分析


4 結束語