倪美玉,曹為剛
(浙江科貿(mào)職業(yè)技術(shù)學(xué)院,金華 321019)
隨著信息技術(shù)和互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,數(shù)據(jù)規(guī)模急劇增加,信息過(guò)載嚴(yán)重,推薦系統(tǒng)是解決問(wèn)題重要技術(shù)手段[1,2].當(dāng)前,在各大電商平臺(tái)中推薦系統(tǒng)中推薦算法的好壞對(duì)電子商務(wù)發(fā)展有著十分深遠(yuǎn)的影響.個(gè)性化推薦是根據(jù)用戶的需求,從海量信息中挖掘出用戶感興趣的商品或服務(wù),并按照評(píng)分預(yù)測(cè)結(jié)果進(jìn)行個(gè)性化展示.推薦算法是個(gè)性化推薦的核心,直接決定了推薦系統(tǒng)的推薦性能,成為當(dāng)前研究的熱點(diǎn)問(wèn)題[3,4].
協(xié)同過(guò)濾是目前個(gè)性化推薦系統(tǒng)普遍采用的技術(shù),其基本思想是利用過(guò)去具有相同興趣的用戶會(huì)在未來(lái)選擇相似的商品.典型的協(xié)同過(guò)濾類算法是基于矩陣分解的協(xié)同過(guò)濾推薦模型,該模型首先分別表征用戶和商品特征,然后借助用戶和商品特征向量的點(diǎn)積預(yù)測(cè)評(píng)分矩陣,具有較好的推薦性能,但評(píng)分?jǐn)?shù)據(jù)稀疏性問(wèn)題一直制約傳統(tǒng)協(xié)同過(guò)濾的瓶頸[5].深度學(xué)習(xí)技術(shù)近年來(lái)被用于解決個(gè)性化商品推薦問(wèn)題,基于深度學(xué)習(xí)的混合推薦模型被相繼提出,例如DeepCoNN[6]、DLALSTM[7]、NARRE[8]等.這些模型均是首先利用深度學(xué)習(xí)技術(shù)將用戶對(duì)商品的評(píng)論數(shù)據(jù)變換到隱空間,得出評(píng)分矩陣后再利用傳統(tǒng)推薦模型完成個(gè)性化推薦,但靜態(tài)詞向量編碼影響了評(píng)分矩陣估計(jì)性能,降低了推薦系統(tǒng)的準(zhǔn)確性.
本文提出了一種基于深度神經(jīng)網(wǎng)絡(luò)和動(dòng)態(tài)協(xié)同濾波的混合個(gè)性化商品推薦模型.文章后續(xù)章節(jié)安排如下:第1 節(jié)總體介紹了文中混合個(gè)性化推薦模型架構(gòu),第2 節(jié)給出了基于深度學(xué)習(xí)的用戶與商品隱含特征提取方法,第3 節(jié)構(gòu)建了基于動(dòng)態(tài)協(xié)同過(guò)濾的商品推薦模型,第4 節(jié)通過(guò)實(shí)驗(yàn)驗(yàn)證了推薦模型的參數(shù)設(shè)置和推薦性能,最后是總結(jié).
目前協(xié)同過(guò)濾的商品推薦算法的關(guān)鍵是對(duì)商品評(píng)分的預(yù)測(cè),主要存在以下3 個(gè)方面問(wèn)題.首先,評(píng)分矩陣稀疏性問(wèn)題.評(píng)論數(shù)據(jù)稀疏性是影響個(gè)性化商品推薦系統(tǒng)最終評(píng)分預(yù)測(cè)準(zhǔn)確性的關(guān)鍵因素,這是由于平臺(tái)中的商品數(shù)量遠(yuǎn)遠(yuǎn)大于單個(gè)用戶的評(píng)論數(shù)量,導(dǎo)致評(píng)論數(shù)據(jù)呈現(xiàn)出十分明顯的稀疏性,進(jìn)而影響用戶與商品、用戶與用戶之間的關(guān)系量不足,降低商品評(píng)分預(yù)測(cè)結(jié)果的準(zhǔn)確性.其次,冷啟動(dòng)問(wèn)題.引發(fā)推薦系統(tǒng)冷啟動(dòng)主要有兩個(gè)原因,即新用戶和新商品.在商品推薦平臺(tái)中,每天都有新用戶注冊(cè),同樣也有新商品上架.系統(tǒng)無(wú)法新商品或新用戶的興趣程度.最后,信息過(guò)期問(wèn)題.隨著時(shí)間的推移,用戶的興趣偏好或者商品的受歡迎程度均會(huì)出現(xiàn)變化,而傳統(tǒng)推薦算法沒(méi)有考慮這種變化帶來(lái)的影響.
針對(duì)上述問(wèn)題,本文提出了基于卷積神經(jīng)網(wǎng)絡(luò)和動(dòng)態(tài)協(xié)同過(guò)濾的個(gè)性化商品推薦模型,模型架構(gòu)如圖1所示.
首先將用戶評(píng)論和商品評(píng)論文本信息用BERT 模型和雙向GRU 進(jìn)行處理,利用并行卷積神經(jīng)網(wǎng)絡(luò)分別提取用戶和商品的隱含特征向量;然后,引入用戶對(duì)商品的評(píng)分行為,采用TimeSVD++算法實(shí)現(xiàn)最終的商品評(píng)分預(yù)測(cè).該模型通過(guò)卷積神經(jīng)網(wǎng)絡(luò)在捕獲用戶和商品的隱含特征向量,以降低用戶對(duì)商品評(píng)分矩陣預(yù)測(cè)過(guò)程中存在的數(shù)據(jù)稀疏性和冷啟動(dòng)問(wèn)題;在協(xié)同過(guò)濾過(guò)程中融入時(shí)間序列,降低商品推薦過(guò)程中信息過(guò)程帶來(lái)的影響.
詞袋模型是典型的詞分法評(píng)論文本處理模型,但該模型對(duì)文本中的詞語(yǔ)順序不敏感,經(jīng)常將意思完全相反的文本用相同的詞向量表示[9].并且評(píng)論文本的噪聲大、網(wǎng)絡(luò)用語(yǔ)多也嚴(yán)重影響了詞分法的文本處理性能.為此,文中采用雙向GRU的文本處理模型[10],如圖2所示.由于用戶評(píng)論和商品評(píng)論是具有相似結(jié)構(gòu)的兩個(gè)平行模型,因此只介紹商品評(píng)論文本的處理過(guò)程.
圖2 商品評(píng)論處理過(guò)程
令I(lǐng)表示某商品的評(píng)論集:
其中,Rij(j=1,2,···,d)表示單條評(píng)論,d表示模型設(shè)置的最大評(píng)論個(gè)數(shù).將商品評(píng)論數(shù)據(jù)輸入到BERT 映射模型[5],將單條評(píng)論數(shù)據(jù)轉(zhuǎn)換為向量形式:
在BERT 映射過(guò)程中,如果商品評(píng)論個(gè)數(shù)大于d,則只映射該商品的前d條評(píng)論;如果商品評(píng)論個(gè)數(shù)小于d,則通過(guò)填充零向量使映射后向量長(zhǎng)度等于d.
考慮到評(píng)論之間的內(nèi)在聯(lián)系,采用雙向GRU 對(duì)BERT 映射后的向量記性編碼.編碼過(guò)程包括前向和后續(xù)兩部分,其中前向按照正序處理(Oi1→Oid),后向按照逆序處理(Oid→Oi1),分別獲得編碼后的序列hfi和hbi.接下來(lái),通過(guò)拼接獲取評(píng)論向量特征:
經(jīng)過(guò)雙向GRU 編碼后的特征向量可以表示為:
已知每一條商品評(píng)論的內(nèi)容均具有各自特征,即均隱含了對(duì)商品的不同偏好的貢獻(xiàn),因此采用自注意力機(jī)制對(duì)特征向量進(jìn)行信息匯總,匯總后得出的注意力向量可以表示為:
其中,ω1和ω2均 表示維度符合要求的權(quán)值參數(shù),softmax()表示基于注意力機(jī)制的歸一化處理.注意力向量中包含了評(píng)論對(duì)商品偏好的貢獻(xiàn),將同一商品的隱藏特征向量進(jìn)行加權(quán)求和后,并后接一個(gè)全連接層,即可得出評(píng)論集u對(duì)商品的最終隱含特征向量
其中,W′和b′分別表示全連接層的權(quán)值參數(shù)和偏置參數(shù).同理,可以按照相同方式獲得評(píng)論集對(duì)用戶的最終隱含特征向量Utext.
按照上一節(jié)文本處理方式分別獲得用戶和商品的偏好表達(dá)式后,本節(jié)首先基于卷積神經(jīng)網(wǎng)絡(luò)提取用戶和商品的深層次特征,并利用共享層將其映射到相同的特征空間后進(jìn)行評(píng)分矩陣預(yù)測(cè).
將最終隱含特征向量輸入到卷積神經(jīng)網(wǎng)絡(luò)以提取其深層次特征,假設(shè)卷積神經(jīng)網(wǎng)絡(luò)的卷積層的神經(jīng)元個(gè)數(shù)為m,第j個(gè)神經(jīng)元的卷積核為Kj∈Rc×d,其中d為隱含特征向量的維度.對(duì)于隱含特征向量Itext(以商品為例),各個(gè)卷積核的輸出為:
其中,G(·)和bj分別表示卷積核的激活函數(shù)和偏置項(xiàng),文中激活函數(shù)采用線性整流函數(shù)ReLU,具體為:
ReLU 能有效避免訓(xùn)練過(guò)程中出現(xiàn)梯度消失和梯度爆炸現(xiàn)象,并且能夠顯著提升隨機(jī)梯度下降算法的收斂速度,降低模型訓(xùn)練時(shí)間[11].
接下來(lái),對(duì)卷積運(yùn)算后的特征向量進(jìn)行池化操作,采用最大池化法提取特征向量中的最大值作為特定卷積內(nèi)核的特征.經(jīng)過(guò)最大池化操作后,卷積層的輸出結(jié)果被轉(zhuǎn)化為長(zhǎng)度固定的向量,池化操作可以表示為:
根據(jù)上述卷積操作與池化操作過(guò)程可知,卷積層將輸出的特征向量經(jīng)過(guò)最大池化操作后,文本信息中特征最強(qiáng)的信息被篩選出來(lái),而特征較弱的信息在池化操作過(guò)中被濾除.為了保證文本信息的完整性,文中采用多個(gè)并行卷積神經(jīng)網(wǎng)絡(luò)來(lái)獲得文本信息的各種特征,這是因?yàn)槎鄠€(gè)并行的卷積層能夠提取出不同的局部信息,并行卷積層的輸出特征集合可以表示為:
其中,M表示并行卷積層中卷積核的個(gè)數(shù).
池化層的輸出被導(dǎo)入全連接層,令W表示全連接層的權(quán)值矩陣,則全連接層的輸出可以表示為:
其中,f(·)和b分別為全連接層的激活函數(shù)和偏置項(xiàng).上述是以商品為例獲得的深層特征XI,同樣將用戶評(píng)論文本輸入,能夠得到用戶評(píng)論的深層特征XU.
雖然深層特征XI和XU均源自于評(píng)論數(shù)據(jù),但是對(duì)用戶和商品兩個(gè)不同映射空間的特征表示,并不具有可比性,必須在評(píng)分預(yù)測(cè)之前將其變換到相同的特征空間中.為此,文中采用共享層對(duì)用戶評(píng)論數(shù)據(jù)的隱含特征和商品評(píng)論數(shù)據(jù)的隱含特征進(jìn)行耦合操作,即將XI和XU耦合為單個(gè)特征向量Z=(XI,XU).
動(dòng)態(tài)協(xié)同過(guò)濾算法是在SVD++算法的基礎(chǔ)上,增加了時(shí)間序列項(xiàng),因此被稱為TimeSVD++算法[12].TimeSVD++算法是由簡(jiǎn)單的因子分解模型演化而來(lái)的,假設(shè)已經(jīng)獲得用戶對(duì)商品的評(píng)分預(yù)測(cè)矩陣r∈RN×M,其中N和M分別表示用戶個(gè)數(shù)和商品個(gè)數(shù),矩陣中rui代表用戶u對(duì)商品i的評(píng)分預(yù)測(cè)值.
通過(guò)卷積神經(jīng)網(wǎng)絡(luò)處理評(píng)論文本信息,得出的用戶和商品的深層特征向量分別為XI和XU,利用共享層耦合后并采用因子分解機(jī)得出用戶對(duì)商品的評(píng)分矩陣預(yù)測(cè)值.TimeSVD++算法首先需要降低和rui之間的誤差,獲取最優(yōu)的評(píng)分預(yù)測(cè),具體過(guò)程可以表示為:
在評(píng)分預(yù)測(cè)過(guò)程中加入偏置項(xiàng),即構(gòu)成SVD 模型:
式中,u為訓(xùn)練過(guò)程中用戶對(duì)商品評(píng)分預(yù)測(cè)值的均值,bu和bi分別表示用戶偏置項(xiàng)和商品偏置項(xiàng),表示一個(gè)用戶或一個(gè)商品的評(píng)分預(yù)測(cè)值的均值.
SVD++算法在SVD 模型的基礎(chǔ)上,通過(guò)隱式反饋信息加入了用戶興趣信息.也就是說(shuō),任意一個(gè)用戶只要對(duì)某個(gè)商品進(jìn)行過(guò)評(píng)論,不管評(píng)論內(nèi)容的評(píng)分預(yù)測(cè)值高低,均表示用戶對(duì)該商品感興趣,感興趣的程度用隱因子來(lái)表示此時(shí),用戶對(duì)商品的評(píng)分預(yù)測(cè)模型修正為:
式中,N(u)表示用戶u評(píng)價(jià)過(guò)的所有商品的集合.
TimeSVD++算法的基本思路是隨著時(shí)間的推移,用戶對(duì)商品的喜好程度也是變化的,即式(15)中XU、bu和bi不再是固定量,而是一個(gè)關(guān)于時(shí)間的函數(shù),但商品特征向量XI不隨時(shí)間變化.由此可見(jiàn),TimeSVD++算法中融入了時(shí)間序列項(xiàng),因此在預(yù)測(cè)用戶對(duì)商品的評(píng)分過(guò)程中需要沿著時(shí)間軸劃分出多個(gè)時(shí)間段,在各個(gè)時(shí)間段內(nèi)對(duì)商品評(píng)分進(jìn)行預(yù)測(cè).劃分后的時(shí)間段用Bin(t)表示,XU、bu和bi值在同一個(gè)時(shí)間段內(nèi)相同,不同時(shí)間段內(nèi)不同.考慮時(shí)間序列項(xiàng)的TimeSVD++算法評(píng)分預(yù)測(cè)過(guò)程如下:
其中,bi(t)和bu(t)分別表示商品和用戶在t時(shí)刻的偏置,均由靜態(tài)部分和動(dòng)態(tài)部分組成,即:
式中,bi,Bin(t)表示商品在時(shí)間段Bin(t)內(nèi)的偏置,tu表示用戶給出所有評(píng)分的均值.
TimeSVD++算法在獲取評(píng)分預(yù)測(cè)值后,通過(guò)式(19)最小化預(yù)測(cè)值與真實(shí)值之間的誤差:
為了驗(yàn)證本文提出的深度神經(jīng)網(wǎng)絡(luò)和動(dòng)態(tài)協(xié)同濾波(DEEP-TimeSVD++)的個(gè)性化商品推薦模型有效性,使用亞馬遜公共數(shù)據(jù)集中的子數(shù)據(jù)集Toys_and_Games和Instant_Video,兩個(gè)數(shù)據(jù)集中約有78.3%的商品評(píng)論數(shù)量少于20 條,67.1%的商品評(píng)論數(shù)量少于10 條,滿足用戶對(duì)商品評(píng)論稀疏性要求.
后續(xù)實(shí)驗(yàn)中采用均方誤差(MSE)作為評(píng)價(jià)模型對(duì)商品評(píng)分預(yù)測(cè)準(zhǔn)確性的指標(biāo),該指標(biāo)定義如下:
式中,N表示實(shí)驗(yàn)過(guò)程中樣本個(gè)數(shù).模型的MSE越小,說(shuō)明模型的商品評(píng)分預(yù)測(cè)性能越好.
文中實(shí)驗(yàn)環(huán)境的具體參數(shù)如表1所示.
表1 實(shí)驗(yàn)環(huán)境參數(shù)
針對(duì)評(píng)論文本的評(píng)分預(yù)測(cè)問(wèn)題,文中提出采用BERT映射結(jié)合雙向GRU(BERT-GRU)提出評(píng)論文本特征,本節(jié)將其與不同文本處理模型進(jìn)行對(duì)比測(cè)試,包括預(yù)訓(xùn)練詞向量結(jié)合CNN 模型(Word-CNN)、預(yù)訓(xùn)練詞向量結(jié)合CNN 模型(Word-GRU)、BERT 映射結(jié)合CNN 模型(BERT-CNN).4 種文本處理模型的性能對(duì)比結(jié)果如表2所示.
根據(jù)4 種模型的文本處理性能結(jié)果可知,加入BERT 映射的文本處理模型相比傳統(tǒng)預(yù)訓(xùn)練詞向量模型的文本處理性能得到了進(jìn)一步提高,這是因?yàn)閭鹘y(tǒng)詞向量模型在多義詞影響下不能準(zhǔn)確給出同一詞語(yǔ)在不同環(huán)境下的真實(shí)含義,而采用BERT 映射能夠有效解決該問(wèn)題,提升對(duì)評(píng)論文本的語(yǔ)義理解能力.對(duì)比BERT-CNN和BERT-GRU 可知,雙向GRU 模型比傳統(tǒng)CNN 模型的文本處理性能更佳,這是因?yàn)槟硞€(gè)商品的評(píng)論集處理本質(zhì)上是一個(gè)序列處理問(wèn)題,而雙向GRU 中的RNN 遞歸結(jié)構(gòu)比CNN 結(jié)構(gòu)更適合于表征序列特征,能夠有效提取評(píng)論文本之間的聯(lián)系,提高文本處理性能.
表2 文本處理性能對(duì)比結(jié)果
本節(jié)對(duì)模型涉及到的隱因子、時(shí)間段劃分和學(xué)習(xí)率進(jìn)行測(cè)試,分析不同參數(shù)取值對(duì)實(shí)驗(yàn)結(jié)果的影響.其中隱因子的測(cè)試范圍為[ 5,10,15,20],時(shí)間段劃分的測(cè)試范圍為[ 10,15,20,25].
圖3為不同隱因子下本文提出的DEEP-TimeSVD++算法MSE指標(biāo)的變化情況.結(jié)果表明,當(dāng)隱因子取值為15 時(shí),DEEP-TimeSVD++算法對(duì)Toys_and_Games和Instant_Video的MSE分別為0.85和0.93,均達(dá)到最小.對(duì)比圖3可知,當(dāng)隱因子取值為5、10和20 時(shí),DEEP-TimeSVD++算法的MSE變化并不是很大,說(shuō)明DEEP-TimeSVD++算法對(duì)隱因子設(shè)置敏感性低,綜合考慮推薦性能,后續(xù)實(shí)驗(yàn)中將隱因子a設(shè)置為15.
圖3 隱因子對(duì)算法性能影響
圖4為不同時(shí)間段劃分的DEEP-TimeSVD++算法MSE指標(biāo)的變化情況.結(jié)果表明,Toys_and_Games和Instant_Video 數(shù)據(jù)集在Bin(t)為20 時(shí)MSE最小,為此文中Bin(t)選取為20.
圖4 時(shí)間段劃分對(duì)算法性能的影響
本節(jié)仍然采用亞馬遜公共數(shù)據(jù)集中的Toys_and_Games和Instant_Video 子集對(duì)評(píng)分預(yù)測(cè)推薦的準(zhǔn)確性進(jìn)行評(píng)價(jià).首先采用文中提出的BERT-GRU 評(píng)分預(yù)測(cè)模型處理評(píng)論文本,然后根據(jù)評(píng)分矩陣預(yù)測(cè)結(jié)果進(jìn)行個(gè)性化商品推薦,分別采用因子分解機(jī) (FM)、SVD和SVD++模型進(jìn)行對(duì)比測(cè)試.此外,對(duì)比方法還包括文獻(xiàn)[13]提出的融合了邊緣降噪自編碼器和FM 模型(mSDA-FM)的商品推薦算法.推薦評(píng)價(jià)指標(biāo)除了采用MSE以外,還采用平均絕對(duì)誤差 (MAE),定義如下:
分別采用本文提出的DEEP-TimeSVD++算法與各對(duì)比算法處理Toys_and_Games和Instant_Video,結(jié)果如圖5和圖6所示.
圖5 MSE 結(jié)果對(duì)比
實(shí)驗(yàn)結(jié)果表明,本文提出的DEEP-TimeSVD++算法在MSE和MAE兩個(gè)性能指標(biāo)上均優(yōu)于對(duì)比方法.由圖5可知,在MSE指標(biāo)上,DEEP-TimeSVD++算法對(duì)Toys_and_Games和Instant_Video 相比性能較好的mSDA-MF 分別提高了1.4%和3.8%.由圖6可知,DEEP-TimeSVD++算法對(duì)Toys_and_Games和Instant_Video 相比性能較好的SVD++算法在MAE指標(biāo)上分別提高了2.5%和2.2%.上述實(shí)驗(yàn)結(jié)果證實(shí)了DEEPTimeSVD++算法在商品推薦中具有更高的準(zhǔn)確性.
圖6 MAE 結(jié)果對(duì)比
提出了一種基于深度神經(jīng)網(wǎng)絡(luò)和動(dòng)態(tài)協(xié)同濾波的個(gè)性化商品推薦模型,該模型利用BERT 模型和雙向GRU 替代傳統(tǒng)詞向量文本處理方式,能夠有效降低數(shù)據(jù)稀疏性影響,實(shí)現(xiàn)深層隱含特征提取;采用耦合CNN 網(wǎng)絡(luò)預(yù)測(cè)評(píng)分矩陣,并基于融合時(shí)間序列項(xiàng)動(dòng)態(tài)協(xié)同濾波實(shí)現(xiàn)商品評(píng)分預(yù)測(cè).實(shí)驗(yàn)結(jié)果驗(yàn)證了該模型降低了數(shù)據(jù)稀疏性和冷啟動(dòng)問(wèn)題的影響,考慮了用戶興趣隨時(shí)間推移出現(xiàn)的變化,在推薦準(zhǔn)確率上具有明顯優(yōu)勢(shì).