劉 玲, 范鴻俊
(湖南財政經濟學院 信息技術與管理學院, 湖南 長沙 410000)
協同過濾算法是推薦算法中運用比較成功和廣泛的推薦算法,但是數據稀疏性和冷啟動問題仍然制約著協同過濾算法的發展。為了緩解協同過濾推薦系統面臨的窘境,國內外研究者提出了大量的解決方法,可以將其歸結為兩條思路:1)綜合考慮用戶群體的評分信息,深度挖掘物品和用戶的特征表示,輸入信息是用戶物品的二分交互圖;2)引入額外信息源,旨在廣泛融合物品或用戶之間的相關性,輸入信息可以是用戶間的社交信息、物品特征、用戶和物品的標簽信息[1]等。對于第1條思路,國內外學者普遍采用網絡表示學習(network representation learning)技術對高維數據進行降維,用于協同過濾推薦的網絡表示學習技術主要集中在神經網絡模型上[2]。文中主要采用第1條解決思路,將網絡表示學習與推薦系統相結合,用網絡表示學習的方法去重構推薦系統中的物品特征,再將重構物品特征應用到Item CF算法中,以提高推薦系統的準確率、召回率和覆蓋率。
深度學習具有強大的學習數據集本質特征的能力,能夠獲取用戶和物品的深層次特征表示[3],文中主要采用深度學習的方法降維重構物品特征,重點研究了網絡表示學習中適用于推薦系統的自編碼器(Autoencoder, AE)和Item2vec,以及深度學習模型——生成對抗網絡(Generative Adversarial Net, GAN)的國內外相關工作。
AE通過成對的編碼器和解碼器重構輸入數據、學習數據的隱層表示。在AE的輸入數據中加入噪聲,得到降噪自編碼器(Denoising Autoencoder, DAE);堆疊多個AE得到棧式自編碼器(Stacked Autoencoder, SAE);堆疊多個DAE得到降噪自編碼器(Stacked Denoising Autoencoder, SDAE)。SAE和SDAE都是深度神經網絡結構,通過逐層非監督學習與訓練可以學習多層次的數據抽象表示[3]。
近年來,上述AE在推薦系統中有很多研究成果。AutoRec[4]將用戶或者物品的向量作為輸入,經過AE得到輸出層向量,由于結構比較簡單,存在表達能力不足的問題。經過AE生成的輸出層向量和隱層向量都可以看作是輸入向量的重構,前者增加了輸入向量中的缺失值,后者對輸入向量進行了降維,可能學習到深層的結構信息。顧秋陽等[5]提出的AE-NRL模型構造了一個有兩次編碼過程的DAE來行矩陣分解之事,分別求得用戶隱向量和物品隱向量,解碼器大膽采用簡單的點積運算來實現。王衛紅等[6]提出一種融合知識圖譜表示學習的SAE推薦算法(SAEKG-CF),其中SAE是以評分矩陣為輸入,訓練出物品的隱性特征向量,并據此計算物品相似度矩陣。
綜上所述,基于AE的協同過濾方法通常來說簡單有效,AE在其中大都是起到提取低維非線性特征的作用。僅有AE的模型存在表達能力不足的問題,常用的改進方法是降噪和堆疊,所以,利用SDAE推薦的魯棒性和有效性都有提升,而隨著數據量的增加以及模型訓練強度的增加,運算效率會有所下降。
上述AE的提取低維特征就是一種Embedding技術,熟悉并掌握各類流行的Embedding技術是構建一個成功深度學習推薦系統的有力武器。目前最受關注的Embedding技術是2013年谷歌提出的Word2vec,它能對句子(詞序列)中的詞進行Embedding,且詞向量之間的內積距離能表示詞之間的接近程度[7]。微軟亞洲研究院[8]將物品類比于詞,將用戶作用于物品上的行為序列(物品序列)類比于句子,采用 SGNS(Skip-Gram+Negative Sampling)的方法生成物品詞向量,實驗效果較好,可見Item2vec能獲取反映物品相似性的低維結構信息。
GAN作為一種新的生成模型訓練方法,近年來成為深度學習領域一個新的研究熱點,其本質是利用判別模型指導生成模型的訓練,可以看成是一種具有特殊損失函數的神經網絡,這個損失函數特殊到其本身也是一個神經網絡。
GAN源于零和博弈的思想,其生成器和判別器對抗學習,獲得給定樣本的數據分布,生成新的樣本數據[9]。Wang J等[10]提出IRGAN模型把信息索引領域的生成模型和判別模型統一在GAN框架中,使用了強化學習的策略梯度(policy gradient)下降算法將判別器的獎勵和懲罰信號傳遞給生成器,解決了之前GAN只能應用在生成器輸出為連續值的問題。為了發覺不同物品之間隱含的序列關系,文獻[11] 提出一種融合Item2vec和GAN的序列生成對抗網絡(SeqGAN),其中GAN的判別器是用Item2vec模型生成的詞向量作為真實值輸入,文中受此啟發。
AE、Item2vec、GAN都有豐富的研究理論,旨在將這三者運用到推薦系統這一領域。為了有不錯的推薦效果,這三者所選取的模型必然都對解決數據稀疏、模型訓練緩慢等問題有所貢獻。而目前GAN在推薦系統領域的應用還處于起步階段,所以如何平衡好這三者的關系,構建一個基于對抗自編碼器(AE-GAN)的協同過濾模型是我們研究的重點。
文中重構了基于自編碼器的GAN模型,命名為SAE-GAN。基于SAE-GAN的協同過濾推薦模型如圖1所示。

