Few-shot Learning用於個性化推薦冷啟動的探索

2021-02-20 平安壽險PAI


· 小PAI導讀 ·

在推薦領域中,如何在只有少量用戶數據的情況下設計個性化推薦系統,並達到相對準確的推薦結果,這是領域內受到廣泛關注的一大問題。

本文作者吳岸城老師、謝小文老師,使用小樣本學習模型在內容個性化推薦案例上進行嘗試,通過對比模型效果,指出小樣本學習模型在樣本量比較匱乏的情況下,是優於一般模型的。接下來就跟小PAI一起看看兩位老師的具體探索過程吧~

在推薦領域,我們常常會遇到冷啟動的問題,這可能在所有的推薦項目中或多或少都會涉及。對於該問題,通常的解決方法如下: 

①(提供非個性化的推薦)比如先推薦熱門排行榜,收集一定用戶數據後,再進行個性化推薦;

②(用戶冷啟動)利用註冊時的用戶信息粗粒地個性化推薦;

③(用戶冷啟動)使用用戶註冊登錄後對某些物品進行反饋的興趣信息進行個性化推薦。;

④(物品冷啟動)對於新加入的物品,可以利用內容信息,將它們推薦給喜歡過和它們相似的物品的用戶;

⑤(系統冷啟動)引入專家的知識,迅速建立起物品的相關度表。

第1、2條非推薦冷啟動,只是一種通常做法;第3條需要用戶自己填寫關鍵信息,體驗比較差,而且大部分數據缺失(用戶不願意填寫);第5條不予考慮,專家知識一是很難獲取,二是個性化不夠。  

 

第4條則有點像我們今天要解決的問題,只不過傳統的方法需要大量喜歡過相似物品的用戶。而我們所設定的環境是在只有很少數據的情況下做啟動數據集,這種少量數據學習能力來自於人類。  

 

人類非常善於抽象的學習,比如我們看了一隻鴨和一隻鵝,被告知這是鳥類。再看到一隻山雞(第一次看),就大致的猜到同樣屬於鳥類。人類先對於鴨子這種具體動物進行學習,並進行高維抽象,抽象出來的特徵可能是滿足長脖子小腦袋,細腿的就可以歸為鳥類了。人類對於動物的這種學習能力的整個過程可以歸納成神經網絡訓練模式:  

 

訓練階段,在訓練集中隨機抽取 C 個類別,每個類別 K 個樣本(總共 C*K 個數據),構建一個meta-task,作為模型的支撐集(support set)輸入;再從這 C 個類中剩餘的數據中抽取一批(batch)樣本作為模型的預測對象(batch set)。即要求模型從 C*K 個數據中學會如何區分這 C 個類別,這樣的任務被稱為 C-way K-shot 問題

訓練過程中,每次訓練(episode)都會採樣得到不同 meta-task,所以總體來看,訓練包含了不同的類別組合,這種機制使得模型學會不同 meta-task 中的共性部分,像如何提取重要特徵及比較樣本相似等。通過這種學習機制學到的模型,在面對新的未見過的任務時,也能較好地進行分類。 

我們將嘗試用什麼方法進行訓練或者學到特徵呢?最近幾年的小樣本學習(Few shot Learning)研究主要分為三個類別:

根據我們任務的特點決定先使用metric based方法進行嘗試。

在內容個性化推薦這個案例上做一些步驟分解和實驗。

 

① 對於如何獲取,初始的少量樣本集我們請九名其他項目組的同事幫忙標註,簡單來說,就是讓他們在觀看了感興趣文章之後進行了點擊的動作,並記錄了點擊動作。

② 將用戶和搜索欄位進行交叉組合,這裡為簡化整個模型表示,將搜索欄位和內容的標籤進行組合。這樣總共得到四十九類,我們從中挑出來十九類作為測試集,在剩下的三十類中訓練模型。

③ 模型結構:使用方案為三層模型,用該模型做一般方法的模型測試,將結果和我們的少樣本學習模型進行對比。


1. 數據

1.1 樣本標註

用戶在聚合搜索demo上不同query下的瀏覽點擊行為;

