伍 鑫,黃 勃 ,2,方志軍,劉文竹
1.上海工程技術大學 電子電氣工程學院,上海 201620
2.江西省經濟犯罪偵查與防控技術協同創新中心,南昌 330000
如今在信息爆炸的時代中,充斥著大量的冗余信息,從而導致了信息的過載問題,因此有效信息的獲取變得十分困難。推薦系統作為一種信息過濾方法可有效緩解該問題。推薦系統對用戶歷史數據進行分析,挖掘用戶興趣偏好,在項目空間中確定用戶喜歡的項目。傳統的推薦系統通常以矩陣分解模型[1]、協同過濾模型[2]和基于上下文感知模型[3]為主。傳統的推薦模型多為靜態的,沒有考慮用戶的興趣變化以及不同項目之間隱含的序列關系,只能從全局層面實現推薦。然而這種推薦方式在實際應用中效果較差,難以產生滿足用戶需求的推薦。
此外,傳統推薦系統通常只能處理相對較小的數據集。但如今大規模數據集的出現以及運算和硬件存儲的進步,促使開發具有高精度和可擴展性的更強大推薦系統成為可能[3-4]。
近些年,基于序列預測的推薦也得到了較好的發展,彌補了傳統推薦模型中無法考慮不同項目間時序關系的問題。當前基于序列預測的模型多為遞歸神經網絡(Recurrent Neural Networks,RNN)或基于RNN的變體等[5-7]。上述序列預測模型一定程度上解決了序列預測問題,但在模擬用戶行為軌跡方面仍然存在欠缺。為了更明確地模擬用戶行為軌跡,本文提出了一種融合序列生成對抗網絡(Sequence Generative Adversarial Networks,SeqGAN)[8]的推薦算法,可以使用其生成模型來重現用戶喜歡的項目序列,從而實現相應的推薦。同時在數據預處理方面引入Item2vec[9]對數據進行預處理,在降低數據維度的同時,還能保留數據之間良好的結構信息,此外使得相似項目的表示向量相似,解決了傳統詞嵌入方法中相似項目向量之間的關系不強的問題,同時也起到了降維、增加數據稠密度的作用。
近年來,基于深度學習的推薦算法受到了很多關注。推薦系統可視為一種用戶和項目之間的映射,深度學習作為一類常用的學習算法[10],能夠學習這種映射關系。常用深度模型如自動編碼器[11]、卷積神經網絡(Convolutional Neural Networks,CNN)[12]和 RNN[6-7]等均在推薦系統中取得了不錯的表現。但以上方法在擬合用戶興趣動態偏好時,仍然存在較大偏差。為了更準確地模擬用戶的典型行為,可以利用生成模型來生成用戶的興趣項目序列。例如,利用訓練好的隱馬爾可夫模型,根據用戶當前喜歡的項目序列預測下一個項目,并將其推薦給用戶[13]。
Item2vec 由微軟亞洲研究院提出[9],其主要思想是借鑒了 Word2vec[14],并采用 SGNS(Skip-Gram+Negative Sampling)[14]的方法來生成項目詞向量。Item2vec 在項目向量表示方面有著較強的優勢,使得項目詞嵌入后的詞向量表示帶有結構信息,即相似項目之間的距離較近,差異較大的項目之間距離較遠。因此Item2vec在一定程度上保留了原始數據的結構信息,同時降低了數據維度,便于后期的訓練學習以及推薦。
Goodfellow 等人提出生成對抗網絡(Generative Adversarial Networks,GAN)[15],在圖像生成[16]到魯棒控制[17]等許多任務中的表現優于現有算法。這是因為GAN 有效地利用深度學習的描述性和辨別力,訓練具有高精度和可擴展性的生成模型。利用GAN在生成數據方面的良好特性,在推薦系統中利用GAN 模擬用戶的行為軌跡,從而較精確地預測每個用戶的偏好[18-19]。由于SeqGAN在文本生成方面取得了較好的成果,對序列特征有著較強的學習能力,因此本文將融合SeqGAN來挖掘推薦系統中項目之間的序列關系。
當前基于序列預測的模型中,在數據預處理以及降維階段,常采用較為簡單的one-hot向量表示項目,該表示方式存在向量稀疏且無法體現不同項目之間關系的問題。因此,本文提出Item2vec和SeqGAN相結合的推薦算法,選用Item2vec 對項目進行預處理,從而得到帶有結構信息的項目向量,然后采用SeqGAN來建立基于GAN的模型,學習用戶的偏好,并向用戶生成下一個項目的推薦。SeqGAN能夠學習序列關系,為推薦任務提供了一個有效的框架。因此本文對SeqGAN 做了適當的改進,使其適用于推薦任務。為了驗證模型的有效性,在 Netflix Prize Contest 數據集和 Movielens 數據集上進行了實驗。實驗結果表明,本文提出的模型優于基線算法。
模型首先需要將電影項目映射成相應的詞向量,再根據用戶歷史記錄的時間戳屬性,構建不同的序列信息。如圖1中的Embedding部分所示。

