郭 聃
(四川現(xiàn)代職業(yè)學院電子信息技術系 四川 成都 610207)
個性化推薦系統(tǒng)現(xiàn)已成為電子商務、電影娛樂業(yè)以及新聞媒體領域中一個必不可少的部分,推薦系統(tǒng)不僅能夠提高用戶的瀏覽效率,而且能夠為服務提供商帶來經(jīng)濟效益[1]。協(xié)同過濾推薦系統(tǒng)是當前最為成功且應用最為廣泛的一種推薦系統(tǒng)模型,但目前的推薦系統(tǒng)領域主要關注于解決用戶評分的稀疏性問題和冷啟動問題[2],將提高推薦的準確率作為首要目標,而忽略了用戶的多樣性和個性化特點[3]。
電子商務等領域中普遍存在長尾分布的現(xiàn)象[4],推薦系統(tǒng)更傾向于將“熱門”項目推薦給用戶,這會影響用戶的滿意度,也不利于服務提供商擴大經(jīng)濟收益。此外,對指定用戶的推薦結(jié)果常常集中于少數(shù)的一些候選項目,導致推薦結(jié)果的排序成為用戶滿意度的又一個關鍵因素[5]。因此提高推薦的多樣性和個性化是一個極有意義的研究方向,近期也得到了研究人員的廣泛關注。文獻[6]基于用戶瀏覽的歷史記錄和當前的上下文場景為用戶提供多樣化的推薦列表。文獻[7]設計了兩階段的推薦方法,第一階段預測并補充稀疏的用戶評分,第二階段對協(xié)同過濾推薦的結(jié)果進行排序處理。目前提高推薦多樣性的主流方法都是通過顯式評分信息產(chǎn)生推薦列表,然后通過排序算法產(chǎn)生個性化的項目排序,這種方法所產(chǎn)生項目列表的多樣性依然有提高的空間[8]。
用戶和項目的大多數(shù)交互均為隱式信息,例如:音樂應用的用戶極少對音樂給出顯式評價,但是聽同一首音樂的次數(shù)、聽音樂的時間點和播放時長等隱式信息的價值甚至高于顯式的評分信息[9]。本文充分考慮用戶和項目交互的隱式信息,設計了一種基于層次隱馬爾可夫模型的上下文預測算法,基于預測的上下文產(chǎn)生對應的推薦項目集。此外,設計了神經(jīng)網(wǎng)絡來求解協(xié)同過濾的推薦問題,其滿足貝葉斯個性化排序[10]的條件,因此神經(jīng)網(wǎng)絡輸出的推薦結(jié)果經(jīng)過了個性化的排序處理。
設U={1,2,…,N}為一個用戶集,I={1,2,…,M}為一個項目集,交互數(shù)據(jù)集為S?U×I,(u,i)∈S表示用戶u和項目i的交互,正反饋記為(u,i)∈S,負反饋記為(u,i)∈(U×I)-S,正反饋和負反饋包含的項目分別稱為正項目和負項目,設Iu+表示用戶u的正項目集,Iu-表示用戶u的負項目集。
Iu+={i∈I:(u,i)∈S}
(1)
Iu-={i∈I:(u,i)∈(U×I)-S}
(2)
xuij=xui-xuj
(3)
式中:xuij表示對xui和xuj喜好的程度差異。
本文對用戶進行個性化項目排序,目標是最大化用戶正負項目i∈Iu+和j∈Iu-的概率,采用ROC曲線的AUC作為度量方法:
(4)
式中:H(·)為Heaviside函數(shù)。AUC值越接近1,性能越好。
推薦系統(tǒng)考慮的上下文主要包括時間上下文、地理上下文、社交上下文和模式上下文,模式挖掘是最常見的上下文感知方式,但在項目數(shù)量多或者數(shù)據(jù)稀疏性高的情況下,推薦的準確率較低。本文設計了兩層隱馬爾可夫模型(Hidden Markov Modeling,HMM)[11]自動學習每個用戶的潛在上下文,將上下文作為狀態(tài)(隱變量),用戶喜好的項目為觀測量,學習的目標包括估計狀態(tài)的轉(zhuǎn)移概率、每個觀測量的概率分布以及狀態(tài)變化所引起的用戶上下文變化,利用這些潛在狀態(tài)表示用戶的上下文。
每個上下文建模為一個隱藏變量,檢測用戶喜好之間的相同上下文模式,根據(jù)這些模式預測用戶的下一個上下文。包含兩層隱藏變量,將用戶對項目的正反饋序列作為訓練第1層的觀測序列,第1層的隱藏變量作為訓練第2層的觀測序列。第1層隱藏變量表示了用戶關于時間的潛在上下文,第2層隱藏變量提取了不同上下文狀態(tài)之間的相同模式。圖1為本文HMM的結(jié)構圖。
圖1 層次隱馬爾可夫模型的兩層結(jié)構
將HMM模型的參數(shù)表示為λ(A,B,C,D,π),N為第1層的狀態(tài)量,M為項目(觀測變量)的數(shù)量,A為第1層的狀態(tài)轉(zhuǎn)移概率,B為隱藏狀態(tài)和項目之間在第1層的觀測概率矩陣,C為第2層的狀態(tài)轉(zhuǎn)移概率,D為第2層和第1層之間的觀測概率矩陣,π為初始化狀態(tài)分布,設O=(O0,O1,…,OL-1)表示長度為L的觀測序列,Oi表示從用戶收到反饋的第i個項目。基于HMM的推薦系統(tǒng)需要解決以下3個核心問題:1) 計算觀測序列的似然;2) 計算概率最大的狀態(tài)序列;3) 估計HMM模型的參數(shù)。
直接計算問題1)需要約2L×NL次乘法運算,所以采用前向算法來減少問題的復雜度:
αl(i)=P(O0,O1,…,Ol,xl=si|λ)
(5)
式中:l為時間戳;αl(i)為在l的觀測序列概率;si為馬爾可夫過程的狀態(tài)。
(6)
采用前向算法需要約L×N2次乘法運算,小于直接計算的運算量。
采用后向算法解決問題2):
βl(i)=P(Ol+1,Ol+2,…,OL-1|xl=si,λ)
(7)
式中:遞歸計算αl(i)和βl(i)。對于所有的觀測變量和狀態(tài),定義以下的關系:
γl(i)=P(xl=si|O,λ)
(8)
αl(i)度量了時間l之前的相關概率,βl(i)度量了時間l之后的相關概率。狀態(tài)序列的概率定義為:
(9)
根據(jù)γl(i)的定義,時間戳l可能性最高的狀態(tài)是最大化γl(i)的狀態(tài)si。
問題3)的解決方法是將矩陣的大小固定,然后確定合適的矩陣元素:
γl(i,j)=P(xl=si,xl+1=sj|O,λ)
(10)
(11)
(12)
算法1是基于兩層隱馬爾可夫模型的上下文感知推薦算法。
算法1基于HMM的推薦算法
1.隨機初始化HMM的模型參數(shù)λ(A,B,C,D,π);
2.for each 用戶udo
3. for each用戶反饋信息
4. 基于給定的觀測序列重新估計參數(shù)λ(A,B,π);
5. 基于觀測序列計算第1層的狀態(tài)序列;
6. 基于第1層狀態(tài)序列重新估計參數(shù)λ(C,D,π);
7. 基于第1層序列計算第2層的狀態(tài)序列;
8. 基于λ(C,D,π)預測下一個上下文;
9. 基于λ(A,B,C,D,π)預測下一個項目;
10. end for
11.end for
HMM第1層:收集每個用戶的反饋序列,首先更新矩陣A和B,更新每個序列第1層的轉(zhuǎn)移概率矩陣和觀測概率矩陣。然后尋找第1層中似然最大的狀態(tài)序列,該序列等價于該用戶上下文狀態(tài)最相似的轉(zhuǎn)移概率序列,使用Viterbi算法[12]尋找最優(yōu)的隱狀態(tài)序列。根據(jù)第1層發(fā)現(xiàn)的序列更新矩陣C和D,再根據(jù)觀測的項目序列重新估計參數(shù)A和B。
HMM第2層:通過最大似然決定第2層的狀態(tài)序列,該序列是第2層隱藏變量中最可能發(fā)生轉(zhuǎn)移的序列,所以該序列反映了上下文的變化?;谟柧毜纳舷挛霓D(zhuǎn)移概率(參數(shù)C和D),預測用戶的下一個上下文。給定預測的上下文和觀測概率矩陣B,推導出和預測上下文匹配的推薦列表。
在模型訓練完成之后,將矩陣C和D相乘,預測用戶的下一個上下文。然后,將矩陣A和B相乘,計算每個項目被推薦的概率。最終,基于計算的概率和預測的上下文,生成上下文對應的top-N推薦項目。層次隱馬爾可夫模型的總體程序流程如圖2所示。
圖2 層次隱馬爾可夫模型的上下文學習流程圖
本文網(wǎng)絡模型是多層前饋神經(jīng)網(wǎng)絡結(jié)構,共有四層:用戶層L1、隱藏層L2、項目層L3和排序?qū)覮4,如圖3所示。L1層神經(jīng)元數(shù)量和用戶數(shù)量相等,L3層神經(jīng)元數(shù)量和項目數(shù)量相等,L2層神經(jīng)元數(shù)量K決定了用戶和項目的規(guī)模。
圖3 本文的多層前饋神經(jīng)網(wǎng)絡結(jié)構
設R={(u,i,j)|u∈U,i∈Iu+,j∈Iu-}為訓練樣本集。網(wǎng)絡采用二進制形式表示每個用戶:a1∈{0,1}N,表示為指示向量形式(z0,z1,…,zN), 如果j=u,則zj=1,否則zj=0。隱層L2的輸出a2相應變?yōu)椋?/p>
(13)
(14)
式中:k=1,2,…,K表示隱層的神經(jīng)元;函數(shù)f:RR為隱層的激活函數(shù)。a2和f之間存在以下的關系:
(15)
(16)
(17)
采用Sigmoid函數(shù)σ作為排序?qū)拥募せ詈瘮?shù),比較用戶u對于項目i和項目j的喜好程度。
采用交叉熵C作為網(wǎng)絡的代價函數(shù):
(18)
(19)
激活權重W的更新規(guī)則定義為:
W←W+αΔW
(20)
企業(yè)價值共創(chuàng)體系的涌現(xiàn)指由價值情報探測及分析系統(tǒng)、協(xié)調(diào)控制系統(tǒng)、協(xié)同生產(chǎn)系統(tǒng)等構成的企業(yè)價值共創(chuàng)體系整體所具有的超越各組成系統(tǒng)的能力。借鑒穆勒提出的判斷涌現(xiàn)存在與否的三個判據(jù)[21]:可加性判據(jù)、新奇性判據(jù)和可演繹性判據(jù)[22-23],將企業(yè)價值共創(chuàng)體系的涌現(xiàn)分為兩個層次:第一個層次是價值共創(chuàng)體系繼承與各組成系統(tǒng)的能力,但其能力指標不是系統(tǒng)級能力指標的簡單線性疊加,而是非線性的整體價值創(chuàng)造能力的改變值。第二個層次是價值共創(chuàng)體系具備的而單個體系組成系統(tǒng)并不具備的價值創(chuàng)造能力,表現(xiàn)在體系的整體價值創(chuàng)造能力指標上。
(21)
(22)
(23)
后向傳播引起如下的權重變化:
(24)
(25)
(26)
最終更新用戶層u的激活神經(jīng)元,因為網(wǎng)絡的輸入為1u,所以用戶u的權重增量為:
(27)
本文神經(jīng)網(wǎng)絡同時處理一批樣本,設一個Mini batch的樣本量為p,從U中隨機選擇p個用戶,隨機選擇每個用戶的正項目和負項目,訓練程序每次迭代中處理一個Mini patch。
協(xié)同過濾的矩陣分解模型在預測評分的程序中引入偏置項,有助于提高預測的準確性,并且能夠加快訓練的速度。偏置項將評分預測劃分為多個元素:用戶-項目-交互項、用戶偏置、項目偏置和全局偏置,用戶偏置和項目偏置可理解為全局偏置的平均偏差。
本文增加一個偏置層,該層聚集所有的偏置項,偏置層位于項目層和排序?qū)又g,根據(jù)相關的偏置項修改項目層的激活值。修改式(16)可獲得偏置層的輸出:
(28)
(29)
式中:bg表示全局偏置;bU為用戶偏置;bI為項目偏置。排序?qū)拥妮敵鲎優(yōu)椋?/p>
(30)
(31)
(32)
貝葉斯個性化排序(Bayesian Personalized Ranking,BPR)表示為:
(33)
式中:Θ表示所有的模型參數(shù)。推導矩陣分解模型的所有權重,可獲得:
(34)
(35)
式中:p為用戶權重;q為項目權重。
根據(jù)文獻[13]的分析和結(jié)論,本文的神經(jīng)網(wǎng)絡實現(xiàn)了貝葉斯個性化排序的效果。
本文實驗的操作系統(tǒng)為Ubuntu 16.04,基于Pytorch verson 0.4.1實現(xiàn)本文的神經(jīng)網(wǎng)絡模型,Pytorch能夠完全占用GPU來加速模型的訓練過程,實驗采用Nvidia Quadro M6000的GPU,GPU訓練一個epoch的速度大約是32核CPU的5倍。采用Pytorch缺省的L2正則化和Adam優(yōu)化器實時更新神經(jīng)網(wǎng)絡的權重。
實驗中對Aadm優(yōu)化器的學習率、隱層神經(jīng)元數(shù)量和批大小3個超參數(shù)進行專門的調(diào)節(jié),其他超參數(shù)采用Pytorch的缺省值。超參數(shù)的優(yōu)化步驟為:人工設置初始化的超參數(shù);設計局部搜索算法進行優(yōu)化處理。局部搜索算法的具體過程為:選擇一個參數(shù),隨機將該參數(shù)增大或者減小10%,如果網(wǎng)絡的AUC性能得以提升,則持續(xù)該參數(shù)的變化方式;如果性能下降,則進行相反的變化方式,重復10次,選擇其中性能最好的兩個參數(shù)值。實驗發(fā)現(xiàn)參數(shù)值的差異較小,最終學習率設為0.01,隱藏層的神經(jīng)元數(shù)量設為K=100,批大小為500。
采用Netflix數(shù)據(jù)集作為benchmark數(shù)據(jù)集,該數(shù)據(jù)集共包含100 480 507個評分、17 770部電影和480 189名用戶。數(shù)據(jù)集也含有用戶對電影評分的時間戳。
選擇4個與本文接近的推薦系統(tǒng)作為對比,分別為:(1) 基于隱馬爾可夫模型的推薦系統(tǒng)[14],簡稱為HMM。本文也采用隱馬爾可夫模型對上下文進行建模和預測,以驗證本文方法的上下文預測效果。(2) 基于模式挖掘的推薦系統(tǒng)[15],簡稱為Pattern Mining。模式挖掘是一種常用的多樣性推薦系統(tǒng),該方法用來驗證本文方法的多樣性效果。(3) 基于貝葉斯個性化排序和矩陣分解的推薦系統(tǒng)[16],簡稱為BPRMF。貝葉斯個性化排序是一種經(jīng)典的個性化排序模型,本文的神經(jīng)網(wǎng)絡也滿足貝葉斯個性化排序的條件,用來驗證本文方法的個性化推薦效果。(4) 基于k近鄰的推薦系統(tǒng)[17],簡稱為KNN。KNN是一種以推薦準確率為首要目標的推薦系統(tǒng),是目前最常見的推薦系統(tǒng)類型。
采用了推薦系統(tǒng)領域常用的3個性能指標評價推薦結(jié)果的準確性,分別為精度(P)、召回率(R)和F1-measure(Fm)。分別統(tǒng)計了top-5和top-10推薦結(jié)果的準確性。
采用流形偏置方法[18]評價推薦結(jié)果的多樣性,該方法將項目集按照頻率排序,然后均勻分為10個bin,同一個bin內(nèi)項目的流形度相似。
圖4和圖5分別為各算法top-5和top-10的推薦結(jié)果。HMM、Pattern Mining、BPRMF系統(tǒng)的推薦準確率均高于KNN算法,KNN算法僅考慮了用戶評分的相似性,而本文benchmark數(shù)據(jù)集的評分數(shù)據(jù)稀疏性較大,所以KNN的準確率較低。HMM、Pattern Mining、BPRMF系統(tǒng)均考慮了數(shù)據(jù)的潛在信息和上下文信息,因此其推薦精度、召回率和F1-measure略優(yōu)于KNN算法。本文方法設計了上下文預測機制,充分利用了benchmark數(shù)據(jù)集的時間戳信息,并且對推薦列表進行了個性化的排序,所以取得了較好的推薦準確性。
圖4 top-5推薦的準確率結(jié)果
圖5 top-10推薦的準確率結(jié)果
圖6比較了本文方法和其他推薦系統(tǒng)的多樣性??梢钥闯?,KNN的推薦項目全部為最流行的10%項目,多樣性較差;HMM考慮了數(shù)據(jù)的隱式反饋信息和上下文環(huán)境,其推薦多樣性好于Pattern Mining和BPRMF。而本文方法的推薦多樣性好于HMM算法,并且明顯考慮了長尾分布的項目,實現(xiàn)了較好的推薦多樣性。
圖6 推薦多樣性結(jié)果比較
因為Pattern Mining和KNN兩個算法并未考慮推薦結(jié)果的排序處理,所以僅將本文算法和HMM、BPRMFL兩個包含個性化排序的算法比較,結(jié)果如圖7所示。HMM系統(tǒng)將推薦準確率作為主優(yōu)化目標,將AUC作為次優(yōu)化目標,其AUC結(jié)果低于BPRMFL算法。BPRMFL則采用矩陣分解實現(xiàn)了個性化排序,其結(jié)果優(yōu)于HMM系統(tǒng)。本文方法采用神經(jīng)網(wǎng)絡實現(xiàn)了個性化排序的目標,取得了最佳的個性化結(jié)果,其原因在于神經(jīng)網(wǎng)絡的學習能力強于一般的矩陣分解技術。
圖7 推薦系統(tǒng)的個性化排序結(jié)果
本文采用兩層的隱馬爾可夫模型對推薦系統(tǒng)的上下文建模,設計了上下文的預測和推薦方法,再利用神經(jīng)網(wǎng)絡較強的學習能力,實現(xiàn)對推薦結(jié)果的個性化排序?;趯哟坞[馬爾可夫模型建模用戶在不同上下文的喜好變化,學習每個用戶狀態(tài)轉(zhuǎn)移的最大似然,根據(jù)概率分布預測用戶的下一個上下文,并產(chǎn)生預測上下文的推薦列表。此外,基于神經(jīng)網(wǎng)絡實現(xiàn)了個性化排序,其結(jié)果優(yōu)于矩陣分解的個性化排序方法。實驗結(jié)果證明,本文在保持較高推薦準確性的前提下,實現(xiàn)了較高的推薦多樣性和個性化。