推薦系統經常面臨長尾問題,例如商品的分布服從冪率分布導致非常多的長尾樣本只出現過很少的次數,模型在這部分樣本上的效果比較差。對長尾樣本增加權重,或者通過采樣的方法增加長尾樣本,又會影響數據分布,進而造成頭部樣本效果下降。針對這類問題,谷歌提出了一種可以實現頭部樣本知識遷移到尾部樣本的遷移學習框架,使推薦系統中長尾預測問題效果得到顯著提升,并且頭部的預測效果也沒有受到損失,實現了頭部尾部雙贏。
文中提出的遷移學習框架主要包括model-level transfer和item-level transfer。其中model-level transfer通過學習一個多樣本模型和一個少樣本模型,并學習一個二者參數的映射函數,實現模型參數上的遷移;item-level transfer通過對模型訓練流程的優化,讓映射函數同時能夠學到頭部item和尾部item之間的特征聯系。
1
Model-level Transfer
Model-level Transfer的核心思路是學習many-shot model和few-shot model的參數映射關系,這個思路最早來源于2017年NIPS上的一篇文章Learning to Model the Tail(NIPS 2017)。比如下面的例子中,living room是頭部實體,可以利用living room結合不同的樣本量,學到模型參數是如何從one-shot(theta1)變換到two-shot(theta2)一直到many-shot(theta*)。那么對于一個tail實體library,模型只能通過few-shot學到一個模型參數,但是可以利用在many-shot上學到的參數變化經驗推導出library上的參數變化。通過不斷增加數據,模型參數發生變化,模型學習的是數據增強的過程如何影響了模型參數變化。
在推薦系統中也是同理,給定一個item和user的反饋信息,模型隱式的學習如何增加更多user的反饋信息幫助這個item的學習,也就是從少數據到多數據的模型參數變化過程。
基于上述思路,本文通過一個meta-learner學習這種參數隨著shot增加的映射關系。首先構造兩種類型的數據集,第一種數據是利用頭部商品構造的many-shot訓練數據,用來訓練一個base-learner;第二種數據是在頭部數據中進行下采樣,模擬得到的few-shot訓練數據。Meta-learner是一個函數,輸入few-shot模型的參數,預測出many-shot模型的參數,即學習這個映射關系,損失函數如下,第一項是預測many-shot參數的損失,第二項是在few-shot數據上模型的預測效果:
其中,本文主要優化的部分是base-learner在user和item網絡中的最后一層參數,因為如果學習全局參數的映射關系,計算復雜度太高。
2
量Item-level Transfer
在model-level transfer中我們提到,需要構造一個many-shot數據集和few-shot數據集。一種常用的方法是根據頭部數據(例如樣本數量大于一定閾值的)構造many-shot數據,同時利用頭部數據做下采樣構造few-shot數據。但是在推薦系統中,尾部item的數量眾多,只根據頭部item這個參數的映射關系可能在尾部item上效果不好。因此本文提出了一種curriculum transfer的方法。
具體的,在數據集的構造上,many-shot使用了包括頭部和尾部所有item的數據構成(如上圖中的黃色區域),few-shot使用了頭部item下采樣加所有尾部item構成(如上圖中的藍色區域)。這種方式保證了many-shot和few-shot模型在訓練過程中都能充分見到長尾樣本,提升item表示的學習效果,同時也能在few-shot訓練時,保證尾部數據的分布仍然是接近初始的長尾分布,緩解分布變化帶來的bias。同時在損失函數中,引入了logQ correction,根據樣本量平衡頭部樣本和尾部樣本對模型的影響,曾經在Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations(2017)等論文中應用過。
3
模型預測
在預測過程中,會融合base-learner得到的user表示,以及經過meta-learner根據few-shot學到的參數融合到一起進行預測,通過一個權重平衡兩個表示,公式如下:
對于長尾user,也可以利用相似的方法解決。此外,文中也提出可以采用多階段的meta-learner學習方法,例如從1-shot到2-shot再到many-shot,串行學習多個meta-learner,這與Learning to Model the Tail(NIPS 2017)提供的方法比較相似。
4
實驗結果
作者在多個數據集上對比了一些解決長尾問題的方法效果,實驗結果如下表。可以看到,本文提出的MIRec方法效果要明顯好于其他方法。作者的實驗基礎模型是一個user側和item側的雙塔模型,具體的長尾優化對比模型包括re-sampling類型方法(如上采樣和下采樣)、損失函數方法(如logQ校準、classbalance方法,二者思路都是在損失函數中引入不同樣本頻率加權樣本)、課程學習方法(Head2Tail,即先在全量樣本上預訓練,再在尾部樣本上finetune,Tail2Head是反過來的操作)、基于Meta-learning的方法(MeLU)。
從上面的實驗結果可以看出幾個關鍵點。首先,sampling-based方法效果非常差,這主要是由于sampling改變了數據本身的分布,而推薦系統中,模型的效果對于數據分布是非常敏感的,使用真實分布的數據訓練效果會更好。其次,基于loss加權的方法如ClassBalance和LogQ,對于長尾的效果提升非常明顯,但是對于頭部item有明顯的負向影響。最后,MIRec在頭部和長尾都實現了效果提升,這是其他模型很難做到的。
5
總結
本文介紹了谷歌提出的解決推薦系統中長尾item或user預測效果的遷移學習框架,通過many-shot到few-shot的參數規律變化學習,結合對數據分布的刻畫,實現了頭部、尾部雙贏的推薦模型。
-
谷歌
+關注
關注
27文章
6223瀏覽量
107569 -
數據
+關注
關注
8文章
7242瀏覽量
91042 -
函數
+關注
關注
3文章
4371瀏覽量
64230
原文標題:谷歌MIRec:頭部尾部雙贏的遷移學習框架
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
遷移學習
卷積神經網絡長尾數據集識別的技巧包介紹
谷歌FHIR標準協議利用深度學習預測醫療事件發生

谷歌發布機器學習框架:一個名叫NSL的神經結構學習框架
解決長尾和冷啟動問題的基本方法
一個基于參數更新的遷移學習的統一框架
一個通用的時空預測學習框架

評論