數(shù)據(jù)稀疏如何學(xué)好Embedding?
?在推薦系統(tǒng)中,冷啟動或長尾是一個常見的問題,模型在數(shù)據(jù)量較少的user或item上的預(yù)測效果很差。造成冷啟動樣本預(yù)測效果不好的重要原因之一是,冷啟動樣本積累的數(shù)據(jù)比較少,不足以通過訓(xùn)練得到一個好的embedding(通過user或item的id,映射到一個可學(xué)習(xí)的向量),進而導(dǎo)致模型在這部分樣本上效果較差。我曾經(jīng)在長尾預(yù)測效果不好怎么辦?試試這兩種思路中介紹過長尾問題的2種解法。
今天這篇文章整理了2020年以來SIGIR、Multimedia等頂會中,圍繞如何在數(shù)據(jù)不充分的情況下生成好的embedding表示的工作,主要集中在推薦系統(tǒng)領(lǐng)域user和item的embedding生成,解法包括domain adaptation、變分自編碼器、對比學(xué)習(xí)、引入用戶歷史行為序列等。
1.利用域自適應(yīng)解決冷啟動問題
利用Domain Adaptation解決長尾問題的典型論文是ESAM: Discriminative Domain Adaptation with Non-Displayed Items to Improve Long-Tail Performance(SIGIR 2020)。核心思路是通過特征分布、用戶反饋等信息,利用DA將尾部item對齊到頭部item上。
本文解決長尾item的預(yù)估準確性問題。長尾item指的是或者展現(xiàn)機會比較少的item,模型在這部分item學(xué)習(xí)不充分,會導(dǎo)致推薦過程中無法準確實現(xiàn)長尾item的推薦,這又進一步惡化了長尾item的學(xué)習(xí),形成馬太效應(yīng)。文中的一個核心假設(shè)是,無論一個item是否是長尾,它們的一些屬性信息是有關(guān)聯(lián)的,例如奢侈品類型的item價格都高、價格特征和品牌關(guān)系更大而和材質(zhì)關(guān)系小等等。這些特征之間的關(guān)聯(lián)是可以從頭部item泛化到長尾item上的。
本文主要采用Domain Adaptation的思路對齊頭部item和長尾item。首先將頭部item和長尾item分別視為source domain和target domain。整體的損失函數(shù)公式如下,包括4個部分:
其中Ls是頭部item和對應(yīng)query的預(yù)測誤差。LDA對應(yīng)attribute correlation congruence (A2C) ,其目標是為了縮小source domain和target domain特征關(guān)系的差異。由于希望長尾item各個特征之間的相互關(guān)系與頭部一致(例如上面的價格和品牌特征關(guān)系更相關(guān),和材質(zhì)關(guān)系弱的規(guī)律),這個底層特征規(guī)律也會反映到上層item特征表征向量上。因此這里使用下面公式計算兩個domain中,item向量各個維度之間的關(guān)系的一致性,實際采用mini-batch的方式采樣一部分樣本計算,公式如下(注意這里的h指的是多個樣本某一個維度的向量):
文中的另一個假設(shè)是如果兩個item相似,它們對應(yīng)的用戶反饋也應(yīng)該是相似的,不管是否是長尾item,基于此提出了center-wise clustering,也就是LDCc部分,讓具有相似用戶反饋的item距離更近。最后,文中引入了自監(jiān)督學(xué)習(xí)的思路,給未展現(xiàn)的item分配一個偽標簽,偽標簽來自于上一版模型的預(yù)測結(jié)果,并且通過正則化生成選擇那些足夠置信的偽標簽,這部分對應(yīng)LDCp
2.根據(jù)屬性特征生成embedding
根據(jù)屬性特征生成embedding是業(yè)內(nèi)解決冷啟動問題的常用做法。雖然對于冷啟動樣本,根據(jù)id生成embedding比較困難,但是這些user和item一般都有比較豐富泛化特征,例如用戶的年齡、愛好,商品的價格、品類等。因此可以將問題轉(zhuǎn)換為學(xué)習(xí)一個映射函數(shù),根據(jù)泛化特征生成id embedding。
第一篇文章是Recommendation for new users and new items via randomized training and mixture-of experts transformation(SIGIR 2020)。本文同時解決item側(cè)和user側(cè)的冷啟動問題,核心思路也是學(xué)習(xí)一個映射函數(shù),根據(jù)user或item的side information生成比較好的id embedding。本文主要包括3個核心點:學(xué)習(xí)side information到id embedding的映射函數(shù)、隨機化訓(xùn)練、多專家映射網(wǎng)絡(luò)。
在映射函數(shù)學(xué)習(xí)上,一方面在模型中只輸入side information生成user側(cè)和item側(cè)的表示計算loss;另一方面使用一個預(yù)訓(xùn)練的良好id embedding指導(dǎo)映射函數(shù)學(xué)習(xí),通過L2距離約束映射函數(shù)產(chǎn)出embedding和預(yù)訓(xùn)練embedding的距離。
在隨機化訓(xùn)練上,上面的框架可能存在一側(cè)信息學(xué)的不好影響了另一側(cè)的學(xué)習(xí)的情況。為了解決這個問題,在訓(xùn)練過程中會以一定概率選擇是使用預(yù)訓(xùn)練的embedding還是通過映射函數(shù)生成的embedding。
最后,以往的映射函數(shù)都是所有user或item共用一個,但是實際上一個映射函數(shù)可能無法兼容所有情況,例如存在兩個user的特征差別很大但是興趣類似的情況。為了解決這個問題,文中采用了多專家網(wǎng)絡(luò)的思路,采用多個專家網(wǎng)絡(luò)生成的embedding進行組合得到最終表示。
第二篇文章是Learning to warm up cold item embeddings for cold-start recommendation with meta scaling and shifting networks(SIGIR 2021)。本文的核心思路是,具有相似特征、相同用戶群體點擊的item應(yīng)該更相似,因此本文利用了item的屬性等特征以及user的特征對冷啟動item做warm-up。核心公式是下面的scale+shift操作:
scale操作使用的是item的屬性特征生成的向量,shift操作使用的是user的embedding。這兩種信息同時作用到初始的item embedding上,實現(xiàn)冷啟動embedding的warm-up。
在具體的訓(xùn)練方法上,首先使用所有數(shù)據(jù)訓(xùn)練一個基礎(chǔ)的推薦模型,然后固定住其他參數(shù)不變,使用非冷啟動item通過數(shù)據(jù)采樣的方式模擬冷啟動樣本,在這些樣本上單獨訓(xùn)練scale、shift網(wǎng)絡(luò)和item的embedding。冷啟動item的embedding使用預(yù)訓(xùn)練模型產(chǎn)出的全局所有item的embedding求均值得到,避免隨初始化影響模型訓(xùn)練。
在今年的SIGIR上,Improving Item Cold-start Recommendation via Model-agnostic Conditional Variational Autoencoder(SIGIR 2022)提出使用變分自編碼器提升使用特征生成id embedding的效果。這篇文章的解決item側(cè)的冷啟動問題,核心是利用Conditional Variational AutoEncoder(CVAE)對齊使用side information生成的item embedding和item的id embedding,這樣對于冷啟動樣本可以使用side information生成更好的embedding。具體做法是,使用兩個CVAE分別對item id生成的embedding和使用item的side information特征生成的embedding進行自編碼,在隱空間讓二者分布距離最小。在訓(xùn)練過程中,同一個樣本會先使用主模型預(yù)估ctr,然后再走另一個自編碼通道訓(xùn)練自編碼器。
使用CVAE有什么好處呢?因為目標是學(xué)習(xí)side information到item embedding的映射,而模型在訓(xùn)練過程中得到的item embedding不一定完全反映的是side information,還包含了和user的交互信息,這導(dǎo)致很難讓side information和item embedding對齊。因此文中采用CVAE,將item id embedding壓縮到隱空間去除噪聲,再在隱空間和side information側(cè)信息對齊。
3.基于對比學(xué)習(xí)學(xué)習(xí)embedding
基于對比學(xué)習(xí)學(xué)習(xí)embedding的典型工作是Contrastive learning for cold-start recommendation(Multimedia 2021)。這里也借助了item的屬性特征,通過對比學(xué)習(xí)拉近同一個item屬性特征生成的embedding和id得到的embedding的距離。
本文希望尋找一個本文通過對item表示最優(yōu)化的推導(dǎo),得出想要得到最優(yōu)的item表示需要同時優(yōu)化兩個互信息:第一個是根據(jù)歷史user-item的交互行為優(yōu)化user-item的互信息;第二個是item的協(xié)同過濾信號得到的embedding與使用內(nèi)容信息得到embedding的互信息。
在優(yōu)化上述互信息采用的是對比學(xué)習(xí)的方法學(xué)習(xí)。對于user-item的互信息,正樣本為有交互的user-item pair,負樣本中適應(yīng)隨機采樣的item,直接使用id embedding加上一個Encoder學(xué)習(xí)二者的協(xié)同過濾embedding。對于item-item的互信息,同一個item為正樣本,該item和其他隨機采樣的item為負樣本,對比學(xué)習(xí)讓通過內(nèi)容生成的embedding和協(xié)同過濾學(xué)到的embedding相似。
4.根據(jù)用戶歷史行為生成embedding
在今年SIGIR 2022中阿里發(fā)表了一篇文章Transform Cold-Start Users into Warm via Fused Behaviors in Large-Scale Recommendation(SIGIR 2022),主要利用用戶的歷史行為數(shù)據(jù)解決冷啟動user的問題,一個核心點是引入曝光未點擊的數(shù)據(jù)擴充冷啟動用戶稀疏的歷史行為。一般的做法是對冷啟動user生成一個更好的user id embedding。這種方法的缺點是生成user id embedding的網(wǎng)絡(luò)是用非冷啟動用戶訓(xùn)練的,而冷啟動用戶和非冷啟動用戶的特征分布差異很大,導(dǎo)致非冷啟動用戶上訓(xùn)練的embedding生成器在冷啟動用戶上可能并不適用。本文的做法是使用用戶的歷史行為作為context來warm up初始的user embedding。具體做法是將用戶歷史行為序列和初始的user embedding拼接后過Transformer,實現(xiàn)user embedding的轉(zhuǎn)換。
由于冷啟動user的歷史行為稀疏,點擊行為就更稀疏了,因此本文會將用戶歷史點擊和曝光未點擊的行為都加進來作為歷史行為序列,緩解冷啟動用戶的歷史行為序列稀疏問題。點擊和不點擊是兩種不同類型的交互行為,為了區(qū)分這兩種不同的交互行為,文中將行為序列中每個item的embedding做了一步label encoding的變換,用一個可學(xué)習(xí)的參數(shù)根據(jù)交互類型(點擊或未點擊)進行轉(zhuǎn)換,公式如下,其中rpos和rneg是兩個帶有可學(xué)習(xí)參數(shù)的轉(zhuǎn)換函數(shù),y是交互的類型:
最后,本文在訓(xùn)練過程中會將冷啟動user的embedding以一定概率替換成一個全局可學(xué)習(xí)的冷啟動embedding,幫助模型對齊冷啟動和非冷啟動的id embedding分布。
5.總結(jié)
本文主要圍繞推薦系統(tǒng)中,如何給冷啟動或長尾的樣本生成好的id embedding表示這一問題,介紹了近年來4種思路6篇頂會工作。包括domain adaptation、變分自編碼器、對比學(xué)習(xí)、引入用戶歷史行為序列等多種類型的解法。