圖1 模型總體框架
本文改進的SeqGAN,生成器通過噪聲z產生虛假的用戶觀看電影的序列信息Y={y1,y2,…,yt},如圖1中Generator部分所示。將生成器生成的項目序列信息Y和由Item2vec 根據真實信息產生的真實項目詞向量序列信息X={x1,x2,…,xt} 分別傳入鑒別器Discriminator中,輸出傳入項目序列X和Y為真實序列的概率值,其中p-表示生成器產生的序列Y鑒別為真實序列的概率值,p+表示真實序列X鑒別為真實序列的概率值。然后將p-作為生成器獲得的獎勵,指導生成器迭代更新,促使生成器盡可能地發掘用戶序列信息的真實分布特征。具體的對抗訓練過程如圖1所示。
首先根據數據集的時間屬性對無序的用戶數據進行處理。傳統的詞嵌入方法如one-hot存在向量稀疏且難以表示電影和電影之間的關系等問題;有研究發現RNN 以及RNN 的變體在數據密度較高時能發揮較好的性能[10],本模型的生成器采用LSTM(Long Short-Term Memory)構成,鑒別器采用GRU(Gated Recurrent Unit)構成,均為RNN 的變體;采用Item2vec 方法,該方法可以學習電影項目在低維空間的詞向量表示,增加數據的密度,同時可以學習不同電影項目之間的關系。
假設所有用戶觀看的電影的歷史記錄被定義為一個語料庫,同時將某一個用戶u觀看的一系列電影記錄視為一個小的電影集合,用Wu表示。所有的電影項目視為詞匯集合,用S(Wu∈S)表示。通過學習所有用戶歷史記錄中電影間的共現關系,獲得該電影項目的詞向量表示。具體的目標函數如下:

其中,σ(x)=1/(1+exp(-x)),u∈Wi,v∈Wj,N為對于每個正樣本負采樣的個數。
假定出現在用戶歷史記錄中的電影項目均為有效項目,因此用戶在選擇某個電影項目時,該電影項目即代表該用戶此時的興趣趨向。即可將某一時刻用戶所選的電影項目的詞向量表示作為該用戶此時的興趣特征向量。
LSTM比較適用于序列預測問題,能夠挖掘用戶興趣特性的分布特點。因此,采用LSTM 來構建SeqGAN中的生成器Gθ(θ為參數)。此外,為了同時處理用戶的時間靜態偏好和動態偏好,本文在LSTM單元的輸入門(it)使用Leaky RELU激活函數,如式(3)所示。Leaky RELU可以很好地控制輸入門信息的寫入和丟棄,使模型對于時間靜態偏好的用戶關注其過去的行為,對于動態偏好的用戶自動為其建模并完成預測。
為促使生成器挖掘用戶興趣的真實分布,在生成器中輸入噪聲z取代真實的序列數據。此方法可避免生成器過度依賴原始數據的問題,防止模型的過擬合。借助鑒別器的監督訓練,實現對抗學習,從而挖掘用戶的真實興趣特征模型。
在LSTM 單元通過噪聲z為其產生一個初始的隱狀態,如式(4)所示。其中yt表示生成的興趣特征,生成過程如式(6)所示。生成器Gθ={y1,y2,…,yT}。