圖1 基于SAE-GAN的協同過濾推薦模型
SAE-GAN模型先將數據集中的物品通過Item2vec模型生成對應的物品詞向量,接著構造GAN。GAN中的生成器采用SAE生成物品隱向量,判別器采用三層感知機模型實現softmax回歸,用以對樣本進行分類判別。
以評分向量作為輸入,預先利用SAE學習物品隱向量Y,用Item2vec生成物品詞向量X,用X預先訓練三層感知機(見圖1中的生成器)。生成器生成的物品隱向量Y和Item2vec生成的物品詞向量X分別傳入判別器,輸出X和Y基于genres標簽分類的概率值,其中rfalse表示生成器生成的Y向量判別為正確分類的概率值,rtrue表示由Item2vec模型生成的詞向量X判別為正確分類的概率值(見圖1中的判別器)。然后將rfalse作為生成器獲得的反饋,指導生成器迭代更新。在進行一系列的參數優化后,將學習到的物品隱向量Y利用基于物品的協調過濾算法計算物品之間的相似度,最后進行Top-N推薦。
AE與協同過濾結合就是AutoRec,由于AE結構比較簡單(單隱層),AutoRec存在一定的表達能力不足的問題,所以構造由兩個AE層逐層連接的SAE作為AE-GAN的生成器Gθ(θ是模型參數)。
將評分矩陣的一個列向量
X={x1,x2,…,xn}

先訓練第1個AE得到h1層,訓練目標是使輸出向量X′盡量接近輸入向量X,使用L2正則化防止過擬合,目標函數的優化是基于TensorFlow框架采用隨機梯度下降算法去訓練神經網絡模型,直至參數收斂。將此階段學習來的所有參數用θ1表示。

在GAN中,需要判別器輔助生成器的訓練過程。多層前饋神經網絡在多標簽分類任務中顯示出較好的效果,因此選擇三層前饋神經網絡(FNN)作為判別器Dφ(φ是權值矩陣W和V)來輔助生成器Gθ的迭代更新過程。W和V分別代表輸入層到MLP第1層,以及MLP第1層到MLP第2層的參數矩陣。該模型結構代表的分類函數為
Dφ(I)=softmax(V·sigmod(W·I+b1)+b2),
(1)
式中:Dφ(I)----物品 embedding向量I給定genres標簽集合上的分類概率向量[p1,p2,…,pk]。
分兩步訓練判別器D:
1)先以真實的電影genres標注數據Ptrue=[p1,p2,…,pk]true為目標分類概率向量,以物品詞向量Iw為輸入,最小化Dφ(Iw)與目標分類概率向量之間的差異,以此預訓練判別器Dφ,此階段的目標函數為

