王永強,陳徐洪,張壯壯,董云泉
(1.南京信息工程大學 電子與信息工程學院,江蘇 南京 210044;2.國家開發銀行 重慶市分行,重慶 400023)
隨著互聯網技術的飛速發展,互聯網上的信息呈現爆炸式增長。因此,為滿足用戶的特殊需求而設計的各種推薦系統得到廣泛的研究[1-3],如基于內容的推薦[4,5]和基于協同過濾的推薦[6-8]等。深度學習在模式識別領域的廣泛應用[9-12]為推薦系統的發展提供了新的研究方向。然而深度學習模型的損失函數設計對于缺乏較強領域知識的研究者頗為困難。Goodfellow等[13]在2014年提出的生成對抗網絡(generative adversarial networks,GAN),代替設計復雜的損失函數,將問題置于極小極大的二人零和博弈框架中。隨后Wang等[14]將GAN應用于信息檢索(information retrieval,IR)領域,提出IRGAN模型,之后Dong-KyuChae等[15]又提出CFGAN模型,相比IRGAN模型,CFGAN推薦精度更好,推薦結果更理想。
CFGAN模型中考慮以用戶交互向量作為條件,然而用戶交互向量中存在未交互項語義模糊,即未評分項可能是用戶不感興趣或者尚未觀察到的,使用這種不明確信息作為條件引導生成器生成接近真實情況的交互向量,會導致判別器回傳不精確的梯度給生成器,從而造成推薦精度的降低。在實際推薦場景中,用戶的很多屬性信息可以被利用,將這些信息進行特征化可以充分表達和區分用戶之間的關系,因而在設計推薦模型時考慮到用戶屬性對推薦質量的提升也起到關鍵作用。因此,本文在CFGAN的基礎上,融合用戶基本屬性并進行特征提取和編碼,將提取出的用戶屬性特征向量規范化,并作為生成對抗網絡的條件指導生成器生成更加準確的推薦序列,提升用戶體驗。
GAN包含兩個模型:生成模型(Generator,G)生成盡可能真實的數據,判別模型(Discriminator,D)估計樣本來自真實數據的概率。為了學習生成器在數據x上的分布pg(x), 生成器構建了一個從先驗噪聲分布pz(z) 到數據空間的映射G(z;θg); 判別器D(x;θd) 輸出一個單一標量,表示x來自訓練樣本而不是來自生成器的概率,其中θg和θd分別為生成器和判別器的模型參數。G和D同時訓練,D和G用價值函數V(D,G) 進行二人最小最大博弈

(1)
圖1中給出了GAN的可視化表示,其中x′表示噪聲z經生成器G映射到數據空間的合成數據樣本,即x′=G(z;θg)。 通過先驗噪聲分布pz(z), 生成器G生成合成數據樣本x′, 與真實數據樣本x共同送入判別器D判別真假,利用回傳的梯度學習G在數據x上的分布pg(x), 使其接近真實數據分布pdata(x), 重復對抗訓練直到判別器無法判別數據是來自生成器還是真實數據。

圖1 GAN基本結構
傳統的GAN不能控制生成器生成數據的模式。因此,以便有條件地生成數據點,條件對抗模型(conditional GAN,cGAN)應運而生。圖2為cGAN的模型框架,生成和判別模型都為多層感知機模型。在生成器G中,先驗輸入噪聲z和y串聯通過隱藏層生成與真實數據樣本x相同維度的生成數據樣本G(z|y); 在判別器D中,真實數據樣本x或者生成數據樣本G(z|y) 和y串接作為輸入,送至隱藏層最后通過激活函數判定樣本來自真實數據樣本的概率D(x|y)。 為了公式的簡潔性,省略生成器和判別器的模型參數θg和θd, 則cGAN的優化目標函數為

圖2 cGAN基本框架

