【论文解读】SIGIR 2020 | 超越用户embedding矩阵:用哈希对大型用户建模
“?本文介紹了一種新的用戶偏好表示方法PreHash ,同時(shí)考慮到了大規(guī)模數(shù)據(jù)和冷啟動(dòng)用戶。該方法可以在很多推薦算法中替代其用戶embedding矩陣。若干SOTA算法上的實(shí)驗(yàn)結(jié)果顯示該算法不僅取得了更好的效果,還減少了模型的參數(shù)。”
作者:胖魚,北京交大研究生在讀,方向?yàn)闄C(jī)器學(xué)習(xí),推薦系統(tǒng)。
「0?摘要:」
論文標(biāo)題:Beyond User Embedding Matrix: Learning to Hash for Modeling Large-Scale Users in Recommendation(后臺(tái)回復(fù)【prehash】可下載論文)
處理 「大規(guī)模數(shù)據(jù)」 和 「冷啟動(dòng)用戶」是推薦系統(tǒng)的兩大挑戰(zhàn)。在真實(shí)場(chǎng)景(千萬(wàn)級(jí)別用戶)下,很難利用用戶的embedding矩陣儲(chǔ)存?zhèn)€性化的用戶偏好。許多研究者關(guān)注具有豐富歷史信息的用戶,然而,在真實(shí)的系統(tǒng)里,大多數(shù)用戶都只有少量交互信息。在本文的工作中,作者提出了一種新的「用戶偏好表示方法PreHash」 ,同時(shí)考慮到了大規(guī)模數(shù)據(jù)和冷啟動(dòng)用戶。在該方法中,根據(jù)用戶的 「歷史交互信息」 生成了一系列 「籃子」。具有相似偏好的用戶自動(dòng)被分在用一個(gè)籃子。之后將會(huì)學(xué)習(xí)每一個(gè)籃子的表示。在設(shè)計(jì)籃子時(shí),只有有限的參數(shù)被儲(chǔ)存,這樣大大節(jié)省了內(nèi)存。更重要的是,當(dāng)用戶進(jìn)行新的交互行為后,他的籃子和表示會(huì)相應(yīng)的更新,這樣可以更有效得理解和建模用戶。該算法還十分靈活,「可以在很多推薦算法中替代其用戶embedding矩陣」。因此,我們?cè)诤芏郤OTA算法上進(jìn)行了實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果展示該算法不僅取得了更好的效果,還減少了模型的參數(shù)。
「1 Introduction:」
個(gè)性化的用戶偏好向量在推薦系統(tǒng)里非常重要。先前的工作為每個(gè)用戶生成其偏好特征向量,并把他們當(dāng)作特征矩陣儲(chǔ)存。矩陣分解方法通常使用一個(gè)特定向量表示用戶。一些深度模型也使用embedding層將用戶映射為偏好向量。
然而,這些方法 「很難應(yīng)用于實(shí)際的大規(guī)模數(shù)據(jù)」 上。原因之一是,儲(chǔ)存這樣一個(gè)用戶 「embedding矩陣」很困難(內(nèi)存和計(jì)算時(shí)間)。同時(shí),其無(wú)法考慮到冷啟動(dòng)用戶。最后,這些算法無(wú)法做到 「增量學(xué)習(xí)」 ,即在更新用戶特征向量時(shí)只能重新訓(xùn)練模型。
構(gòu)建用戶偏好特征向量的簡(jiǎn)單方法就是將與之交互過的物品向量求和。然而對(duì)于冷啟動(dòng)用戶,這樣的方法不適用。
本文提出的PreHash方法是一種靈活的用戶偏好表示模塊,可以 「替代很多推薦方法中的用戶embedding矩陣」 。PreHash有兩個(gè)部分,「歷史部分和hash部分」 。歷史部分使用一個(gè)注意力網(wǎng)絡(luò)提取 「歷史偏好向量」 。在hash部分,有 「許多籃子」,每一個(gè)籃子包含偏好相似的用戶。Hash部分最重要的功能是 「對(duì)于每一個(gè)用戶」 ,他都會(huì)找到一些與其 「行為類似的頻繁用戶」 。
「3 用戶偏好哈希:」
「3.1核心思想」
學(xué)習(xí)用戶偏好向量通過兩種方式:用戶近期交互過的物品,與當(dāng)前用戶有相似偏好的其他用戶。因此使用一個(gè)history part從用戶的交互歷史中學(xué)到用戶的歷史偏好。為了找到與當(dāng)前用戶偏好類似的用戶,這里設(shè)計(jì)了一個(gè)hash part建模用戶的hash偏好向量。最后用注意力網(wǎng)絡(luò)將兩個(gè)part混合。
biasedMF,相對(duì)于普通的矩陣分解加上了biases項(xiàng)。PreHash將其用戶表示部分u替換。
「3.2歷史部分」
這一部分從用戶 「以往的交互信息中捕獲了偏好」 。考慮到每當(dāng)對(duì)于一個(gè)新的物品,有一些物品能顯著表達(dá)用戶偏好,而一些物品則不行。所以這里采取了「注意力網(wǎng)絡(luò)對(duì)物品向量加權(quán)」 。v是目標(biāo)物品的向量。權(quán)重可以看做 「當(dāng)前物品和歷史物品的關(guān)聯(lián)程度」 。根號(hào)l是對(duì)交互次數(shù)做標(biāo)準(zhǔn)化。
關(guān)于注意力網(wǎng)絡(luò)的解釋:是否購(gòu)買iphone,與用戶以前購(gòu)買的book信息無(wú)關(guān)。
「3.3哈希部分」
僅僅利用 「歷史向量不足以捕獲用戶偏好」 ,因?yàn)楹芏?「新用戶沒有足夠的交互信息」 。這里使用了一個(gè)哈希模塊, 「根據(jù)與目標(biāo)用戶的相似性」(根據(jù)歷史物品交互),找到 「一些頻繁用戶來(lái)表示目標(biāo)用戶」 。哈希部分的功能就是用有限的空間儲(chǔ)存和計(jì)算偏好。
在哈希部分,偏好類似的用戶使用共同的桶來(lái)儲(chǔ)存偏好。「當(dāng)有新的交互后,這一部分可以動(dòng)態(tài)更新。」
「3.3.1 哈希桶」
用來(lái)儲(chǔ)存類似用戶的偏好。「首先將每個(gè)桶a與一個(gè)頻繁用戶u綁定」 。將其稱作“錨用戶”。他們最終的哈希向量直接來(lái)源于a:
在這里的哈希函數(shù)可以看做 「輸入用戶歷史向量,輸出其哈希向量」 。
這里的 「頻繁用戶可以被預(yù)先定義」 。本文采取簡(jiǎn)單的策略,直接 「選取交互行為最多的用戶」 。
對(duì)于其余用戶,PreHash使用層級(jí)哈希找到最關(guān)聯(lián)的籃子。然后將籃子向量加權(quán)求和得到當(dāng)前用戶的哈希向量。
「3.3.2層級(jí)哈希」
一個(gè)全連接樹,歷史向量u作為輸入,每一個(gè)節(jié)點(diǎn)有一個(gè)決策向量n,從父節(jié)點(diǎn)繼承權(quán)重。第i層第j個(gè)節(jié)點(diǎn)。假定其有c個(gè)子節(jié)點(diǎn),其權(quán)重分配:
目的也是為了獲得用戶和桶的關(guān)聯(lián)權(quán)重。
為什么采用哈希?提高計(jì)算效率。
「3.3.3Top-k加權(quán)求和」
為了得到用戶哈希偏好,這里不對(duì)所有的籃子加權(quán)求和,只考慮 「關(guān)聯(lián)最大的k個(gè)籃子」
「3.4模型輸出」
為了生成最終的用戶偏好向量,PreHash使用一個(gè)注意力網(wǎng)絡(luò)。將 「兩個(gè)向量變成最終的用戶表示」 。類似加權(quán)求和的效果。
「4 實(shí)驗(yàn)設(shè)置」
「數(shù)據(jù)集:」 亞馬遜電子商務(wù)數(shù)據(jù)集的四個(gè)子集,以及RecSys Challenge 2017數(shù)據(jù)集。
「Baseline:」 矩陣分解的經(jīng)典方法,以及深度的經(jīng)典方法Wide&Deep等
「訓(xùn)練:」 將任務(wù)視為top-n推薦。使用 「pair-wise訓(xùn)練策略」 (BPR那篇文章)訓(xùn)練所有的模型。對(duì)每一個(gè)正交互樣本,隨機(jī)采樣其負(fù)樣本。
是相應(yīng)的預(yù)測(cè)結(jié)果。損失函數(shù)鼓勵(lì)對(duì)正樣本的預(yù)測(cè)高于負(fù)樣本。
「5 實(shí)驗(yàn)結(jié)果分析」
實(shí)驗(yàn)部分寫的很清楚,首先提出了四個(gè)需要回答的問題,之后逐一驗(yàn)證。
「5.1有效性」
首先,兩種常見的矩陣分解方法取得了最差的效果,這是由于數(shù)據(jù)的稀疏性。FISM遠(yuǎn)遠(yuǎn)好于其他方法。他沒有用戶偏好矩陣,而是直接根據(jù)物品相似性進(jìn)行推薦。結(jié)果說(shuō)明了「矩陣分解方法在大型稀疏數(shù)據(jù)集上效果很差」,必須采取新的方法來(lái)考慮用戶偏好。FISM是基于物品相似度的方法,也表明了基于用戶交互項(xiàng)進(jìn)行用戶表示的方法比使用user embedding矩陣的方法好。這也驗(yàn)證了最近發(fā)現(xiàn)的ItemKNN要比很多SOTA網(wǎng)絡(luò)方法好。
為什么加上PreHash之后標(biāo)準(zhǔn)的矩陣分解方法效果變好了很多?原因在于在進(jìn)行目 「標(biāo)物品推薦」 的時(shí)候,獲取了 「每名用戶的歷史信息」。對(duì)于每名目標(biāo)用戶,hash部分幫助找到一些相關(guān)的籃子來(lái)儲(chǔ)存類似用戶的偏好。這些 「歷史信息對(duì)為每位用戶的推薦有幫助」,特別是冷啟動(dòng)用戶。除此以外的優(yōu)點(diǎn):省內(nèi)存。
「5.2高效性」
根據(jù)結(jié)果列表,可以看出PreHash的方法相比原始方法大大 「節(jié)省了參數(shù)」 。
「5.3靈活性」
驗(yàn)證是否可以在深度模型中使用:
深度模型好的原因是其 「利用到了review信息」 。三個(gè)深度模型的參數(shù)相同原因是相比于用戶物品embedding矩陣而言,其網(wǎng)絡(luò)參數(shù)數(shù)量可忽略。
「5.4在冷啟動(dòng)用戶上」
測(cè)試集上的用戶被劃分為了三個(gè)不同類別。以往少于三次交互的成為冷啟動(dòng)用戶
實(shí)驗(yàn)結(jié)果表明,效果在三個(gè)部分都有提升。PreHash好的原因是在hash部分 「顯式得利用到了同組頻繁用戶」 (warm user)的偏好。
「6.1剝離實(shí)驗(yàn)」
「去除hash part,只包含history part的效果已經(jīng)比較好」 。因?yàn)樵诰仃囘^于稀疏時(shí),矩陣分解中的潛向量很難捕捉到用戶歷史和偏好。但是「history part可以捕捉到」 。
與一些聚類算法相對(duì)比(用聚類id用戶)。展示了PreHash在建模相似用戶偏好的有效性。
「6.2參數(shù)敏感度」
籃子的個(gè)數(shù)增加時(shí),性能是先減小在增加,這說(shuō)明可能當(dāng)籃子數(shù)量小時(shí)反而會(huì)引起組內(nèi)混亂。
「6.3案例分析」
為了觀察PreHash在籃子中學(xué)到了什么。檢索了每個(gè)籃子里出現(xiàn)次數(shù)最多物品。可以觀察到,在層級(jí)hash后,兩個(gè)籃子相關(guān)但是彼此不同。兩個(gè)籃子分別是游戲軟件和硬件。證明PreHash中算法的有效性。
「對(duì)我們的啟發(fā):」
用戶建模部分一定要關(guān)注 「冷啟動(dòng)用戶」 ,可以將其與頻繁用戶關(guān)聯(lián)。
在融合兩方面的特征時(shí),可以使用一些技巧代替直接concat。
總結(jié)
以上是生活随笔為你收集整理的【论文解读】SIGIR 2020 | 超越用户embedding矩阵:用哈希对大型用户建模的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NLP】医学AI又一突破,微软开源生物
- 下一篇: 【数学基础】一份非常适合人工智能学习的高