(2)
2)以生成模型Gθ生成的物品隱向量為負例輸入,以物品詞向量為正例輸入,通過正例和負例對判別模型Dφ進行訓練。
文中使用強化學習算法學習動作價值函數QDφ(s,a)來輔助生成對抗訓練,即從狀態s開始采取動作a可獲得的預期獎勵。將判別器Dφ生成的分類概率向量Dφ(Y)與真實分類概率向量Ptrue的余弦值視為實際得到的獎勵,使用包含判別器Dφ的余弦函數作為獎勵函數,并動態迭代更新獎勵函數,以進一步優化生成器。
QDφ(s=P,a=Y)=cos(P,Dφ(Y))。
(3)
一旦獲得一組更真實的生成物品隱向量,該模型將重新訓練判別器,模型為

(4)
生成器Gθ的目標是最大化最終的預期獎勵,其目標函數為

(5)
式中:i----物品原始向量。
在模型訓練過程中,每次獲得新的判別器模型時,都會對生成器進行更新?;诓呗蕴荻鹊膬灮绞揭蕾囉谧畲蠡L期獎勵,對目標函數J(θ)求梯度,然后將生成器第2層的AE參數更新為

(6)
為驗證文中所提算法的有效性,采用關于電影評分的數據集MovieLens,選取其中ml-20M版本。該數據集包含隨機選定的138 493個用戶在1995年1月9日到2015年3月31日期間對27 278部電影的20 000 263條評分記錄,每個用戶至少有20條觀影評分記錄,所有電影都被標注了1~6個電影類型(genres),共有18種電影類型。將數據集隨機均分為10份,4份為預訓練集,4份為對抗訓練集,2份為測試集。
實驗硬件:Huawei MateBook 14。
實驗軟件:Windows 10操作系統,Anaconda3環境,Python 3.6.4解釋器,自編碼器用temsorflow庫,Item2vec用gensim庫。
采用常規的準確率、召回率和覆蓋率指標來衡量模型基于Top-N推薦的性能。實驗將提出的SAE-GAN模型與純粹的Item2vec、SAE、IR-GAN以及AE-GAN進行比較,實驗結果見表1。

表1 實驗結果對比 %
通過表1發現,文中提出的SAE-GAN模型在Movielens數據集上取得了優于基線方法的結果。相較于基于機器學習的Item2vec和基于深度學習的SAE,推薦精度均有提高,這是因為SAE-GAN融合了Item2vec挖掘物品相對位置的結構特性和SAE挖掘與用戶興趣相關的結構特性;召回率和覆蓋率也都明顯提高,這是因為文中模型能夠讓同類型的電影在向量表示上具備一定的相似性,對挖掘物品真實的隱向量表示提供了助力。此外,相較于直接利用SAE訓練模型,采用對抗訓練的方式可以有效避免模型的梯度擴散與梯度爆炸等問題。IR-GAN的生成器和判別器是基于一個最簡單的隱式矩陣分解模型,對于本數據集的體量而言效果并不好。AE-GAN是使用自編碼結果得到用戶對物品的預估評分,進而進行推薦排序,但AE的輸出層每次只學到少量數據,再加上其生成器沒有引入任何其他信息,所以三項指標均低于SEA-GAN。
隨著數據驅動智能技術的應用發展,各種個性化推薦算法蓬勃發展,不同鄰域的算法也進一步融合。充分挖掘用戶行為數據是影響推薦性能的關鍵所在。文中提出全新的基于AE-GAN的協同過濾推薦模型SAE-GAN,將SAE與GAN有機結合融入類型數據,深入挖掘物品特征表示,再基于此物品隱向量特征利用協同過濾技術進行TOP-N推薦。實驗結果表明,SAE-GAN在MovieLens的ml-20M數據集中表現均優于基線模型。
未來工作集中在進一步研究和改進GAN的生成器模型和判別器模型,嘗試融入信任網絡、社交網絡和用戶畫像網絡等異構數據。