(2)
GAN模型在訓練過程中只用到了反向傳播,避免了復雜的推理過程,可以生成更加真實的樣本。在推薦系統中,使用GAN可以模擬用戶的偏好程度,進而實現用戶的個性化推薦。
Dong-Kyu Chae等[15]指出IRGAN模型沒有充分利用對抗性訓練的優勢,原因在于其訓練方案使G生成離散的物品索引,這不同于原始GAN生成每個元素有連續值的向量,這種離散的物品索引時而標記為真時而標記為假,使判別器陷入困惑,不能傳遞正確的梯度給生成器,因此會降低推薦的精度。為了解決這一問題提出CFGAN模型,引入了向量形式的訓練,其核心思想是將用戶的歷史交互信息作為特征向量,并以用戶的交互信息作為條件,通過對抗訓練使G生成看似合理的歷史交互向量,而不是對相關物品進行離散抽樣。判別器負責區分生成的用戶交互向量和真實的用戶交互向量。這也有助于避免使用強化算法來更新生成器,因為通過向量訓練,G和D都可以使用SGD進行訓練。
假設系統有m個用戶,n個物品,用ru表示用戶u對所有物品的評分向量。為了模型的簡潔性,本文考慮隱式反饋,即用戶u對物品i有交互行為,則rui為1,沒有交互行為則為0。沒有交互行為不能表示用戶對物品不感興趣,也可能存在其它情況,比如用戶尚未觀察發現該物品。在原始CFGAN模型中,將用戶(或物品的)交互向量作為額外的先驗條件,通常用戶交互向量非常稀疏,由于沒有交互行為而語義模糊會導致判別器的性能下降繼而影響生成器以及推薦的準確性。并且在實際推薦系統中,用戶或物品數可高達百萬,因此將用戶交互向量作為條件與用戶生成交互向量或真實交互向量合并進行訓練,輸入向量的維度較長,在隱藏層進行特征降維時會有一定的精度損失,并且訓練時間較長。
為解決這一問題,本文將用戶的屬性特征進行編碼作為CFGAN模型額外的信息條件,不同用戶有不同的屬性特征,常見的用戶屬性特征包括:性別、年齡、職業、收入、興趣、郵政編碼等。本文將用戶屬性分為類別類型、枚舉類型和數值型變量進行編碼。對于類別型變量利用one-hot進行編碼,例如性別中男和女可分別表示為[0,1]和[1,0],此方法映射后將生成多個特征。對于枚舉型用戶屬性,將標稱型數據映射稱為一組數字,相同的標稱型映射為相同的數字,例如用遞增整數值映射用戶不同的職業,這種映射最后只生成一個特征。對于數值類型,通過減去均值然后除以方差(或標準差)標準化數據,這種數據標準化方法經過處理后數據符合標準正態分布。年齡、收入類等數值類屬性可通過該方法特征化。最后將所有處理好的各類屬性特征串接起來作為用戶的屬性特征向量,該特征向量的每一項都有明確的含義,不存在二義性。不同的數據集會收集不同的用戶屬性,本文使用Movielens電影評分數據集,該數據集提供用戶的性別、年齡、職業和郵編,將其進行編碼轉換為五維的屬性特征向量,其中性別占兩維,對比使用上千維的用戶交互向量作為條件,極大減小了條件特征維度。


圖3 基于用戶屬性的CFGAN的結構

JD=-xpdata[log(D(x|y))]-
(3)
G的目標函數JG可表示為
(4)


為了解決平凡解的問題,CFGAN作者[15]引入了3種方法。它們的主要思想是,在每輪訓練迭代開始時,為每個用戶選擇一部分未交互的物品作為負樣本,負樣本表示用戶不感興趣的項。負樣本的占比用S表示,例如S=20, 則未交互項物品的20%將被選為負樣本,3種方法的負樣本抽樣占比可分別表示為SZR、SPM和SZP。 假設它們與用戶不相關而不是缺失,訓練G在生成用戶交互向量中將這些負樣本物品項輸出為零,3種方法如下:
零-重構正則化法(zero-reconstruction regularization,ZR):未交互項物品以SZR的比例隨機選擇并假設為不相關。生成器的目標函數修改為
(5)


(6)
(7)
且滿足
零-重構和部分掩藏的組合方法(zero-reconstruction regularization and partial-masking,ZP):同時使用零重構正則化和部分掩藏方法,D的目標函數與部分掩藏方法的目標函數相同,G的目標函數修改如下

