陳善雄 張曦煌
(江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院 無(wú)錫 214122)
本文探討基于融合輔助信息的神經(jīng)網(wǎng)絡(luò)組合推薦系統(tǒng),通過(guò)輔助信息和歷史交互數(shù)據(jù)重新定義用戶(hù)和項(xiàng)目交互功能。利用輔助信息不僅可以提高真實(shí)交互作用的成功率,還可以提高對(duì)預(yù)測(cè)進(jìn)行正確排序的能力。在處理文本內(nèi)容的輔助信息時(shí),利用哈希函數(shù)的優(yōu)勢(shì),減輕數(shù)據(jù)稀疏性的弊端。在神經(jīng)網(wǎng)絡(luò)隱藏層結(jié)構(gòu)中,層數(shù)由m層擴(kuò)展為n層(n>m),使得輔助數(shù)據(jù)和歷史交互數(shù)據(jù)能被挖掘出更深層次的潛在信息。
主要工作總結(jié)如下:
1)設(shè)計(jì)一種基于融合輔助數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)組合推薦系統(tǒng)通用框架,主要由矩陣分解神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò)組合而成。該框架從輔助數(shù)據(jù)和交互數(shù)據(jù)中對(duì)用戶(hù)和項(xiàng)目的隱性特征進(jìn)行建模。
2)引入輔助信息到大規(guī)模數(shù)據(jù)領(lǐng)域的推薦系統(tǒng)框架中,顯著提高推薦質(zhì)量以及應(yīng)對(duì)推薦系統(tǒng)冷啟動(dòng)問(wèn)題。
3)采用哈希函數(shù)處理文本數(shù)據(jù),緩解數(shù)據(jù)稀疏性。
4)本文使用三個(gè)真實(shí)數(shù)據(jù)集評(píng)估NFR的推薦效果,實(shí)驗(yàn)結(jié)果表明NFR優(yōu)于其他先進(jìn)方法。
矩陣分解(MF)是眾多應(yīng)用方法中最著名的協(xié)同過(guò)濾方法。隨著Netflix Prize[3]的普及,矩陣分解已經(jīng)成為潛在因子建模推薦的首選方法。矩陣分解通過(guò)將評(píng)分矩陣有效分解為低維度的潛在因子,使用戶(hù)和項(xiàng)目投影到共享的潛在空間里。推薦系統(tǒng)使用潛在因素的內(nèi)積來(lái)體現(xiàn)用戶(hù)和商品之間的相互作用。目前有較多的研究來(lái)提高矩陣分解的性能,Sheng等[4]提出了一種深度協(xié)同過(guò)濾方法(DCF),此方法結(jié)合概率矩陣分解(PMF)和邊緣化降噪自動(dòng)編碼器(MDA),從深層網(wǎng)絡(luò)的隱層中提取潛在因子,并將其運(yùn)用于矩陣分解向量的輸入。Wang等[5]提出了一種用于向在線(xiàn)社區(qū)推薦科學(xué)文章的協(xié)作主題模型。文中將LDA(Latent Dirichlet Allocation)運(yùn)用于用戶(hù)評(píng)分以及商品內(nèi)容。當(dāng)用戶(hù)和文章被表示為潛在因子,就將矩陣分解應(yīng)用其潛在表示中來(lái)預(yù)測(cè)用戶(hù)的偏好。Kim等[6]提出一種上下文感知推薦模型被稱(chēng)為卷積矩陣分解(Con?vMF)。此模型將卷積神經(jīng)網(wǎng)絡(luò)(CNN)集成到概率矩陣分解(PMF)中,從卷積神經(jīng)網(wǎng)絡(luò)直接訓(xùn)練的矩陣分解中得到項(xiàng)目表示。
這是一個(gè)快速發(fā)展、急劇變化的時(shí)代,關(guān)心未來(lái)成為人們的迫切需要。湯因比的挑戰(zhàn)與應(yīng)戰(zhàn)說(shuō)是思考未來(lái)的有效方法。無(wú)論是個(gè)人、集體還是人類(lèi)社會(huì),洞察和預(yù)知面臨的最大危機(jī)與挑戰(zhàn)都是頭等大事,因?yàn)樗苯記Q定處境判斷、及時(shí)應(yīng)對(duì)和戰(zhàn)略抉擇,面對(duì)什么比擁有什么更重要,這決定了自己的安危和出路。為此本文探討三項(xiàng)內(nèi)容,一是人類(lèi)面臨的最大危機(jī)與挑戰(zhàn)是什么?二是化解最大危機(jī)與挑戰(zhàn)的難點(diǎn)和危機(jī)嚴(yán)峻程度,三是科技危機(jī)引發(fā)的以新科技革命、新產(chǎn)業(yè)革命與社會(huì)大轉(zhuǎn)型為核心內(nèi)容的智業(yè)革命,最后是主要結(jié)論、展望和啟動(dòng)方案。
推薦系統(tǒng)的大多數(shù)研究使用深度神經(jīng)網(wǎng)絡(luò)[7],但采用深度神經(jīng)網(wǎng)絡(luò)直接從數(shù)據(jù)中學(xué)習(xí)交互的工作相對(duì)較少。Roy等[8]首次嘗試使用神經(jīng)網(wǎng)絡(luò)建立傳統(tǒng)的協(xié)作過(guò)濾機(jī)制來(lái)模擬矩陣分解,并用前饋神經(jīng)網(wǎng)絡(luò)替換矩陣分解的內(nèi)積,但這在數(shù)據(jù)集的表現(xiàn)上并未成功。由于內(nèi)積無(wú)法捕獲用戶(hù)和項(xiàng)目的非線(xiàn)性交互,何向南等[9]對(duì)此方法進(jìn)行改進(jìn),提出NCF框架。NCF采用純協(xié)同過(guò)濾方法:廣義矩陣分解(GMF)和多層感知機(jī)(MLP)。通過(guò)前饋神經(jīng)網(wǎng)絡(luò)中非線(xiàn)性交互函數(shù)替換內(nèi)積,得到較為理想的結(jié)果。但僅從歷史交互數(shù)據(jù)中受益,并沒(méi)有完全考慮冷啟動(dòng)問(wèn)題。Payam等[10]對(duì)NCF框架進(jìn)行改進(jìn),提出NHR通用框架。此框架結(jié)合隱式反饋來(lái)獲取顯式反饋無(wú)法獲取的有價(jià)值信息,將輔助數(shù)據(jù)和歷史交互數(shù)據(jù)組合起來(lái),得到比任何單方面數(shù)據(jù)更好的預(yù)測(cè)結(jié)果。但使用隱式反饋缺乏負(fù)實(shí)例,實(shí)驗(yàn)結(jié)果往往不盡人意。因此采用討論負(fù)采樣來(lái)解決此問(wèn)題。上述研究表明輔助信息對(duì)隨時(shí)引入新用戶(hù)或項(xiàng)目的推薦系統(tǒng)極為關(guān)鍵。因此為了進(jìn)一步提高推薦質(zhì)量,如何改進(jìn)NCF并更好地融合輔助信息成為推薦領(lǐng)域面臨的重要問(wèn)題。
文中使用前饋神經(jīng)網(wǎng)絡(luò),建立協(xié)同過(guò)濾和輔助信息結(jié)合的通用框架。神經(jīng)網(wǎng)絡(luò)可以對(duì)用戶(hù)和項(xiàng)目的交互進(jìn)行建模,并且它已被證明可以學(xué)習(xí)非線(xiàn)性關(guān)系,這對(duì)于推薦電影,圖像或工作等復(fù)雜對(duì)象至關(guān)重要。在遵循NCF的前提下,首先使用相同的交互數(shù)據(jù)組合不同的神經(jīng)網(wǎng)絡(luò),來(lái)構(gòu)建廣度和深度的協(xié)同過(guò)濾方法,再將補(bǔ)充網(wǎng)絡(luò)的輔助信息添加到系統(tǒng)中以解決冷啟動(dòng)問(wèn)題。通過(guò)訓(xùn)練彼此獨(dú)立的多個(gè)神經(jīng)推薦模型,構(gòu)建一個(gè)由所有模型組建的框架。模型中的網(wǎng)絡(luò)大致分為兩類(lèi):矩陣分解神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)推薦網(wǎng)絡(luò)。
矩陣分解神經(jīng)網(wǎng)絡(luò)是基于矩陣分解實(shí)現(xiàn)的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)。矩陣分解用一個(gè)潛在特征向量值將每個(gè)用戶(hù)和項(xiàng)目關(guān)聯(lián)起來(lái)。
如圖1,圖中嵌入層將用戶(hù)和項(xiàng)目轉(zhuǎn)換為矢量表示,所獲得的嵌入向量被看作是潛在因素模型用于上下文中。如果用mu和ni分別表示用戶(hù)u和項(xiàng)目i的潛在向量,則將映射函數(shù)定義為
圖1 矩陣分解神經(jīng)網(wǎng)絡(luò)
其中Ψ表示潛在向量的元素乘積,接著將此項(xiàng)目矢量投影到模型的輸出層:
其中x=Ψ(u,i|mu,ni)表示圖1乘積層的輸出向量,W,b和αout分別是該層的權(quán)重矢量,偏差值和激活函數(shù)。假設(shè)權(quán)重初始向量W是1的均勻向量,方程中的b是零偏差,激活函數(shù)是一個(gè)單位函數(shù),該函數(shù)允許用輸入的確切值來(lái)定義感知器,這一環(huán)節(jié)用來(lái)充當(dāng)傳統(tǒng)的矩陣分解。為了實(shí)現(xiàn)矩陣分解神經(jīng)網(wǎng)絡(luò),利用等式(5)中的對(duì)數(shù)損失函數(shù),從相互作用中學(xué)習(xí)權(quán)重向量W和偏差b,從而獲得廣義矩陣分解(GMF)。Sigmoid函數(shù)定義αout,用等式σ(x)=1∕(1+exp(-x))表達(dá)。Sigmoid函數(shù)可以在(0,1)范圍內(nèi)控制神經(jīng)元,來(lái)滿(mǎn)足項(xiàng)目的預(yù)測(cè)期望。
廣義矩陣分解(GMF)對(duì)向量簡(jiǎn)單地連接不足以說(shuō)明用戶(hù)和向量的潛在特征,因此利用多層感知機(jī)(MLP)來(lái)學(xué)習(xí)用戶(hù)和項(xiàng)目潛在特征之間的相互作用。多層感知機(jī)擁有高水平的靈活性和非線(xiàn)性建模能力,不像廣義矩陣分解那樣簡(jiǎn)單的對(duì)元素進(jìn)行內(nèi)積。
廣義矩陣分解和多層感知機(jī)模型的嵌入層輸出都轉(zhuǎn)換成一維向量,它們的輸入長(zhǎng)度為1(僅id)。但在輔助數(shù)據(jù)上訓(xùn)練的深度神經(jīng)推薦網(wǎng)絡(luò)的嵌入層會(huì)產(chǎn)生嵌入序列。平均池化是一種將序列成員中存在的信息收集為特定形式的應(yīng)用程序,如從單詞嵌入中獲取句子嵌入。因?yàn)橛脩?hù)和項(xiàng)目需用幾個(gè)特征要素表示,且每個(gè)要素特征都有自己的嵌入空間,所以嵌入層的平均池化使用戶(hù)和項(xiàng)目對(duì)具有唯一的潛在向量表示。
如圖2所示,嵌入層后獲得的用戶(hù)和項(xiàng)目對(duì)的潛在向量通過(guò)隱藏層中每一層對(duì)應(yīng)的函數(shù)公式來(lái)生成MLP模型:
圖2 深度神經(jīng)推薦網(wǎng)絡(luò)
其中α1~αn-1是ReLU激活函數(shù),最后的αn是Sig?moid函數(shù),W是權(quán)重函數(shù),b是偏差向量。
矩陣分解神經(jīng)網(wǎng)絡(luò)應(yīng)用線(xiàn)性?xún)?nèi)核來(lái)模擬潛在的特征交互。深度神經(jīng)推薦網(wǎng)絡(luò)則使用非線(xiàn)性?xún)?nèi)核學(xué)習(xí)交互數(shù)據(jù),并融合輔助數(shù)據(jù),提高推薦模型的泛化能力。為了充分發(fā)揮兩種框架的優(yōu)點(diǎn),更好的對(duì)復(fù)雜模型進(jìn)行建模,允許GMF和MLP學(xué)習(xí)獨(dú)立的嵌入,僅將模型輸出之前的最后一層連接起來(lái)。通過(guò)加權(quán)將多個(gè)神經(jīng)網(wǎng)絡(luò)模型組合到一起,最終框架如圖3。
圖3 神經(jīng)網(wǎng)絡(luò)組合推薦
權(quán)重初始化對(duì)提高深度學(xué)習(xí)模型的性能至關(guān)重要[11]。首先通過(guò)訓(xùn)練沒(méi)有先驗(yàn)信息的模型,直至收斂為止;其次用訓(xùn)練得到的參數(shù)來(lái)初始化整個(gè)體系結(jié)構(gòu)上的相關(guān)權(quán)重。為了合并所有模型,僅將輸出之前的最后一層網(wǎng)絡(luò)連接起來(lái)。該層定義了模型的預(yù)測(cè)能力,在文獻(xiàn)中通常稱(chēng)為預(yù)測(cè)因子。在加權(quán)過(guò)程中使用最后一層網(wǎng)絡(luò)的原始權(quán)重:
其中ωn表示第n個(gè)模型預(yù)訓(xùn)練的權(quán)重向量,(α,β,…,γ)是多個(gè)超參數(shù),來(lái)權(quán)衡各個(gè)預(yù)訓(xùn)練模型的比重。
所有模型層定義中給出的參數(shù)經(jīng)下面二類(lèi)交叉熵?fù)p失函數(shù)(binary cross-entropy loss)學(xué)習(xí)。
其中Y表示觀察到的相互作用的集合,Y-表示消極實(shí)例。當(dāng)損失函數(shù)替換為加權(quán)平方損失時(shí),提出的框架也可以輕松地應(yīng)用于顯式數(shù)據(jù)集。
實(shí)驗(yàn)基于三個(gè)公開(kāi)數(shù)據(jù)集展開(kāi):MovieLens[12],Pinterest和Kariyer,數(shù)據(jù)集的特征見(jiàn)表1。對(duì)于電影推薦任務(wù),運(yùn)用包含電影字幕的標(biāo)準(zhǔn)電影字幕數(shù)據(jù)集OPUS;對(duì)于圖像推薦,用戶(hù)的Pins作為交互數(shù)據(jù),對(duì)象類(lèi)別和個(gè)人身份作為輔助數(shù)據(jù);對(duì)于工作推薦,用戶(hù)的歷史數(shù)據(jù)作為交互數(shù)據(jù),工作和應(yīng)聘者的屬性作為輔助數(shù)據(jù)。
表1 實(shí)驗(yàn)數(shù)據(jù)特征
輔助信息源有三類(lèi):分類(lèi)信息、文本信息和它們的組合。但在NFR實(shí)驗(yàn)中,只記錄分類(lèi)信息和文本信息的組合作為輔助信息源的實(shí)驗(yàn)結(jié)果。Pinterest和Kariyer數(shù)據(jù)集包含許多數(shù)據(jù)類(lèi)型:自由文本,實(shí)值,二進(jìn)制,單標(biāo)簽和多標(biāo)簽分類(lèi)特征。為了處理學(xué)習(xí)過(guò)程中的所有不同類(lèi)型,實(shí)驗(yàn)首先采用一般的預(yù)處理步驟,例如離群值去除,標(biāo)記化等。然后對(duì)實(shí)數(shù)值進(jìn)行歸一化。實(shí)驗(yàn)還將原始文本特性轉(zhuǎn)換為引用文本數(shù)據(jù)源的散列向量,這里不用簡(jiǎn)單的字典實(shí)現(xiàn),因?yàn)槭褂米值淇赡軙?huì)出現(xiàn)表示極為稀疏的情況。而是利用哈希函數(shù)的優(yōu)勢(shì),將原始文本轉(zhuǎn)換為固定大小的哈??臻g中的索引序列。有些詞可能根據(jù)哈希函數(shù)分配到相同的索引。哈??臻g的維數(shù)受到不同單詞重疊率和嵌入層維數(shù)的影響。通過(guò)對(duì)整體性能的評(píng)價(jià),將哈??臻g維數(shù)設(shè)置為1k。
框架流程由TensorFlow實(shí)現(xiàn),所有單個(gè)的模型通過(guò)等式(5)的對(duì)數(shù)損失函數(shù)來(lái)學(xué)習(xí)。對(duì)于沒(méi)有任何先驗(yàn)信息訓(xùn)練的單個(gè)模型,實(shí)驗(yàn)使用Xavier初始化設(shè)置模型參數(shù),再使用Adam優(yōu)化算法對(duì)其優(yōu)化,學(xué)習(xí)率設(shè)置為0.001,動(dòng)量設(shè)置為0.9。實(shí)驗(yàn)測(cè)試了一堆不同的批處理大?。?6,32,64,128},發(fā)現(xiàn)128是性能最好的設(shè)置,但由于數(shù)據(jù)的嵌入量過(guò)大,實(shí)驗(yàn)設(shè)備有限,最后采用32的批處理大小。實(shí)驗(yàn)分別使用{8,16,32,64}的預(yù)測(cè)因子大小進(jìn)行模型評(píng)估。值得注意的是,大的因子可能導(dǎo)致過(guò)擬合,降低模型性能。實(shí)驗(yàn)將三個(gè)隱藏層作用于特定交互的網(wǎng)絡(luò)。如果預(yù)測(cè)因子大小為8,那么隱藏層的大小從上到下按32到16到8的順序選擇,嵌入大小為16。使用輔助數(shù)據(jù)訓(xùn)練的網(wǎng)絡(luò),相較于NHR模型增加了兩個(gè)隱藏層,達(dá)到四層隱藏層,并直觀的將嵌入大小設(shè)置為128個(gè)電影字幕,32個(gè)Pins對(duì)象類(lèi)別和個(gè)人身份,4個(gè)職位名稱(chēng)和候選人過(guò)去職位,16個(gè)職位資格、職位說(shuō)明和候選人實(shí)驗(yàn)。通過(guò)優(yōu)化NCF的參數(shù)α來(lái)定義GMF和MLP之間的權(quán)衡。
為了解決缺乏負(fù)反饋[13]的問(wèn)題,實(shí)驗(yàn)采用從所有未觀察到的情況中抽取負(fù)實(shí)例。通過(guò)對(duì)每個(gè)正實(shí)例抽樣4個(gè)負(fù)實(shí)例來(lái)生成一組負(fù)反饋。與評(píng)估過(guò)程不同的是,在每次訓(xùn)練整個(gè)數(shù)據(jù)集開(kāi)始之前實(shí)時(shí)的隨機(jī)抽樣負(fù)訓(xùn)練實(shí)例。這使系統(tǒng)能夠盡可能多的從不同的實(shí)例中學(xué)習(xí),并在不影響數(shù)據(jù)集的可行性的情況下增加數(shù)據(jù)集的實(shí)用性。
實(shí)驗(yàn)采用留一交叉驗(yàn)證(leave-one-out),將數(shù)據(jù)集分割為訓(xùn)練集和測(cè)試集。此評(píng)估方法在許多文獻(xiàn)中[14],特別是在稀疏數(shù)據(jù)集的情況下得到廣泛應(yīng)用。用戶(hù)最新一次的交互作為測(cè)試集,其余作為訓(xùn)練集。訓(xùn)練集中用戶(hù)的最后一次交互,用于超參數(shù)調(diào)整。與類(lèi)似的研究一樣,實(shí)驗(yàn)從每個(gè)用戶(hù)中隨機(jī)抽取100個(gè)項(xiàng)目,并根據(jù)互動(dòng)概率對(duì)項(xiàng)目進(jìn)行排名。排名質(zhì)量由命中率(Hit Ratio,HR)和歸一化折損累計(jì)增益(Normalized Discounted Cumulative Gain,NDCG)來(lái)評(píng)估,實(shí)驗(yàn)將兩個(gè)指標(biāo)的排名列表截?cái)酁?0。如此一來(lái),HR可以直觀地衡量測(cè)試項(xiàng)目是否存在于前10名列表中,而DNCG通過(guò)將較高分?jǐn)?shù)指定為頂級(jí)排名來(lái)計(jì)算命中的位置。
表2、表3分別顯示了在不同數(shù)量的預(yù)測(cè)因子下,各算法在不同數(shù)據(jù)集中的HR@10和NDCG@10。BPR[15]是一種極具競(jìng)爭(zhēng)力的成對(duì)排序方法,對(duì)矩陣分解模型進(jìn)行了優(yōu)化并適用于隱式反饋。ALS[16]也是項(xiàng)目推薦的矩陣分解算法。為了確保對(duì)比實(shí)驗(yàn)的公平性,BPR和ALS算法的預(yù)測(cè)因子數(shù)量和神經(jīng)網(wǎng)絡(luò)模型中的數(shù)量相同。NFR在這兩個(gè)指標(biāo)的表現(xiàn)明顯優(yōu)于當(dāng)前最先進(jìn)的矩陣分解方法BPR和ALS。NCF是結(jié)合GMF和MLP方法的基于神經(jīng)網(wǎng)絡(luò)的最新協(xié)同過(guò)濾算法,它僅從交互數(shù)據(jù)中受益,并沒(méi)有完全考慮冷啟動(dòng)問(wèn)題。NHR是在NCF基礎(chǔ)上進(jìn)行改進(jìn),結(jié)合隱形反饋獲取顯性反饋無(wú)法獲取的有價(jià)值因素。NFR在兩個(gè)指標(biāo)的表現(xiàn)也始終優(yōu)于最具競(jìng)爭(zhēng)力的參照實(shí)驗(yàn)NCF和NHR。相比較于NCF和NHR,NHR在各數(shù)據(jù)集上的評(píng)估指標(biāo)都有一定程度的提高。實(shí)驗(yàn)結(jié)果同時(shí)表明,NFR模型不僅對(duì)前10位預(yù)測(cè)的準(zhǔn)確命中率高之外,而且讓NDCG分?jǐn)?shù)得到了較大的提高。
表2 不同數(shù)量預(yù)測(cè)因子下的HR@10
表3 不同數(shù)量預(yù)測(cè)因子下的NDCG@10
本文基于NCF通用框架模型,提出了融合輔助信息的深度神經(jīng)網(wǎng)絡(luò)組合推薦系統(tǒng)。實(shí)驗(yàn)設(shè)計(jì)通用框架NFR,通過(guò)融合輔助數(shù)據(jù)和歷史交互數(shù)據(jù)來(lái)對(duì)用戶(hù)和項(xiàng)目的交互進(jìn)行建模。相比較于NCF模型,NFR在輔助數(shù)據(jù)預(yù)處理方面更為完善,以及在隱藏層的設(shè)計(jì)方面更為復(fù)雜。通過(guò)對(duì)模型的擴(kuò)展,能夠挖掘來(lái)自相同數(shù)據(jù)源和不同數(shù)據(jù)源的更詳盡信息,有機(jī)會(huì)減輕依賴(lài)單方面數(shù)據(jù)源帶來(lái)的缺陷。模型不需要從零開(kāi)始訓(xùn)練完整的模型框架,取而代之的是,它允許推薦系統(tǒng)學(xué)習(xí)其組件功能的加權(quán)過(guò)程自我完善。