寧昱霖
(安徽理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,安徽 淮南 232001)
隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,全球的數(shù)據(jù)總量呈井噴式增長(zhǎng)。雖然大數(shù)據(jù)蘊(yùn)含豐富的信息及巨大的商機(jī),但信息過載造成的問題也隨之而來。如何有效的從海量的數(shù)據(jù)中提煉出有價(jià)值的信息成為當(dāng)今信息檢索領(lǐng)域發(fā)展的一大難題。推薦系統(tǒng)作為緩解信息過載的技術(shù)之一,它已經(jīng)成為電子商務(wù)、短視頻、新聞推送等各個(gè)互聯(lián)網(wǎng)領(lǐng)域的核心技術(shù)。
傳統(tǒng)的推薦模型,例如基于內(nèi)容和基于用戶的協(xié)同過濾推薦,它們是以一種靜態(tài)的方式建模用戶和項(xiàng)目的交互且只可捕獲用戶廣義的喜好,而在現(xiàn)實(shí)生活中用戶的偏好是不斷改變的并且用戶前后的行為都存在極強(qiáng)的關(guān)聯(lián)性。序列推薦模型就是利用了用戶興趣的動(dòng)態(tài)性,試圖將用戶過去的歷史行為記錄建模成一個(gè)項(xiàng)目序列,根據(jù)用戶最近交互的項(xiàng)目來預(yù)測(cè)他們的下一步行動(dòng)?;跁r(shí)間間隔的序列推薦模型是在傳統(tǒng)的序列推薦模型中顯式地融入用戶與項(xiàng)目交互時(shí)間的間隔。但由于數(shù)據(jù)集中涉及了復(fù)雜的時(shí)間間隔信息,單一的前饋神經(jīng)網(wǎng)絡(luò)無法完全提取數(shù)據(jù)集中蘊(yùn)含的信息,因此,本文準(zhǔn)備使用三階段線性層代替前饋神經(jīng)網(wǎng)絡(luò)以充分提取數(shù)據(jù)集中蘊(yùn)含的信息。
本文提出的模型是基于基線模型TiSASRec進(jìn)行改進(jìn)的,在本節(jié)中,將詳細(xì)介紹改進(jìn)后的TiSASRec 模型的各個(gè)組成部分,包括個(gè)性化時(shí)間間隔處理、嵌入層、時(shí)間感知自注意力模塊和預(yù)測(cè)層,模型流程如圖1所示。
圖1 模型流程圖
定義和分別表示用戶字典和項(xiàng)目字典,給定每個(gè)用戶∈的歷史行為序列S={s,s,…},其中s∈,行為序列對(duì)應(yīng)的時(shí)間序列可表示為T={t,t,…}。在時(shí)間步長(zhǎng)時(shí),模型會(huì)根據(jù)之前的項(xiàng)以及兩兩項(xiàng)目之間的時(shí)間間隔預(yù)測(cè)下一個(gè)項(xiàng)目。
為了防止時(shí)間間隔過于稀疏,將時(shí)間間隔大于的時(shí)間間隔替換為,剪裁后的矩陣表示為M。
首先創(chuàng)建一個(gè)項(xiàng)目嵌入矩陣M∈,為嵌入維度。通過檢索用戶項(xiàng)目序列中的項(xiàng)目索引,從M中找到對(duì)應(yīng)的嵌入表達(dá),將其堆疊在一起,形成矩陣E,E∈R,可表示為E=[m,m,…,m]。然后,使用兩個(gè)不同的可學(xué)習(xí)的位置嵌入矩陣E,E∈R分別作為自注意力機(jī)制中key,value 矩陣的絕對(duì)位置編碼,表示為E=[p,p,…,p],E=[p,p,…,p]。對(duì)于相對(duì)位置嵌入矩陣的嵌入表示,同樣采用兩個(gè)版本E,E∈R,分別作為自注意力機(jī)制中key,value 矩陣的相對(duì)位置編碼,表示為:
1.5.1 時(shí)間感知自注意力機(jī)制
對(duì)于每個(gè)用戶∈的項(xiàng)目交互序列E=[m,m,…,m],計(jì)算新的序列=[,,…,z],對(duì)于每個(gè)z都是由項(xiàng)目交互序列的嵌入表達(dá)經(jīng)過線性變化后再加權(quán)求和得到的。用公式可表達(dá)為:
其中,w∈R為自注意力機(jī)制中將項(xiàng)目交互序列轉(zhuǎn)化為value 矩陣的線性層,α是softmax 函數(shù)對(duì)于權(quán)重系數(shù)的歸一化操作,可以表達(dá)為:
其中,e為結(jié)合交互序列中的項(xiàng)目信息,絕對(duì)位置信息以及相對(duì)位置信息的權(quán)重系數(shù),可表示為:
其中,w,w∈R分別為自注意力機(jī)制中將項(xiàng)目交互序列轉(zhuǎn)化為query,key 矩陣的線性層。為了防止模型未卜先知,需屏蔽所有q和k的連接(>)。
1.5.2 多層線性層
時(shí)間感知自注意力機(jī)制本質(zhì)上仍然是一個(gè)線性模塊,沒有提取數(shù)據(jù)集非線性特征的能力,因此,需要在時(shí)間感知自注意力機(jī)制后面添加一個(gè)可以提取數(shù)據(jù)集中非線性特征的模塊。TiSASRec 模型采用一個(gè)前饋神經(jīng)網(wǎng)絡(luò)提取數(shù)據(jù)集的非線性特征,但由于模型的輸入信息中包含復(fù)雜的時(shí)間信息,因此,本文選擇使用三層線性層替換前饋神經(jīng)網(wǎng)絡(luò)進(jìn)行非線性特征的提取,并且使用LeakyReLU 函數(shù)作為激活函數(shù)。其公式可表達(dá)為:
其中,∈R,∈,∈,∈,∈,∈R。
由于稠密數(shù)據(jù)集可能需要疊加多層注意力機(jī)制以及線性層,因此,會(huì)出現(xiàn)過擬合、梯度爆炸、訓(xùn)練不穩(wěn)定等問題。因此,采用傳統(tǒng)的層規(guī)范化、殘差連接以及dropout 來解決這些問題。
其中,⊙指的是元素的乘積,和是的均值和方差,和分別是比例因子和偏差項(xiàng)。
1.5.3 預(yù)測(cè)層
為了預(yù)測(cè)下一個(gè)項(xiàng)目,利用隱因子模型的思想計(jì)算用戶對(duì)項(xiàng)目的偏好分?jǐn)?shù),公式為:
由于模型的目標(biāo)是提供一個(gè)排序后的項(xiàng)目列表,以驗(yàn)證正樣本在項(xiàng)目列表的位置。因此,通過負(fù)采樣的方式來優(yōu)化項(xiàng)目的排名。損失函數(shù)選擇binary cross entropy 函數(shù):
其中,o為期待的正輸出,’為o的負(fù)樣本,Θ={M,E,E,E,E},||?||是Frobenius 范數(shù),是正則化參數(shù),S是某個(gè)用戶的項(xiàng)目序列,是全部用戶的集合。
模型的任務(wù)是將給定的項(xiàng)目序列S={s,s,…,s}以及時(shí)間序列T={t,t,…,t}轉(zhuǎn)化為=[,,…,z],z可表示為:
Movielens 1M:一個(gè)廣泛用于推薦系統(tǒng)的電影數(shù)據(jù)集,包含來自6 000 名用戶對(duì)4 000 部電影的100 萬條評(píng)分。
京東數(shù)據(jù)集:由京東公開,包含7 萬名用戶對(duì)2 萬個(gè)物品的455 萬條行為信息,為防止項(xiàng)目在項(xiàng)目序列中重復(fù)出現(xiàn),本文只選取行為信息中的“瀏覽”部分作為樣本。
豆瓣影評(píng)數(shù)據(jù)集:采集于豆瓣電影,包含60 萬個(gè)用戶對(duì)7 萬部電影的400 萬條評(píng)分。
數(shù)據(jù)清洗后的數(shù)據(jù)集數(shù)據(jù)如表1所示。
表1 數(shù)據(jù)集的數(shù)據(jù)
由于模型最終會(huì)提供一個(gè)排序后的項(xiàng)目列表,因此,實(shí)驗(yàn)選取了兩個(gè)常見的Top-評(píng)估指標(biāo)HitRate@和NDCG@,以評(píng)估模型的性能。對(duì)于每個(gè)用戶,模型會(huì)隨機(jī)選取100 個(gè)負(fù)樣本,將正樣本與負(fù)樣本混合,對(duì)這101 個(gè)樣本進(jìn)行排序,再通過HitRate@和NDCG@計(jì)算模型的性能。
HitRate@關(guān)注每個(gè)用戶的正樣本是否出現(xiàn)在101 個(gè)樣本排序后列表的前個(gè)項(xiàng)目中,其計(jì)算公式為:
其中,||代表全體用戶的數(shù)量,||代表所有模型推薦成功的用戶數(shù)量。
NDCG@在HitRate@的基礎(chǔ)上更細(xì)粒度地關(guān)注了正樣本在101 個(gè)樣本中的位置,位置靠前得到的增益越大。其計(jì)算公式為:
其中,()為指示函數(shù),用于判定第個(gè)項(xiàng)目是否為正樣本。
操作系統(tǒng)及環(huán)境:Ubuntu18.04、Python3.8、CUDA11.0、PyTorch1.7.1。
GPU:NVIDIA GeForce RTX 2080 Ti。
CPU:Xeon E5-2678 v3。
由于本文提出的模型是根據(jù)TiSASRec 模型進(jìn)行改進(jìn)的,因此在本節(jié),將在三個(gè)數(shù)據(jù)集上進(jìn)行對(duì)比。相關(guān)超參數(shù)設(shè)置如表2所示。
表2 默認(rèn)超參數(shù)設(shè)置
實(shí)驗(yàn)結(jié)果對(duì)比如表3所示。
表3 實(shí)驗(yàn)結(jié)果對(duì)比
由表3可以看出,本文提出的方法在三個(gè)數(shù)據(jù)集上的性能皆優(yōu)于TiSASRec 模型。這在一定程度上可以證明用三層線性層代替?zhèn)鹘y(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)可以提高模型提取非線性特征的能力,尤其對(duì)于稀疏數(shù)據(jù)集豆瓣電影的提升最大,因?yàn)槭褂枚鄬泳€性層更能捕獲數(shù)據(jù)集中的細(xì)粒度特征。
本文基于TiSASRec 模型改進(jìn)的模型通過使用三層不同維度的線性層代替?zhèn)鹘y(tǒng)的前饋神經(jīng)網(wǎng)絡(luò),提高了模型提取非線性特征的能力。經(jīng)實(shí)驗(yàn)驗(yàn)證,評(píng)估指標(biāo)在三個(gè)數(shù)據(jù)集上性能皆有提高。后續(xù)的工作將聚焦于改進(jìn)融入相對(duì)時(shí)間間隔信息的策略,降低模型的復(fù)雜度,提高推理速度。