在每個query返回的新聞中,被點擊的新聞標記為1;

未點擊且新聞的位置位於任意一條被點擊的新聞的上方,則標記為0。

1.2 欄位說明

1.3 樣本量

9名同事幫忙進行了標註

總樣本量:756

1.4 樣本劃分

array(['2_健康養生', '2_娛樂', '2_遊戲', '2_財經', '2_教育', '2_文化', '2_科技', '2_社會',  '2_母嬰育兒', '3_娛樂', '3_時事', '3_遊戲', '3_財經', '3_科技', '3_社會', '4_健康養生',  '4_娛樂', '4_時事', '4_遊戲', '4_財經', '4_教育', '4_文化', '4_科技', '4_社會',  '4_母嬰育兒', '5_健康養生', '5_娛樂', '5_時事', '5_遊戲', '5_財經', '5_教育', '5_文化',  '5_科技', '5_母嬰育兒', '5_社會', '8_娛樂', '8_財經', '8_科技', '8_母嬰育兒', '9_遊戲',  '9_社會', '10_健康養生', '10_財經', '10_文化', '10_科技', '10_社會', '13_遊戲',  '13_財經', '7_科技'], dtype=object)  

 

uid+query組合總共49類,從中隨機挑選19類作為測試集,在剩下的30類中訓練模型。  

2. 常規機器學習方案

2.1 模型

2.2 訓練過程

2.3 模型效果

測試集樣本比例: 10.08%

roc-auc: 0.7212

預測為正樣本的概率分布

0.0 0.007172

0.1 0.009078

0.2 0.010963

0.3 0.012515

0.4 0.015086

0.5 0.018062

0.6 0.023171

0.7 0.055075

0.8 0.148563

0.9 0.462343


希望正樣本的召回率儘可能高,但是整體準確率不低於70%,設置閾值為0.17。

正樣本召回率58%,正樣本準確率19%。 

3. Few-shot learning

3.1 模型

左右對稱的孿生網絡,共享embedding層與gru層;

每一半的結構與2.1中的結構一致,分別處理support set與query set的數據;

最後將support set與query set的向量相減後連接全連接層輸出,support set與query set對應的樣本是否為同一類。

3.2 模型訓練

在訓練集中,每次隨機抽取10類,並在這10類中隨機抽取10個樣本作為support set,並將這10類中的剩餘樣本作為query set;

在抽取出的每一類中排列組合support set與query set中的樣本構成樣本對,對應的y為兩個樣本是否為同類;

經過預訓練,確認迭代次數(episode)為58次效果最好。

模型改進

在經典的孿生網絡中,從support set中找出與query樣本最接近的support樣本,並以它的標籤作為結果輸出,這將導致模型無法輸出連續的概率值,受限較多。

因為在冷啟動時正樣本(點擊新聞)的比例較低,而我們更加關注的也是正樣本,因此在support set與query set配對時,只考慮正樣本support set與query樣本的配對,並將正樣本中匹配度最高的概率值作為預測正樣本的概率輸出,這樣就可以計算roc-auc,並且調整閾值獲取不同要求的分類器。

3.3 模型效果

測試集樣本比例: 10.08%

roc-auc: 0.7932

預測為正樣本的概率分布

0.0 0.148644

0.1 0.518002

0.2 0.593140

0.3 0.622962

0.4 0.639287

0.5 0.652968

0.6 0.666845

0.7 0.680736

0.8 0.707907

0.9 0.784186

希望正樣本的召回率儘可能高,但是整體準確率不低於70%,設置閾值為0.65。

正樣本召回率75%,正樣本準確率23%。

4. 模型對比

可以看出,小樣本學習的模型結果比正常模型的結果的幾個指標都要好。當然因為現在的測試用樣本量較少,無法準確地描述出差距。但多次實驗結果表明:總體來說,小樣本學習模型,在樣本量比較匱乏的情況下,是優於一般模型的。


5. 改進方向


Reference:

[1] Oriol Vinyals』 talk on 「Model vs Optimization Meta Learning」

