陳昀 張瑞林
摘 要: 基于序列的推薦是推薦系統(tǒng)研究的熱點,序列中包含許多重要信息,如物品的點擊規(guī)律和用戶的興趣,有效利用序列信息是提高推薦準確率的關(guān)鍵。為了有效提取序列信息,提出了ACRec推薦系統(tǒng)模型,利用多頭自注意力機制和卷積神經(jīng)網(wǎng)絡從動態(tài)和靜態(tài)兩個方面提取序列信息,并利用矩陣分解增強模型中用戶與序列的語義關(guān)系。在MovieLen-1M和Video_Games兩大公開數(shù)據(jù)集上實驗證明,相比于其他基線模型,ACRec提高了推薦的準確率,Hit@10分別提高了1.03%和18.4%,NDCG@10分別提高了2.6%和20.9%。
關(guān)鍵詞: 推薦系統(tǒng); 注意力機制; 卷積神經(jīng)網(wǎng)絡; 矩陣分解
文章編號: 2095-2163(2021)07-0166-06中圖分類號:TP391文獻標志碼: A
Personalized recommendation based on sequence feature extraction
CHEN Yun, ZHANG Ruilin
(School of Informatics Science and Technology, Zhejiang Sci-Tech University, Hangzhou 310018, China)
【Abstract】Sequential recommendation is a hot topic in the research of recommendation system. Sequences contain a lot of important information, such as item click rules and user interests. Effective use of sequence information is the key to improve the accuracy of recommendation. In order to effectively extract the sequence information, a model of recommendation system called ACRec is proposed, which uses multi-head self-attention mechanism and Convolutional Neural Network to extract sequence information from both dynamic and static aspects, and uses matrix factorization to enhance the semantic relationship between users and sequences in the model. Experiments on the two public data sets of MovieLen-1M and Video_Games prove that compared with other baseline models, ACRec improved the accuracy of recommendation, the Hit@10 increased by 1.03% and 18.4%, and the NDCG@10 increased by 2.6% and 20.9%.
【Key words】recommendation system; attention; Convolutional Neural Network; matrix factorization
0 引 言
在互聯(lián)網(wǎng)時代,信息過載已經(jīng)成為不可避免的問題[1]。推薦系統(tǒng)是解決信息過載問題的重要方法。傳統(tǒng)的推薦系統(tǒng)對用戶和物品的每一次交互進行建模。但在現(xiàn)實生活中,用戶的下一次交互往往與用戶的上一次交互有關(guān)?;谛蛄械耐扑]系統(tǒng)考慮了用戶歷史點擊序列對下一次點擊的影響,如Zhou等人[2]提出了DIN推薦系統(tǒng)模型,通過注意力模型計算目標物品與序列中物品的相關(guān)性,Hidasi等人[3]提出了利用GRU進行會話推薦。
雖然目前已有許多基于序列的推薦模型,但還存在一些問題:首先,對于序列特征提取只考慮序列的發(fā)展變化特征或只考慮序列的靜態(tài)特征,沒有對2方面特征同時進行處理;其次,模型只對序列進行計算,忽略了用戶與序列的語義關(guān)系。
為了解決上述問題,本文使用注意力機制和卷積神經(jīng)網(wǎng)絡分別學習序列的動態(tài)特征和靜態(tài)特征,提出了基于注意力機制和卷積神經(jīng)網(wǎng)絡的ACRec(Attention and Convolutional Based Recommendation)模型,并利用矩陣分解加強用戶和序列的語義關(guān)系。本文的主要貢獻如下:
(1)使用注意力機制和卷積神經(jīng)網(wǎng)絡對序列從動態(tài)特征和序列的靜態(tài)特征兩方面進行特征提取;
(2)利用矩陣分解增強用戶和序列的語義關(guān)系;
(3)本文在2個公共數(shù)據(jù)集上進行比較實驗,驗證ACRec的有效性。
1 相關(guān)工作
在現(xiàn)實世界中,用戶的行為是連續(xù)發(fā)生的,用戶下一個點擊往往與用戶上一個點擊的物品相關(guān)。近年來,基于序列推薦的研究也日漸增多。最早對序列進行建模的是基于馬爾科夫鏈的推薦系統(tǒng),F(xiàn)PMC[4]是由Rendle等人提出的利用馬爾科夫鏈和矩陣分解來求解下一項推薦物品。Cheng等人[5]在FPMC的基礎(chǔ)上改進了轉(zhuǎn)移矩陣提出了FPMC-LR模型,將轉(zhuǎn)矩陣分解成2個小矩陣的乘積。He等人[6]通過結(jié)合相似度和馬爾科夫鏈提出了Fossil推薦模型,利用相似度來計算用戶的長期喜好,利用高階馬爾科夫鏈來計算用戶的短期需求。
除了馬爾科夫鏈,許多學者使用深度學習的方法來研究基于序列的推薦??紤]到RNN對序列計算的優(yōu)勢,因此許多學者提出了基于RNN的推薦系統(tǒng)。Hidasi等人利用GRU對短期會話進行建模,提出了GRU4Rec模型。Donkers等人[7]設計了融入用戶信息的循環(huán)神經(jīng)網(wǎng)絡單元,使用戶信息在計算過程中可以動態(tài)表示。Li等人[8]提出了NARM模型,NARM分為編碼和解碼兩個部分,在編碼部分對GRU計算出的隱藏狀態(tài)進行全局和局部編碼,在解碼部分計算物品的點擊概率。為了提取序列信息,也有許多學者利用卷積神經(jīng)網(wǎng)絡進行研究。Liu等人[9]提出了CCPM模型將卷積神經(jīng)網(wǎng)絡應用到推薦算法中,將序列排列成二維矩陣進行特征提取。Liu等人[10]提出了Caser模型,對卷積核大小進行限制,從水平和垂直兩個方向?qū)π蛄羞M行了特征提取。Yuan等人[11]利用一維卷積對序列進行特征提取。
注意力機制在基于序列的推薦系統(tǒng)中應用得也十分廣泛。 Zhou等人提出了DIN模型,通過注意力機制計算目標物品與歷史序列中物品的相似度,計算了目標物品對歷史序列中物品的注意力權(quán)值。之后,Zhou等人[12]改進了DIN,提出了DIEN,利用注意力機制和GRU計算用戶興趣的發(fā)展變化。Kang等人[13]提出了SASRec算法模型,利用多層多頭自注意力機制來提取歷史序列的發(fā)展規(guī)律。Guo等人[14]提出了IMfOU算法模型,利用圖卷積和注意力機制計算序列的順序信息,并結(jié)合了順序模型和非順序模型來更好地計算物品之間的依賴關(guān)系。從這些研究可以看出,如何對序列特征進行提取是關(guān)鍵,本文使用注意力機制和卷積神經(jīng)網(wǎng)絡從序列的發(fā)展變化特征和序列的靜態(tài)特征進行特征提取。
2 個性化推薦模型
本節(jié)將詳細介紹文中提出的個性化推薦模型(AcRec),如圖1所示,ACRec總體由嵌入層、特征提取層、乘積層和全連接層組成。在特征提取層,ACRec先后使用多頭自注意力機制提取序列的動態(tài)特征和卷積神經(jīng)網(wǎng)絡來提取序列特征靜態(tài)特征。
2.1 嵌入層
由于用戶與物品總量大,而用戶交互的物品少,因此推薦系統(tǒng)模型的輸入是十分稀疏的高維輸入。例如用戶U={u1,u2,u3,…,um},物品I={i1,i2,i3,…,in},其中m和n分別為用戶和物品的總數(shù)。獨熱碼是常用的物品向量表示方式。在獨熱碼中,只有一個位置是1,其他位置都為0,通過改變1的位置來代表不同的物品。如果用獨熱碼表示每個用戶,則u1=[1,0,0,…,0], i1=[1,0,0,…,0]。如果系統(tǒng)有1 000個物品,則一個物品的獨熱碼表式中就會有999個0,1個1,且在這1 000個數(shù)據(jù)中只有一個有用。這樣的數(shù)據(jù)數(shù)量大且十分稀疏,不易于計算,因此引入了嵌入層。
嵌入層的思想來源于自然語言處理中用不同的向量來表示每個單詞,通過Skip-gram或者CBOW模型訓練單詞向量,使得向量能代表單詞的意思。在推進系統(tǒng)模型中引入嵌入層思想,用一個向量代表一個物品或用戶,使輸入數(shù)據(jù)變得稠密。本文在嵌入層中為每類輸入數(shù)據(jù)都定義了一個嵌入空間,用戶的嵌入空間為EU∈RUv×k,物品的嵌入空間為EI∈RIv×k , k為嵌入維度,且k|U|, k|I|,相比獨熱碼表示,向量表示極大地減少了占用的內(nèi)存空間。經(jīng)過嵌入層,第一位用戶就表示為EU的第一行數(shù)據(jù),第一個物品就表示為EI的第一行數(shù)據(jù)。
2.2 動態(tài)特征提取層
動態(tài)特征提取層結(jié)構(gòu)如圖2所示,研究認為序列中的物品之間是有關(guān)聯(lián)的,如序列中的電腦和鍵盤、牛奶和面包,為了提取序列中不同物品的關(guān)聯(lián)性,本文使用多頭自注意力機制提取序列的關(guān)聯(lián)特征,動態(tài)地改變序列中物品的權(quán)重。并且由于相同的序列對不同的用戶有不同的意義,因此本文使用注意力機制計算用戶對序列中物品的注意力權(quán)重。
注意力機制是將查詢Q和鍵值對K、V映射為輸出的函數(shù),其計算公式如下所示:
其中,Q為當前關(guān)注的矩陣、如用戶矩陣;V為需要求解關(guān)注度的矩陣、如序列中的物品組成的矩陣;K是V的映射、代表了V特性,K和V可以相等,“T”為轉(zhuǎn)置。計算注意力權(quán)重的方法除了公式(1)中使用的點積之外,還可以通過神經(jīng)網(wǎng)絡來計算。
多頭自注意力機制在Transformer中被提出,通過多個線性變換將輸入轉(zhuǎn)換成多組不同的查詢、鍵和值,使得模型能夠關(guān)注不同方面的注意力權(quán)重。Transformer利用多頭自注意力機制來代替RNN,計算當翻譯不同單詞時句子中其他單詞的權(quán)重。其計算公式如下所示:
其中,WQ,WK,WV,WO為轉(zhuǎn)換矩陣,在自注意力機制中Q=K=V都為序列中物品組成的矩陣。多頭自注意力機制可以很好地發(fā)現(xiàn)序列中物品的關(guān)系,因此本文使用多頭自注意力機制來動態(tài)計算序列中不同物品的權(quán)重。經(jīng)過計算得到序列矩陣S′,為了不丟失序列的原始信息,本文將原始的序列矩陣S加入到了S′中,其計算公式為:
在經(jīng)過多頭注意力機制后,本文計算了用戶對序列中物品的注意力權(quán)重。研究認為不同用戶對相同序列的注重點有所不同,用戶自身的特性對用戶未來的選擇有很大影響。例如,同樣是面對序列,電腦、鍵盤、牛奶、面包,用戶A會更注意前兩項,而用戶B會更注意后兩項。因此即使有相同的歷史點擊序列,用戶A和用戶B未來的點擊也是不同的。根據(jù)公式(1),本文將用戶A作為查詢,將B作為鍵和值計算注意力權(quán)重。
2.3 靜態(tài)特征提取層
在靜態(tài)特征提取層,本文通過卷積神經(jīng)網(wǎng)絡提取序列的特征。本文認為不同時間間隔的特征應該分別提取,因此本文用m個大小為v×1的卷積核沿著行與列的方向移動對序列矩陣S′進行特征提取,v∈{2,…,|S|},通過改變v的大小提取不同時間間隔的物品之間的特征,本文用Fvj∈Rv×1表示第j個高度為v的卷積核,1≤j≤|S|。Fvj對歷史序列矩陣S′從左到右、從上到下地進行卷積計算得到大小為(|S|-v+1)×k的特征矩陣C。然后再將C輸入池化層,池化層的核大小為(K-h+1)×1,進行最大池化a=max(C), a表示C的最大數(shù)值。最后將m×(|S|-1)個卷積核提取的特征組成m×(|S|-1)×k的矩陣,并輸入平均池化層,得到大小為m×1×k的特征矩陣C′,然后再對C′進行重新排列得到1×(m×k)的矩陣。
在經(jīng)過卷積層特征提取后,本文將提取的特征C′和用戶向量U進行非線性變換,融合用戶特征和序列特征,計算公式如下所示:
2.4 乘積層
研究可知,在之前的基于序列的推薦都只對序列特征進行了提取,沒有利用用戶已經(jīng)點擊過序列中的物品這個信息,使得模型不能明確用戶與序列中的物品的關(guān)系。為了利用用戶與序列中物品的關(guān)系,本文提出了乘積層,增強用戶和序列中物品的已點擊關(guān)系。
本文根據(jù)矩陣分解算法來計算用戶對序列的點擊值。在矩陣分解算法中將用戶和物品用向量表示,用戶對物品的評分為用戶向量與物品向量的乘積,通過矩陣分解求解出用戶矩陣和物品矩陣就可以預測用戶對未評分的物品的評分。因此本文的乘積層利用矩陣分解算法計算用戶對歷史序列中每個物品的點擊概率,并通過Sigmoid激活函數(shù)使輸出限制在0和1的范圍內(nèi)。由于用戶已經(jīng)點擊過歷史序列中的物品,所以乘積層的輸出都應該接近于1。乘積層的公式如下所示:
其中,U和S為用戶矩陣和序列矩陣。由于乘積層的標簽只有一個值1,因此本文使用交叉熵損失函數(shù)計算乘積層的損失值L0。乘積層的損失函數(shù)公式為:
乘積層僅使用在訓練階段調(diào)整數(shù)據(jù)的更新方向,總體的損失函數(shù)為L0乘以影響因子τ∈[0,1]加上全連接層的損失值。
3 實驗
3.1 實驗數(shù)據(jù)
(1)MovieLens-1M(https://grouplens.org/datasets/movielens/1m/):MovieLens-1M是在推薦算法中常用的數(shù)據(jù)集,包含了1 000 209條用戶對電影的評分,3 883部電影和6 040個用戶,其中每個用戶至少評分過20部電影,電影總共有18個類別,一部電影可以有多個類別。本文把用戶看過的電影都標注為1,并隨機從用戶未看過的電影中選取負樣本標注為0,使正負樣本的比例為1:1。
(2)Video_Games(http://deepyeti.ucsd.edu/jianmo/amazon/categoryFilesSmall/Video_Games.csv): Video_Games是Amazon Review Data提供的數(shù)據(jù)集之一。Amazon Review Data提供了許多數(shù)據(jù)集,如Amazon Fashion、Electronics、Books等。這些數(shù)據(jù)都包含很多用戶對物品的評價和物品信息。Video_Games是有關(guān)游戲產(chǎn)品的數(shù)據(jù)集,包含了用戶對游戲的評價、打分、產(chǎn)品描述等信息。Game數(shù)據(jù)集一共包含2 565 349條用戶打分、71 982款游戲、1 540 618個用戶,平均每個用戶有1.7條評論,平均每個物品有35.6條評論。本文對數(shù)據(jù)集進行了處理,除去數(shù)據(jù)集中的重復記錄和用戶交互數(shù)量比較少的數(shù)據(jù),最終剩余32 232個用戶和42 247個游戲,396 983條評論。
本文按用戶ID和用戶評論時間排列數(shù)據(jù),把用戶評論過的每5個物品作為歷史序列,第6個物品作為目標物品,預測用戶觀看第6個物品概率,并按留一法把每個用戶的最后一組序列作為測試集數(shù)據(jù)。在測試數(shù)據(jù)中對每個用戶通過負采樣隨機采樣了99個不同的負樣本,因此每個用戶的測試數(shù)據(jù)一共為100個,其中99個負樣本、1個正樣本。經(jīng)過處理的數(shù)據(jù)集統(tǒng)計詳見表1。
3.2 對比模型
本文選取了3個推薦系統(tǒng)模型作為本實驗的對比模型進行仿真實驗,這三個模型是十分具有代表性的推薦模型。一個是基于矩陣分解型,一個是基于卷積神經(jīng)網(wǎng),一個是基于多頭注意力機制,從不同方面對推薦系統(tǒng)進行了研究。
NeuMF[15]結(jié)合了矩陣分解和深度神經(jīng)網(wǎng)絡,通過矩陣分解和深度神經(jīng)網(wǎng)絡分別計算用戶對物品的興趣程度,將傳統(tǒng)推薦算法與神經(jīng)網(wǎng)絡相結(jié)合,然后連接2部分結(jié)果輸入全連接層得到最終結(jié)果。
Caser利用卷積神經(jīng)網(wǎng)絡提取歷史序列特征,通過不同大小的卷積核提取不同維度的特征組合,實現(xiàn)水平特征提取和垂直特征提取,然后將特征和目標物品向量輸入全連接層進行計算得到最終結(jié)果。
SASRec將Transformer模型轉(zhuǎn)化為推薦算法模型,利用堆疊多層多頭自注意力機制和前饋神經(jīng)網(wǎng)絡層交替學習用戶歷史序列的發(fā)展規(guī)律,最后將多頭自注意力機制的結(jié)果與目標物品進行計算預測點擊概率。
3.3 評估標準
命中率Hit@N和歸一化折損累計增益NDCG@N是TopN推薦問題中常用的評價指標,本文選擇這兩個評價指標作為實驗的評價指標,用于評價算法的好壞。
TopN推薦為利用模型計算用戶對候選物品的點擊概率并根據(jù)結(jié)果進行倒序排列,將前N個物品作為推薦列表推薦給用戶。Hit@N計算TopN推薦中是否包含正樣本,若是則命中,否則未命中。NDCG@N計算在TopN推薦中正樣本的排序位置,位置越靠前則NDCG@N值越大,若不包含正樣本則NDCG@N值為0。Hit@N和NDCG@N的計算公式如下所示:
3.4 參數(shù)設置
本文所有實驗都選擇Adam作為優(yōu)化器,初始學習率都為0.001,正則化參數(shù)為10-6,批量大小為128,嵌入層維度為64,dropout大小設置為0.3。ACRec的多頭自注意力機制的頭數(shù)設置為4,層數(shù)設置為1,垂直卷積核的個數(shù)為1,全連接層隱藏層數(shù)為3,大小為64、32、16,乘積層的影響因子大小在MovieLens-1M上為0.2,在Video_Games上為0.6。NeuMF的神經(jīng)網(wǎng)絡隱藏層設置為4層,大小分別為64、32、16、8。Caser的每層水平卷積核數(shù)位16,垂直卷積核數(shù)為4。SASRec的多頭自注意力機制和神經(jīng)網(wǎng)絡層交替層數(shù)設置為2,多頭自注意力機制的頭數(shù)也設置為4。
3.5 分析與結(jié)論
實驗結(jié)果詳見表2,本文分別對比了Top5和Top10推薦的Hit@N和NDCG@N值。從表2中的數(shù)據(jù)可以看出不論在MovieLens-1M數(shù)據(jù)集上、還是在Video_Games數(shù)據(jù)集上,本文提出的ACRec模型都要優(yōu)于其他基線對比模型。
在MovieLens-1M數(shù)據(jù)集上,本文提出的ACRec明顯優(yōu)于Caser和SASRec模型,說明從動態(tài)和靜態(tài)兩方面提取序列特征的有效性。而NeuMF的結(jié)果明顯弱于其他3個模型,這是因為NeuMF不是基于序列的,只利用矩陣分解計算了用戶和物品的內(nèi)在特征,而序列給模型提供了更多信息。但在Video_Games數(shù)據(jù)集上NeuMF模型優(yōu)于Caser和SASRec,這是因為Video_Games中用戶興趣單一,用戶興趣比序列對用戶的選擇影響更大。相比Caser和SASRec,本文提出的ACRec模型在計算過程中不斷融入用戶信息,并且加入了乘積層計算用戶與序列的關(guān)系,因此得到了好的結(jié)果,且與NeuMF相比有很大提升。
4 結(jié)束語
本文主要研究了基于序列的推薦系統(tǒng)。首先利用注意力機制對序列進行動態(tài)特征提取,使序列中的物品有不同的權(quán)重。然后使用卷積神經(jīng)網(wǎng)絡對序列進行靜態(tài)特征提取,接著通過改變卷積核的大小提取不同序列長度的特征。并且在模型中增加了乘積層用于加強用戶與序列的語義關(guān)系。本文在兩大公共數(shù)據(jù)集上進行了對比實驗,實驗結(jié)果證明了本文提出的ACRec模型的有效性,無論是Hit@N還是NDCG@N都要優(yōu)于其他3個對比模型。序列數(shù)據(jù)是刻畫用戶特征的重點,在未來的工作中可以繼續(xù)對序列提取方面進行研究,并引入知識圖譜增加物品信息和關(guān)聯(lián),來提高推薦的準確率。
參考文獻
[1]黃劍波,陳方靈,丁友東,等. 基于情感分析的個性化電影推薦[J]. 計算機技術(shù)與發(fā)展,2020,30(9): 132-136.
[2]ZHOU G R, ZHU X Q, SONG C R, Ying Fan, et al.Deep interest network for click-through rate prediction[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. New York: ACM, 2018: 1059-1068.
[3]HIDASI B, KARATZOGLOU A, BALTRUNAS L, et al. Session-based recommendations with recurrent neural networks[J]. arXiv Preprint arXiv:1511.06939, 2015.
[4]RENDLE S, FREUDENTHALER C, SCHMIDT-THIEME L. [JP4]Factorizing personalized markov chains for next-basket recommendation[C]//Proceedings of the 19th International Conference on World Wide Web. New York: ACM, 2010: 811-820.
[5]CHENG C, YANG H Q, LYU R M, et al. Where you like to go next: Successive point-of-interest recommendation[C]//Proceedings of the Twenty-Third International Joint Conference on Artificial Intelligence. California: AAAI Press, 2013: 2605-2611.
[6]HE R, MCAULEY J. Fusing similarity models with markov chains for sparse sequential recommendation[C]//2016 IEEE 16th International Conference on Data Mining (ICDM). Barcelona: IEEE, 2016: 191-200.
[7]DONKERS T, LOEPP B, ZIEGLER J. Sequential user-based recurrent neural network recommendations[C]// Proceedings of the Eleventh ACM Conference on Recommender Systems. New York: ACM, 2017: 152-160.
[8]LI J, REN P J, CHEN Z M, et al. Neural attentive session-based recommendation[C]// Proceedings of the 2017 ACM on Conference on Information and Knowledge Management. New York: ACM, 2017: 1419-1428.
[9]LIU Q, YU F, WU S, et al. A convolutional click prediction model[C]// Proceedings of the 24th ACM International on Conference on Information and Knowledge Management. New York: ACM, 2015: 1743-1746.
[10]LIU B, TANG R M, CHEN Y Z, et al. Feature generation by convolutional neural network for click-through rate prediction[C]//The World Wide Web Conference (WWW '19). New York: ACM, 2019: 1119-1129.
[11]YUAN F J, KARATZOGLOU A, ARAPAKIS I, et al. A simple convolutional generative network for next item recommendation[C]//? Proceedings of the Twelfth ACM International Conference on Web Search and Data Mining. New York: ACM, 2019: 582-590.
[12]ZHOU G, MOU N, Fan Y, et al. Deep interest evolution network for click-through rate prediction[C]// Proceedings of the AAAI Conference on Artificial Intelligence. California: AAAI Press, 2019: 5941-5948.
[13]KANG W, MCAULEY J. Self-attentive sequential recommendation[C]// 2018 IEEE International Conference on Data Mining (ICDM). Singapore: IEEE, 2018: 197-206.
[14]GUO X L, SHI C Y, LIU C M. Intention modeling from ordered and unordered facets for sequential recommendation[C]//Proceedings of The Web Conference 2020. New York: ACM, 2020: 1127-1137.
[15]HE X N, LIAO L Z, ZHANG H W, et al. Neural collaborative filtering[C]// Proceedings of the 26th International Conference on World Wide Web. New York: ACM, 2017: 173-182.
作者簡介: 陳 昀(1995-),女,碩士研究生,主要研究方向:推薦系統(tǒng); 張瑞林(1961-),男,博士,教授,主要研究方向:人工智能。
通訊作者: 張瑞林Email:hzzhangrl@163.com
收稿日期: 2021-05-05