周 超,武友新
(南昌大學 信息工程學院,南昌 330000)
作為一種有效應對信息過載的技術,智能推薦系統(tǒng)在電子商務、音樂推薦、視頻推薦等領域有了廣泛的應用[1].近年來,得益于深度學習在自然語言處理、圖像處理、語音識別和醫(yī)療診斷等領域取得的重大進展,越來越多的深度學習技術被應用到推薦系統(tǒng)研究中并得到較好的效果[2,3].先驅(qū)們早期的研究工作已經(jīng)探索了基于隱式反饋的深度學習模型,它們主要使用DNNs網(wǎng)絡來建模輔助信息,例如文字描述[4]、音樂的聲學特征[5]等,然后由MF與DNN相結(jié)合去學習用戶和項目的潛在特征向量,此類方法相比于傳統(tǒng)的方法能有效提升模型的命中率,但是提升效果有限.
最近的研究越來越多的將深度神經(jīng)網(wǎng)絡應用到用戶與項目的交互關系上,希望以此來提高模型的性能.Guo[6]等人提出的DeepFM是一種端到端模型,可無縫集成FM和MLP,它利用深度神經(jīng)網(wǎng)絡將FM的低階交互關系建模成具有高階特征的用戶與項目的交互關系.Deng[7]等人提出了一種DeepCF模型框架,它將特征學習與匹配函數(shù)結(jié)合在一起強化了模型的性能.He[8]等人提出了一種NCF模型,NCF模型在矩陣分解算法的基礎上使用DNN網(wǎng)絡去學習用戶與項目之間復雜的交互關系.以上模型均將深度神經(jīng)網(wǎng)絡應用到對用戶與項目復雜交互關系的建模上,提高了模型的學習能力,但是由于隱式反饋數(shù)據(jù)天然帶有很強的噪聲,所以這些模型的性能表現(xiàn)都受到了限制.
最近將自編碼器應用到推薦系統(tǒng)中的研究開始流行起來.Cao[9]等人提出了一種無監(jiān)督的深度學習方法,該方法使用棧式降噪自編碼器從原始的稀疏用戶項目交互矩陣中提取有用的低維特征,并與相似度計算算法結(jié)合以取得良好的推薦效果.Yosuke[10]等人提出了一種基于協(xié)同過濾的推薦算法,該算法利用棧式降噪自編碼器來探索不同用戶之間的相似性差異,這是因為棧式降噪自編碼器中的不同隱含層代表了具有不同抽象等級的用戶之間的關系,從而使得推薦比較新穎、多樣.
受NCF模型的啟發(fā),本文提出了基于三通道的神經(jīng)協(xié)同過濾算法(Three-channels neural collaborative filtering algorithm,TCNCF),它使用自編碼器去挖掘用戶和項目的隱表示然后結(jié)合輔助信息一起去構建用戶和項目的潛在特征向量,再然后融合廣義矩陣分解模型和多層感知機模型一起對用戶和項目建模.它將用戶和項目統(tǒng)計學信息的確定性與隱式反饋數(shù)據(jù)的隨機性相結(jié)合,提高了模型的泛化能力.面對不易挖掘的負樣本,本文將三通道協(xié)同過濾算法和負采樣算法進行結(jié)合,提高了模型的魯棒性.
三通道神經(jīng)協(xié)同過濾算法融合廣義矩陣分解(Generalized Matrix Factorization,GMF)模型、多層感知機(Multi-Layer Perceptron,MLP)模型和輔助信息處理(Auxiliary information processing,AIP)模型一起對用戶和項目建模,其模型框架如圖1所示.GMF模型將用戶項目交互矩陣通過矩陣分解映射到GMF用戶特征向量和GMF項目特征向量,然后將用戶和項目的特征向量相乘的結(jié)果輸入到激活函數(shù)Sigmoid之后再輸出到向量結(jié)合層.MLP模型首先將用戶和項目的交互矩陣映射到用戶和項目的特征向量,然后將MLP用戶特征向量和MLP項目特征向量拼接成一個新的向量作為多層感知機的輸入,將多層感知機的結(jié)果輸送到向量結(jié)合層.AIP模型首先利用自編碼器重構用戶和項目的評分向量得到用戶和項目的隱表示,再將其與用戶和項目的輔助信息對應的輔助信息特征向量結(jié)合輸入到多層感知機中,最后的結(jié)果輸入到向量結(jié)合層.向量結(jié)合層將3個模型輸送過來的數(shù)據(jù)以向量拼接的方式輸入到Sigmoid函數(shù)中,最后輸出用戶與項目交互的預測結(jié)果.
傳統(tǒng)的矩陣分解(Matrix Factorization,MF)算法將評分矩陣分解為兩個低維矩陣P和Q,它們分別代表了用戶和項目的特征向量矩陣,則評分矩陣R為它們乘積,即:
R=PTQ
(1)
矩陣分解算法的目的就在于求得用戶與項目的特征向量矩陣,然后將其相乘得到預測評分矩陣.將用戶對項目的預測評分排序,從而為用戶推薦預測評分最高的N個項目.廣義矩陣分解模型將傳統(tǒng)矩陣分解模型一般化,它具有更強的學習和表達能力,其公式如下:
φGMF=aout(hT(pu·qi))
(2)
其中,pu和qi分別代表了用戶和項目的特征向量,·代表向量點乘,aout和h分別表示輸出層的激活函數(shù)和連接權重.如果將aout看成一個恒等函數(shù),h的權重值為1,就得到傳統(tǒng)的MF模型.GMF模型可以從數(shù)據(jù)中學習并且形成MF的變體,它可以表現(xiàn)出特征向量不同維度的重要性的不同.如果用一個非線性函數(shù)作為激活函數(shù),將進一步推廣MF到非線性空間,使得模型較傳統(tǒng)MF模型具有更廣闊的搜索空間.在本模型中,它使用Sigmoid函數(shù)作為激活函數(shù).
在隱式反饋下,用戶與項目之間的交互變得更加復雜.在這種背景下,如何將表征用戶和項目之間的交互的函數(shù)擴展到非線性空間顯得尤為重要.多層感知器的優(yōu)點是可以從數(shù)據(jù)中學習非常復雜的非線性表示,因此非常適合用來學習用戶與項目之間的交互關系.多層感知器模型,不再簡單地使用向量乘積來表達用戶與物品之間的復雜交互,而是將向量結(jié)合輸入到多層感知器中去學習用戶和項目的高級交互關系.這樣做的好處就是可以利用DNNs強大的學習能力將用戶和項目的建模擴展到更復雜的非線性空間.其函數(shù)表達式如下:
(3)
其中φMLP代表多層感知機模型預測結(jié)果,wi、bi和f分別代表了連接權重、偏置值和激活函數(shù).對于MLP層的激活函數(shù),我們選擇Relu函數(shù),使模型不至于過擬合.
隱式反饋數(shù)據(jù)一個很嚴重的問題在于用戶與項目之間的交互矩陣具有很強的噪音.如果僅依靠交互矩陣來建模用戶與項目之間的交互關系,可能會導致較大的偏差.眾所周知,用戶和項目的輔助信息包含很多重要信息,可以從中挖掘出許多反映用戶和項目特征的信息.另外,用戶和項目的輔助信息具有較高的可靠性,科學的輔助信息處理可以對推薦結(jié)果產(chǎn)生積極的影響.例如,用戶的人口統(tǒng)計信息可以挖掘用戶的偏好,不同年齡、性別和職業(yè)的人的偏好可能完全不同.出于相似的原因,項目的輔助信息也可以反映項目的特征信息.因此,我們考慮采用輔助信息處理模型通道來挖掘用戶與項目輔助信息特征.
當前,自編碼器廣泛用于基于深度學習的推薦系統(tǒng)中[11,12].自動編碼器具有強大的表示學習能力,可用于學習用戶和項目的隱含向量.因此,本文提出了一種基于自動編碼器的輔助信息處理模型.首先,我們使用自編碼器重構用戶和項目的評分向量(用戶的評分向量對應的是交互矩陣中的列,項目的評分向量對應的是交互矩陣中的行),從而獲得用戶和項目的隱含向量,將其與數(shù)值化處理后的輔助信息的特征向量結(jié)合,然后輸入到多層感知器中.該框架如圖1所示,具體公式如下:
(4)
(5)
式中φAIP代表AIP模型的預測結(jié)果,hu、hi、Au和Ai分別表示用戶的隱含向量、項目的隱含向量、用戶的特征向量和項目的特征向量.hu和hi是從自編碼器中獲得的,就是公式(4)中的f(wiRi+b1).
采用多通道融合的方法對用戶和項目建模已經(jīng)廣泛的應用在基于深度學習的推薦系統(tǒng)中.在本模型中,GMF用來學習用戶與項目之間的低階交互關系,MLP用來學習用戶與項目之間的高階交互關系,AIP通過輔助信息來挖掘用戶與項目之間潛在的交互關系.為了更好的發(fā)揮各個模型的性能,它們之間的融合十分關鍵.在本模型中多通道融合仍然采用向量結(jié)合的方式,具體公式如下:
(6)
式中φGMF、φMLP和φAIP代表GMF、MLP和AIP的輸出結(jié)果,它們之間的關系靠連接權重h來平衡.σ代表激活函數(shù) Sigmoid.這里將Sigmoid函數(shù)作為最后輸出結(jié)果的激活函數(shù)是因為考慮到最后的輸出結(jié)果的值在0-1之間,可以看作是概率模型,使用Sigmoid函數(shù)更合理.
圖1 TCNCF模型框架Fig.1 TCNCF model framework
本文的損失函數(shù)定義如下:
(7)
式中y代表在交互矩陣Y中值為1的項目,就是用戶交互過的項目.y-代表負樣本,即用戶與項目沒有交互記錄.我們之所以這樣定義損失函數(shù),是因為隱式反饋數(shù)據(jù)下,模型的輸出更像是一個概率預測模型,使用似然函數(shù)取對數(shù)作為損失函數(shù)更合理.模型的訓練通過最小化損失函數(shù)來完成,這里使用隨機梯度下降進行參數(shù)訓練.
隱式反饋數(shù)據(jù)與顯式反饋數(shù)據(jù)不一樣的地方在于,隱式反饋的數(shù)據(jù)只有用戶對項目的交互記錄,它并不能反映出用戶對項目的真實感受,為了更好的對用戶和項目建模,科學的負采樣至關重要.傳統(tǒng)隱式反饋數(shù)據(jù)負樣本的采集一般采用以下兩種方式:1)將所有的未觀察到(用戶與該項目沒有交互記錄)的項目視為負樣本,然后隨機抽樣;2)根據(jù)項目的流行度來采樣,該方法認為流行度越高的項目在用戶記錄中未觀察到則其為負樣本的概率越大,然而這樣就忽略了用戶的個性化,因為對于熱門的項目來說,所有沒有與之交互的用戶都有很高的概率將其視為負樣本,這樣顯然不合理.本文將三通道神經(jīng)協(xié)同過濾算法與Tran[13]等人提出負樣本采集方法結(jié)合,以此來緩解隨機負采樣對模型的影響,具體做法如下:首先,假定那些在預測評分排名中評分較低的項目有很高的概率是用戶的負樣本,然后利用訓練好的廣義矩陣分解模型得到用戶對項目的預測評分,在隱式反饋中它可以看成用戶與項目交互的概率,對預測評分由小到大排序,預測評分越小的項目用戶與之交互的概率越小,作為用戶負樣本的概率就越大,其概率計算公式如下:
(8)
式中ru[i]表示項目i在用戶u的預測評分排名中的位置,位置越前,為負樣本的概率越大,然后按概率選取負樣本即可.
本文使用MovieLens電影評分公開數(shù)據(jù)集作為實驗數(shù)據(jù)集[14],使用的是包含百萬個評分數(shù)據(jù)的ML-1M版本,每個用戶至少有20個評分記錄,相關信息見表1.這是顯式反饋數(shù)
表1 數(shù)據(jù)集統(tǒng)計信息Table 1 Statistics of datasets
據(jù)集,我們需要將其轉(zhuǎn)換為隱式反饋數(shù)據(jù)集,做法如下:將用戶對項目有過評分的項目標簽值記為1,否則記為0,由此來構建用戶項目交互矩陣.用戶的輔助信息包括職業(yè)、年齡和性別,項目的輔助信息為電影的類型.
本次實驗使用留一法來評估模型性能表現(xiàn),將用戶最近的一次交互記錄作為測試集,其余全部作為訓練集.我們在top-k推薦中,為每個用戶隨機選取100個沒有交互過的項目,然后與測試項目一起進行排序去決定top-k推薦項目.本文使用HR(Hit Rate)和NDCG(Normalized Distributed Cumulative Gain,NDCG)這兩個常用的排序性能指標來評價模型,HR直觀地衡量測試項目是否存在于top-k列表中,而NDCG用來評價排序性能的好壞,其值越高,測試項目位置越靠前,k取值為10,具體公式如下:
(9)
(10)
(11)
其中number-of-hit@k代表測試項目在推薦項目列表前10的用戶數(shù)量,|u|代表總的用戶數(shù)量,idealDCG@k代表的是按照相關性等級排序得到的折扣累計增益,r(i)是處于位置i的項目的相關性等級.
我們將TCNCF模型與以下算法模型進行比較:
1)NCF,神經(jīng)協(xié)同過濾模型,它將GMF與MLP結(jié)合去挖掘用戶與項目之間復雜的交互函數(shù).
2)DHA-RS[15],一種改進的神經(jīng)協(xié)同過濾模型,利用自編碼器對輔助信息處理,然后聯(lián)合GMF或MLP對用戶項目建模.
3)JRL[16],一種融合多種異構信息的神經(jīng)協(xié)同過濾模型.
本次實驗對每個用戶按照正負樣本1∶4來構建訓練集,使用負采樣方法按概率選取負樣本,通過優(yōu)化損失函數(shù)來更新模型參數(shù).對于一些超參數(shù),我們根據(jù)經(jīng)驗設置如下:批次大小設置為[128,256,512,1024],與之對應的預測因子大小為[8,16,32,64],與之相對應的學習率設置為[0.0001,0.0005,0.001,0.005],MLP和AIP隱含層設為3層.MLP各層的結(jié)點數(shù)按最后一層為預測因子數(shù)的一半、前一層為后一層的兩倍這樣的關系來設置(例如,當預測因子為8時,MLP各層的結(jié)點數(shù)為32/16/8,相應的嵌入向量的維度為16).AIP自編碼器隱含層的維度大小設置為預測因子大小的兩倍,輔助信息特征向量維度大小8,AIP多層感知機各層的結(jié)點數(shù)按前一層為后一層的兩倍的關系來設置,則當預測因子維度為8時,AIP感知機各層結(jié)點數(shù)為48/24/12.
本文將TCNCF模型與其他模型進行對比實驗,通過改變預測因子的維度大小來觀測模型的性能變化,從而對比不同模型之間的性能表現(xiàn).圖2反映的是各模型HR隨著預測因子維度變化而變化的情況.HR@10反映的是各模型的測試項目是否在排名列表前10,將所有測試項目在用戶排名列表前10的用戶數(shù)除上總的用戶數(shù),就可以得到HR@10,所以HR@10可以從整體上評價模型的準確度.從圖2中我們可以看出,隨著預測因子的維度變大,各模型的命中率也跟著上升,其中TCNCF模型相對于其他模型表現(xiàn)更佳.相比于NCF模型,TCNCF模型在命中率上提升了3.48%.
圖2 模型在HR@10的結(jié)果Fig.2 Results of the model on HR@10
圖3反映的是各模型NDCG隨著預測因子變化而變化的趨勢.NDCG是排序上常用評價指標,它反映的是排序質(zhì)量的問題.對于本文來說,NDCG反映的是測試項目在推薦列表中排名是否靠前,其值越大越靠前,說明排序質(zhì)量越高.從圖3中可以看出,隨著預測因子的增大,各模型的NDCG都呈現(xiàn)上升趨勢,并且TCNCF模型較其他模型在排序質(zhì)量上有明顯的提升.相比于NCF模型,TCNCF模型在NDCG上提升了4.56%.
圖3 模型在NDCG@10上的結(jié)果Fig.3 Results of the model on NDCG@10
圖4給出了推薦列表長度k的取值對模型命中率表現(xiàn)的影響.從圖4中我們可以看出,隨著k值的增大,各模型的命中率逐漸上升且趨于緩和,同時各模型的表現(xiàn)開始逐漸接近.一般而言,我們更關注排名列表前10的項目,即各模型在k取值為10以內(nèi)的命中率表現(xiàn),從圖4中可以看出,TCNCF模型在k取值小于10內(nèi)的命中率表現(xiàn)相比與其他模型具有明顯的優(yōu)勢.
圖4 模型在HR@k的結(jié)果Fig.4 Results of the model on HR@k
圖5展示了推薦列表長度k的取值對模型排序質(zhì)量的影響.從圖中我們可以看出,隨著k值的增大,各模型在NDCG上的性能表現(xiàn)開始趨于穩(wěn)定且TCNCF模型性能表現(xiàn)相比于其他模型有較為明顯的優(yōu)勢.對比圖4和圖5,我們可以看出,雖然各模型在命中率上表現(xiàn)趨于接近的狀態(tài),但是在NDCG上TCNCF模型相比與其他模型有明顯的優(yōu)越性,這說明TCNCF模型的測試項目在排名列表中的位置相對靠前,也就是說TCNCF模型的排序性能相比于其他模型更好.
圖5 模型在NDCG@k的結(jié)果Fig.5 Results of the model on NDCG@k
表2 消融實驗Table 2 Ablation experiment
為了更好的區(qū)分輔助信息處理和負采樣對模型性能的影響,我們做了一組消融實驗,結(jié)果如表2所示.表2中NCF+NS代表的是采用基于MF概率負采樣的NCF模型,NCF+AIP代表的是融合輔助信息處理的NCF模型.NCF模型采用的是隨機負采樣方法,NCF+NS實驗結(jié)果表明采用基于MF概率負采樣的方法相比于隨機負采樣可以提高模型的命中率和排序效果.NCF+AIP實驗結(jié)果表明融合輔助信息后可以提高模型的效果,它提升的效果比改變負采樣的那組要更好,這說明在隱式反饋下,用戶和項目的輔助信息可以幫助模型更好的學習用戶和項目的交互關系.TCNCF模型融合三通道神經(jīng)協(xié)同過濾算法以及負采樣方法,在HR@10和NDCG@10取得了最佳表現(xiàn).
針對隱式反饋數(shù)據(jù)帶有天噪音不利于模型學習的問題,本文提出了TCNCF模型,該模型采用自編碼器對輔助信息進行處理然后與傳統(tǒng)的NCF模型融合,提高了模型的泛化能力.面對不易挖掘的負樣本,該模型采用了一種基于矩陣分解的按概率負采樣方法,以此來提高模型的魯棒性.本文通過多組實驗,驗證了三通道神經(jīng)協(xié)同過濾算法的有效性,與其他基準模型相比,TCNCF模型的命中率和排序性能明顯提升,特別是相比于傳統(tǒng)的NCF模型,TCNCF在HR@10和NDCG@10上分別提升了3.48%和4.56%.在今后的工作中,將考慮將時間權重融合到模型中,以此來緩解用戶興趣遷移的問題,提升推薦性能.