· 小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.
* 文章收錄於作者個人知乎專欄
「清風拂崗 明月映江」
歡迎搜索關注
# 往期精彩回顧 #