在GAN中,為了更好地訓練生成器,促使生成器生成更真實的數據,需要鑒別器輔助生成器的訓練過程。GRU 在文本分類任務中顯示出較好的效果,因此選擇GRU 作為鑒別器Dφ(φ是參數)來輔助生成器Gθ的迭代更新過程。Dφ(Y1:T)表示序列Y1:T={y1,y2,…,yT}為真實序列數據可能性的概率。真實的用戶電影序列數據為正例,生成模型Gθ生成的數據為負例,通過正例和負例對判別模型Dφ進行訓練。

鑒別器中最終以sigmoid函數評估序列中各個節點為真實數據的可能性,如式(8),并累積該估計值,取其平均值作為該序列為真實序列的可能性,如式(9)。
為了更好地輔助生成對抗訓練,本文采用強化學習算法學習動作價值函數,即從狀態s開始采取動作a可獲得的預期獎勵。將鑒別器Dφ的實際估計概率視為實際得到的獎勵,使用鑒別器Dφ作為獎勵函數,并動態迭代更新獎勵函數,以進一步優化生成器。

一旦獲得一組更真實的生成預測序列,該模型將重新訓練鑒別器,模型描述如下:

生成器模型Gθ的目標是根據起始狀態s0生成序列,并最大化其預期的最終獎勵,其目標函數J(θ)如方程(13)所示:

其中,RT是生成的完整序列的獎勵。
在模型訓練過程中,每次獲得新的鑒別器模型時,都會對生成器進行更新。本文基于策略梯度的優化方式依賴于最大化長期獎勵。對目標函數J(θ)求梯度:

其中,yt是從Gθ生成的預測。由于期望E 可以通過采樣方法近似,然后將生成器的參數更新為:

采用Adam[16]和RMSprop[18]等自適應學習率的優化算法,αh∈R+表示第h步的學習率。此外,在真實的數據集上使用最大似然估計(Maximum Likelihood Estimation,MLE)來預訓練Gθ。實驗發現通過預訓練的生成器Gθ可以更容易找到最優解。
完成用戶興趣建模,即可執行具體的推薦任務,如圖2 所示。首先將用戶觀看的歷史電影項目按照時序特征依次傳入生成器中,如圖2 中的x1,x2,…,xt-1所示,并為該用戶生成下一時刻的興趣特征向量yt;匹配該興趣特征向量在電影集合S中的前N個最近鄰項目,完成對該用戶的top-n推薦。若下一時刻t實際的興趣特征向量xt所對應的電影ID在推薦的前n個電影項目中,即在圖2的movieId中,視本次推薦為一次成功的推薦。