(8)
算法1:基于用戶屬性的CFGAN模型(CFGAN-A)
輸入:用戶的屬性信息,用戶對物品的交互矩陣,G和D的學習率μG、μD, 批處理大小MG、MD, 推薦序列的長度N
輸出:G的參數θg,給用戶推薦top-N個物品序列
(1) 用戶屬性進行特征編碼并串接為向量
(2) 初始化G和D的模型參數θg和θd
(3)repeat:
(4) 對所有用戶的未交互項進行負采樣:
(7)forG-stepdo
(8) 抽樣批處理MG個用戶
(11)endfor
(12)forD-stepdo
(13) 抽樣批處理MD個用戶
(14) 獲取真實交互向量 {r1,r2,…rMD}
(16)endfor
(17)until: 當D無法判別樣本來自真實訓練數據還是G生成數據時結束循環,并保存模型

算法1為基于用戶屬性的CFGAN模型的訓練過程。首先將用戶屬性編碼,并初始化生成模型和判別模型的參數。接著對用戶未交互項進行負采樣,使用零重構正則化法跳過步驟(6),部分掩藏法跳過步驟(5),組合方法同時使用步驟(5)和(6)進行抽樣,然后分別通過生成網絡和判別網絡更新模型參數直至判別器無法區分真實數據與生成數據,保存模型參數。最后通過將生成器生成的用戶偏好倒序排序,取前N個最相關的物品進行推薦。
為了驗證提出方法可以改善推薦性能,在真實數據集上與一些常用的top-N推薦方法進行比較,并考慮不同的負采樣比例和正則化系數對推薦性能的影響。


表1 數據集的統計信息
經多次實驗比較,將神經網絡隱藏層設置為三層,判別器網絡隱藏層節點數設置為{1024,128,16},生成器網絡隱藏層節點數設置為{256,512,1024}。并且確定一些在經驗上表現良好的超參數,使用sigmoid函數作為神經網絡的激活函數,設置學習率為0.0001,批量大小為32,用{10,30,50,70,90}改變SZR和SPM,用{0.5,0.25,0.1,0.05,0.01}改變正則化系數α,比較這些超參數對推薦精度的影響。
本文為top-N推薦任務采用了4種常用的準確度指標:準確率(precision,P@N)、召回率(recall,R@N)、歸一化折損累計增益(normalized discounted cumulative gain,NDCG@N)和平均倒數排名(mean reciprocal rank,MRR@N)。前兩個指標關注推薦列表中包含多少正確的項目,后兩個指標關注正確項目在推薦列表中的排名位置。對用戶u推薦N個物品(記為R(u)), 另用戶u在測試集上交互的物品集合為T(u), 則準確率和召回率計算公式分別為
(9)
(10)
NDCG@N可表示為
(11)
MRR@N計算公式為
(12)
其中,|U| 為測試集的用戶數,ranku表示用戶u的推薦列表中第一個推薦正確所在的位置。
以上4個評價指標越大,模型的推薦性能越好。本文設置推薦列表長度N固定為5和20。
以評價指標準確率(precision,P@N)為例,設置N=5,在ml-100k數據集上比較不同參數對改進CFGAN推薦性能的影響。
首先固定正則化系數α=0.1, 圖4分別為零-重構正則化法和部分掩藏法下不同負采樣占比對推薦精度的影響,觀察到當負采樣比例較低時,有很多未交互項無法判斷是否與用戶相關,當負采樣比例較高時,有一些相關項被選為不相關,因此會產生一些噪聲,影響梯度的傳播,導致準確度偏低。當SZR和SPM取到{50,70}時準確度較高,并且CFGAN作者[15]的經驗表明,零-重構和部分掩藏的組合方法ZP在推薦性能上優于單一的ZR或PM方法,所以在下面的實驗中使用混合方法,并固定SZR和SPM為70。

圖4 不同負采樣占比對推薦準確度的影響
圖5為混合方法ZP使用不同正則化系數對推薦準確度的影響。觀察到當α取0.1時推薦準確度最高,當α取值較大時 (α≥0.5), 生成器G將集中大量注意力使輸出趨于0,而不是實現初始的目標生成看似真實的交互向量,當α取值較小時 (α≤0.01), G受零-重構正則化項影響較小,因而容易生成平凡解的交互向量。故下文對比實驗設置α取0.1。