[2] Gregory Koch, Richard Zemel, and Ruslan Salakhutdinov. 「Siamese neural networks for one-shot image recognition.」 ICML Deep Learning Workshop. 2015.

[3] Oriol Vinyals, et al. 「Matching networks for one shot learning.」 NIPS. 2016.

[4] Flood Sung, et al. 「Learning to compare: Relation network for few-shot learning.」 CVPR. 2018.

[5] Jake Snell, Kevin Swersky, and Richard Zemel. 「Prototypical Networks for Few-shot Learning.」CVPR. 2018.

[6] Adam Santoro, et al. 「Meta-learning with memory-augmented neural networks.」 ICML. 2016. 

[7] Alex Graves, Greg Wayne, and Ivo Danihelka. 「Neural turing machines.」 arXiv preprint arXiv:1410.5401 (2014).

[8] Tsendsuren Munkhdalai and Hong Yu. 「Meta Networks.」 ICML. 2017.

[9] Sachin Ravi and Hugo Larochelle. 「Optimization as a Model for Few-Shot Learning.」 ICLR. 2017.

* 文章收錄於作者個人知乎專欄

「清風拂崗 明月映江」

歡迎搜索關注

# 往期精彩回顧 #



相關焦點

  • 小樣本學習(Few-shot Learning)綜述
    few-shot learning framework。相反,很多非參數化的方法(最近鄰、K-近鄰、Kmeans)是不需要優化參數的,因此可以在 meta-learning 的框架下構造一種可以端到端訓練的 few-shot 分類器。該方法是對樣本間距離分布進行建模,使得同類樣本靠近,異類樣本遠離。下面介紹相關的方法。
  • 從Few-shot Learning再次認識機器學習
    當我看完 《Generalizing from a few examples: A survey on few-shot learning》 這篇文章的時候,我對於機器學習又有了一種新的,與其說它讓我理解了什麼是Few-shot learning,不如說它讓我明白了如何更好地處理機器學習問題,不論是科研還是在實際應用當中(可以說是所有其它模型算法),都可以從文章指出的三個角度去考慮:數據、模型、算法
  • 【NLP筆記】Few-shot learning 少樣本學習
    learning,這裡shot 有計量的意思,指少樣本學習,機器學習模型在學習了一定類別的大量數據後,對於新的類別,只需要少量的樣本就能快速學習,對應的有one-shot learning, 一樣本學習,也算樣本少到為一的情況下的一種few-shot learning, 這裡的少樣本學習的研究領域與遷移學習有一大部分交集部分,即在源域有足夠多樣本,而在目標域樣本不足。
  • 最新小樣本學習Few-Shot Learning的四大Model方法
    Task-Invariant Embedding Model任務不變的嵌入方法從包含足夠樣本且具有各種輸出的大規模數據集中學習通用嵌入函數,然後將其直接用於新的few-shot DtrainDtrain,而無需重新訓練(圖7)。第一個FSL嵌入模型[36]使用內核嵌入樣本。最近,卷積孿生網絡[20]學會了更複雜的嵌入[70,150]。
  • ICLR 2017 | Highlight 1: Meta- and Few-shot Learning
    剛剛參會回來的小S 經過多方學習,總結出了幾個專題,也是個人認為現在 ICLR 等 learning 和 DL 相關會議與學者比較關注的方向。首當其中可能就是比較 fancy 但其實很本質的 meta-learning 和 few-shot learning。
  • One-Shot Relational Learning for Knowledge Graphs-2
    論文閱讀報告參考https://zhuanlan.zhihu.com/p/108202429https://zhuanlan.zhihu.com/p/59646318    上一篇文章已經簡單翻譯了一下論文,其中作者的主要工作有:1)構建了兩個數據集用於
  • 聊聊zero-shot learning 和 one-shot learning
    "Zero-shot learning with semantic output codes." Advances in neural information processing systems. 2009.
  • Twitter 又一力作:對Few-shot learning中的優化進行建模 | ICLR...
    論文摘要雖然當下深度神經網絡算法在大規模數據集上取得了巨大的成功,但是這類算法在少量學習(Few-shot Learning)任務中的表現卻往往不如人意,這是因為在少量學習任務中要求分類器能夠在經過每個類別的少量樣本訓練之後快速具備泛化能力。
  • ...又一力作:對Few-shot learning中的優化進行建模 | ICLR 2017
    論文摘要雖然當下深度神經網絡算法在大規模數據集上取得了巨大的成功,但是這類算法在少量學習(Few-shot Learning)任務中的表現卻往往不如人意,這是因為在少量學習任務中要求分類器能夠在經過每個類別的少量樣本訓練之後快速具備泛化能力。
  • Few-Shot Learning概述
    但基於小樣本的模型訓練又在工業界有著廣泛的需求(單用戶人臉和聲紋識別、藥物研發、推薦冷啟動、欺詐識別等樣本規模小或數據收集成本高的場景),Few-Shot Learning(小樣本學習)通過將有限的監督信息(小樣本)與先驗知識(無標記或弱標記樣本、其他數據集和標籤、其他模型等)結合,使得模型可以有效的學習小樣本中的信息。
  • Few-Shot學習文獻閱讀(1)
    這一發現源於我們的因果假設:一種結構因果模型(SCM),用於預先訓練的知識,樣本特徵和標籤之間的因果關係。多虧了它,我們提出了一種新穎的FSL範式:介入式少量學習(IFSL)。具體來說,我們基於後門調整開發了三種有效的IFSL算法實現,這實際上是對多次學習的SCM的因果乾預:因果視圖中的FSL上限。
  • 【深度神經網絡 One-shot Learning】孿生網絡少樣本精準分類
    實際上,神經網絡分類器在Omniglot數據集上不會有什麼良好的表現,因為每類的樣本僅有幾個,即使是微調最後一層的權重,網絡也會在訓練集上過擬合。但這種方法也比使用L2距離的 k-近鄰方法要好很多了(參考Matching Networks for One shot learning 中對各種單樣本學習方法的效果的比較)。這裡還是有一種方法來做單樣本學習的!忘了1近鄰方法?
  • 新書推薦 | Deep Reinforcement Learning
    一方面可以幫助讀者從零開始學習強化學習,到深入具體的研究方向;另一方面可以幫助讀者快速地把深度強化學習技術用於實際項目中。董豪,北京大學前沿計算研究中心助理教授。於2019年秋獲得英國帝國理工學院博士學位。研究方向主要涉及深度/機器學習和計算機視覺,及機器人和醫療健康中的應用,目的是降低學習智能系統所需要的數據。
  • Get the Chinese learning book level 2 by free immediately
    Hello friends, a few days ago we have share with all our fans of the Chinese learning book《Easy to learn Chinese》level1.
  • 【博士論文】基於網絡特徵學習的個性化推薦系統
    https://www.ccf.org.cn/Focus/2020-12-03/717578.shtml基於網絡特徵學習的個性化推薦系統在當今信息爆炸的時代,個性化推薦系統(personalized recommender systems)是面向用戶的網際網路產品的核心技術。
  • 【論文推薦】最新5篇度量學習(Metric Learning)相關論文—人臉驗證、BIER、自適應圖卷積、注意力機制、單次學習
    作者:Oriol Vinyals,Charles Blundell,Timothy Lillicrap,Koray Kavukcuoglu,Daan Wierstra摘要:Learning from a few
  • 深度學習技術在美圖個性化推薦的應用實踐
    美圖社區個性化推薦場景與挑戰1. 業務場景美圖社區個性化推薦場景大大小小有十多個,其中流量比較大的場景是美圖秀秀 app 的社區內容推薦 tab ( 圖 1 ),這個場景以雙列瀑布流的形態給用戶推薦他最感興趣的內容。
  • 推送系統從0到1(八):個性化精準推送的實現
    (3)基於知識推薦使用用戶知識和產品知識, 通過推理什麼產品能滿足用戶需求來產生推薦。這種推薦系統不依賴於用戶評分等關於用戶偏好的歷史數據, 故其不存在冷啟動方面的問題。基於知識的推薦系統響應用戶的即時需求, 當用戶偏好發生變化時不需要任何訓練。二.