圖2 推薦流程圖
實驗在一臺 CPU 為 i7-9700k,GPU 為 1080Ti,內存為32 GB 的電腦上進行,操作系統為ubuntu16.04,實驗環境為Pycharm。
實驗根據用戶歷史行為,預測其未來的興趣特征,最終以top-n方式完成推薦任務。
本文提出的算法為一種序列預測,在包含時間戳屬性的Movielens數據集和Netflix數據集上進行實驗。
Movielens-20M:該數據集是電影推薦服務Movielens最大的一個數據集,包含138 493 個用戶對27 278 部電影的20 000 263條評分記錄和465 564個標簽。數據集的時間跨度為1995年1月9日到2015年3月31日,每個用戶至少有20部觀影記錄。
Netflix:該數據集比Movielens-20M 更大,擁有約48 萬用戶對17 770部電影的1.0×108條評分記錄。
將數據集根據項目序列劃分為訓練集和測試集,訓練集用于預訓練生成器Gθ和對抗訓練時優化Dφ,測試集用于觀測訓練過程中的實際損失值。在這些數據集中,項目序列的歷史記錄中任何項目至多出現一次,因此可通過強制它們推薦用戶尚未看到的項目來模擬更真實的推薦過程。
實驗首先將用戶的歷史記錄按照用戶ID劃分成不同的電影子集,然后根據時間戳屬性對這些歷史記錄排序,構建對應的序列,然后將其傳入Item2vec中訓練,最后得到不同電影對應的向量,完成對訓練數據的預處理工作。
具體訓練過程如算法1所示。在對抗訓練開始前,首先將訓練集中具有時間序列關系的電影向量列表傳入SeqGAN的生成器中完成對生成器的預訓練;然后進行對抗訓練,將生成器的輸入參數改變為隨機噪聲,生成器通過隨機噪聲產生相應的向量序列;將生成器生成的向量序列和真實數據集中的序列混合傳入鑒別器,以優化鑒別器的鑒別能力;當鑒別器能夠較好地分辨生成器生成的數據和真實數據集中的數據時,再利用鑒別器輸出的值通過策略梯度的方式進一步優化生成器。
算法1Item2vec+SeqGAN
輸入:用戶基于時間順序的電影序列信息
1.采用Item2vec算法,得到電影項目的詞向量表示
2.初始化SeqGAN,并對生成器Gθ進行預訓練
3.得到預訓練的參數θ
4.repeat:
5.updateDφ
6.通過式(11)實現迭代更新
7.updateGθ
8.將噪聲z傳入Gθ中生成序列信息
9.通過式(9)完成獎勵值的計算,并采用策略梯度優化生成器Gθ
10.until:當鑒別器無法很好地區分生成器生成的數據時結束循環,并保存模型
具體的推薦算法描述如算法2 所示。將推薦用戶的歷史序列依次傳入到訓練好的SeqGAN的生成器中,即可生成下一時刻該用戶可能感興趣的特征向量。匹配該向量前n個不重復的最近鄰項目,完成對該用戶的top-n推薦。
算法2Sequence Recommendation
輸入:用戶u基于時間順序的電影序列信息
1.通過式(5)和(6)為其生成相應的興趣特征向量
2.根據該特征向量匹配前n個不重復的最近鄰電影向量
3.將這n個向量轉換為所對應的電影ID
輸出:將這n個電影推薦給用戶u
為了對該推薦模型進行評估,采用MAP(Mean Average Precision)和MRR(Mean Reciprocal Ranking)指標來衡量模型基于top-n推薦的性能。本實驗中將該模型與基于最近鄰(KNN)和基于矩陣分解(BPR-MF)的兩種靜態top-n推薦算法進行比較。同時也與基于序列預測的基線方法:馬爾可夫鏈(MC)、RNN 進行比較。實驗結果如表1和表2所示。
通過以上結果對比發現,本文所提出的模型,在經過Item2vec處理之后的數據上,取得了優于基線方法的結果。例如,在Movielens 數據集上,對于基線方法MC和RNN 上推薦精度均提高了4%。這是因為KNN 和BPR-MF這類基線模型不具備序列預測的特性;而本文模型能夠發掘用戶潛在的興趣偏好變化軌跡,根據當前興趣偏好進行預測。同時Item2vec 方法在降低稀疏性的同時,讓同類型的電影在向量表示上也具備了一定的相似性,對后期的序列預測,以及挖掘用戶潛在的興趣模型提供了有力條件。此外,相較于直接利用RNN 訓練的網絡模型,采用對抗訓練的方式,可以有效降低模型的過擬合,更利于對用戶的興趣模型進行精確建模。

表1 基于Movielens-20M數據集對比分析(n=10)

表2 基于Netflix數據集對比分析(n=10)
本文討論了Item2vec 和SeqGAN 在推薦系統中的具體實現。將兩者相結合,改進傳入SeqGAN網絡的項目向量表示,在降低向量表示維度的同時,讓項目的結構信息融入其向量表示中。同時改進SeqGAN 網絡結構,使其更適合推薦系統的應用場景。本文模型旨在對基于時序關系的用戶和項目潛在特征精確建模,從而提高推薦系統的準確性。
實驗結果表明,SeqGAN在兩個不同的數據集中表現均優于基線模型。未來工作集中于進一步研究和改進SeqGAN的性能,以及對LSTM進行改進的可行性和影響進行深入研究,以便更精準地對用戶興趣建模。