圖5 不同正則化系數對推薦準確度的影響
本節比較本文提出方法與常用top-N推薦算法的推薦性能來驗證提出方法是否可以改善推薦精度。具體比較方法如下:
ItemPop:最簡單的非個性化推薦算法,按照受歡迎程度降序(即購買記錄的數量)對物品進行排序。
MF-BPR:一種基于矩陣分解的排序算法,針對每一個用戶自己的商品喜好程度做排序優化,需要用戶對商品的喜好排序三元組做訓練集。
IRGAN:使用條件生成對抗網絡生成離散物品索引來模仿用戶真實相互行為。
CFGAN-I:采用向量式條件對抗網絡學習真實數據分布,學習條件為用戶真實交互行為。
CFGAN-A:將用戶屬性編碼并作為CFGAN模型的引導條件,模擬用戶的交互行為。
圖6為ml-100k數據集上基于用戶屬性和用戶交互向量的性能比較,其中虛線為基于用戶屬性推薦,實線為基于用戶交互向量推薦,設置迭代次數1000。首先,從圖中可以看出基于用戶屬性的CFGAN推薦方法在各評價指標上總體都略優于基于用戶交互向量推薦,克服了基于用戶交互向量CFGAN模型中未知項的二義性輸入神經網絡全連接層帶來的誤差,從而驗證了提出方法的有效性。其次,由于基于GAN模型零和博弈收斂較為困難,易受超參數影響。從圖中可以看出基于用戶交互的CFGAN算法的各項評價指標整體呈現先增后減的趨勢,其在運行約600輪時開始收斂,但是隨著運行輪次的增加其各項評價指標開始下降,這是因為用戶交互向量出現過擬合現象,導致推薦精度開始下降;而基于用戶屬性的CFGAN模型的各項評價指標在收斂之后保持平穩。通過以上分析可知基于用戶屬性的CFGAN推薦模型的推薦精度收斂更為平滑穩定,也驗證了該方法收斂性能較好。

圖6 兩種輸入條件下CFGAN模型推薦性能比較
表2和表3進一步比較了兩個數據集推薦top-5和top-20相關電影在不同推薦方法下的指標性能,分別用P、R、G、M表示Precision、Recall、NDCG和MRR。從表2中可以看出基于用戶屬性的CFGAN-A在各評價指標上都略優于其它推薦方法,在推薦準確度P@5是非個性化推薦ItemPop的2.5倍,較基于用戶交互向量CFGAN-I提高了0.04,R@5較于CFGAN-I提高了0.01;在推薦位置排序指標G@5是ItemPop的兩倍,較于CFGAN-I提高了0.03,M@5較于CFGAN-I提升了0.04。在推薦top-20電影時CFGAN-A對比其它方法也有一定的精度改進,但由于推薦了相關性不是很高的電影,對比top-5改進效果略微下降。表3在ml-1m數據集上的各項推薦性能指標同樣可看出本文提出方法優于其它推薦方法,從而驗證了基于用戶屬性的CFGAN推薦模型可以改善推薦性能。

表2 ml-100k數據集不同推薦方法的性能比較

表3 ml-1m數據集不同推薦方法的性能比較
本文提出了一種基于用戶屬性的條件生成對抗網絡推薦方法,在原始CFGAN模型的基礎上,將模型的原始條件用戶交互向量替換為用戶屬性編碼向量,以此指導生成盡可能接近真實的用戶偏好分布,根據用戶對項目的偏好程度進行排序生成Top-N推薦,該方法能夠降低向量表示維度,去除用戶交互向量中不明確項帶來的噪聲,減少模型的訓練參數。實驗結果表明,基于用戶屬性信息的CFGAN模型可以改善推薦精度。未來將從項目角度入手,嘗試融合項目的附加信息,使用神經網絡深入挖掘用戶和項目的特征表示,將其與生成對抗網絡模型融合,實現更精準的推薦。