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