論文地址:https://arxiv.org/abs/1904.11547
官方代碼:https://github.com/Feiyang/MetaEmbedding
一 為什么讀這篇
最近在做提高時效性的工作则果,范圍放大點就是解決所謂item冷啟動問題诈乒,恰逢讀完DIN孽文,看到參考DIN的論文有這么一篇,題目就很扣題了劲够,正是瞌睡遇上枕頭,第一時間讀下层亿,參考一下思路橡娄,看看對于解手頭問題有沒有幫助。
二 截止閱讀時這篇論文的引用次數(shù)
2019.9.29 1次鳖敷。畢竟今年4月才出脖苏,另外解決的問題域也確實更細分點,所以引用很少定踱。
三 相關(guān)背景介紹
19年4月掛到arXiv上棍潘,中了19年的SIGIR。中科院出品崖媚,也有清華的唐平中老師加持亦歉,一作“肥羊”就有意思了,玩kaggle時各種屠榜畅哑,現(xiàn)在是中科院的博士生肴楷,也在螞蟻實習(xí),估計阿里星沒跑了荠呐。
四 關(guān)鍵詞
CTR
Embedding
Cold Start
meta-learning
learning to learn
五 論文的主要貢獻
1 引入元學(xué)習(xí)來解決冷啟動問題
2 給ID Embedding更好的初始化
六 詳細解讀
0 摘要
為了解決冷啟動問題赛蔫,本文提出Meta-Embedding,這是一種基于元學(xué)習(xí)的方法泥张,可以習(xí)得為新廣告ID生成理想的初始化Embedding濒募。該方法通過基于梯度的元學(xué)習(xí),利用之前習(xí)得過的廣告來為新廣告ID訓(xùn)練Embedding生成器圾结,即本文方法是學(xué)習(xí)如何更好的學(xué)習(xí)Embedding瑰剃。當(dāng)遇到一個新廣告時,訓(xùn)練生成器通過輸入它的內(nèi)容和屬性來初始化Embedding筝野。接著晌姚,生成的Embedding可以加速模型在warm up階段(當(dāng)有很少的標(biāo)簽樣本可用時)的擬合。
1 介紹
在工業(yè)界歇竟,相比沒有ID輸入的方法挥唠,一個被學(xué)得很好的廣告ID Embedding能極大提升預(yù)測準(zhǔn)確率。盡管有許多成功的方法焕议,但它們都需要相當(dāng)多的數(shù)據(jù)來學(xué)習(xí)Embedding向量宝磨。而且對于一些只有很少訓(xùn)練樣本的“小”廣告來說,它們訓(xùn)練得到的Embedding很難和“大”廣告一樣出色,這些問題就是業(yè)界所謂的冷啟動問題唤锉。
如圖1所示世囊,KDD2012的數(shù)據(jù),5%的廣告占據(jù)了超過80%的樣本窿祥。
本文方法的主要理念包括株憾,利用廣告特征的參數(shù)函數(shù)作為ID Embedding生成器,通過兩階段模仿在舊ID上訓(xùn)練生成器晒衩,使用基于梯度的元學(xué)習(xí)來提升冷啟動和warm-up階段的效果嗤瞎。
本文的兩個目標(biāo):
- 在冷啟動階段更好
- 在warm-up階段更快
為了達到這兩個目標(biāo),針對手中的“大”廣告設(shè)計了冷啟動和warm-up兩個階段的模擬听系。在冷啟動階段贝奇,需要為沒有標(biāo)簽的ID賦Embedding初值,在有少量標(biāo)簽樣本的warm-up階段靠胜,通過模擬模型擬合過程來更新Embedding掉瞳,用這種方式來學(xué)習(xí)如何學(xué)習(xí)。
本文方法的本質(zhì)就是將CTR預(yù)估問題轉(zhuǎn)化為元學(xué)習(xí)問題髓帽,將學(xué)習(xí)每個廣告視為任務(wù)。提出的基于梯度的訓(xùn)練算法有著“與模型無關(guān)的元學(xué)習(xí)”(Model-Agnostic Meta-Learning MAML)的優(yōu)勢脑豹。MAML在許多領(lǐng)域快速適應(yīng)上是成功的郑藏,但它對每個任務(wù)都訓(xùn)練一個模型,所以當(dāng)有上百萬個任務(wù)(廣告)時不能直接用于CTR預(yù)估瘩欺。為此必盖,本文將MAML泛化為一個基于內(nèi)容的Embedding生成器。同時構(gòu)建同統(tǒng)一的優(yōu)化目標(biāo)來平衡冷啟動和warm-up的效果俱饿。本文方法易于實現(xiàn)歌粥,可以應(yīng)用在離線和在線環(huán)節(jié)。也可以應(yīng)用在其他ID特征的冷啟動拍埠,如用戶ID失驶,廣告主ID。
本文方法也可以擴展應(yīng)用在E&E和active learning這兩個領(lǐng)域枣购。
本文貢獻主要如下:
1 提出Meta-Embedding來學(xué)習(xí)如何學(xué)習(xí)新廣告的Embedding
2 提出一個簡單有效的算法來訓(xùn)練Meta-Embedding生成器嬉探,它通過利用反向傳播時的二階導(dǎo)數(shù)來使用基于梯度的元學(xué)習(xí)
3 本文方法可以很容易的在在線冷啟動實現(xiàn)。一旦Embedding生成器訓(xùn)練好棉圈,它就可以代替簡單的隨機初始化來進行新ID的Embedding
4 在3個大規(guī)模真實數(shù)據(jù)集上驗證了本文方法的有效性涩堤。6個SOTA的CTR模型都在冷啟動上得到了極大的提升。
2 背景和公式
輸入特征x可以劃分為三部分分瘾,包括
1
表示廣告ID
2
表示特定廣告
的特征和屬性胎围,可能有多個字段
3
表示不是必須與廣告關(guān)聯(lián)的特征,如用戶特征,上下文信息
密集矩陣通常被稱為Embedding矩陣白魂,或者查找表汽纤。給定Embedding矩陣
和ID i的Embedding
,我們就能得到作為判別模型的參數(shù)化函數(shù):
圖2a展示了該模型的基本結(jié)構(gòu)
和
用SGD同時更新碧聪。
如果一個ID 從未在系統(tǒng)中出現(xiàn)過會發(fā)生什么冒版?因為從沒有見過該廣告的標(biāo)簽數(shù)據(jù),所以Embedding矩陣對應(yīng)的行仍然是初始狀態(tài)逞姿,例如是零值附近的隨機數(shù)辞嗡。為了解決這個問題,本文設(shè)計的Embedding生成器結(jié)構(gòu)如圖2b所示滞造,它的初始化用公式表示如下:
問題來了续室。
1 如何訓(xùn)練這種Embedding生成器
2 更新參數(shù)的目標(biāo)函數(shù)是什么
3 學(xué)習(xí)如何學(xué)習(xí)新廣告的ID Embedding
3.1 將CTR預(yù)估轉(zhuǎn)化為元學(xué)習(xí)
以元學(xué)習(xí)的視角來看,本文會引入新的符號谒养,對于給定的ID 挺狰,將預(yù)測模型寫為:
注意實際上和
是一樣的,參數(shù)都是
和
买窟。用這種方式丰泊,可以看到通過將學(xué)習(xí)問題視為每個廣告ID的一項任務(wù),就可以將CTR預(yù)估視為元學(xué)習(xí)的一個實例始绍。對于ID
瞳购,相應(yīng)的任務(wù)
是學(xué)習(xí)特定任務(wù)的模型
。它們共享來自基模型的參數(shù)
亏推,同時有自己任務(wù)相關(guān)的參數(shù)
考慮可以訪問ID 的先前任務(wù)
学赛,這個集合是已知ID的集合,及每個任務(wù)的訓(xùn)練樣本吞杭。這個數(shù)據(jù)上原始的(預(yù))訓(xùn)練可以提供一組已經(jīng)學(xué)習(xí)好的共享參數(shù)
盏浇,以及對于所有先前的ID
特定任務(wù)的
參數(shù)。然后對于新的ID
芽狗,無法得知
绢掰,因此可以考慮從那些老的ID中學(xué)習(xí)如何學(xué)習(xí)
。這就是以元學(xué)習(xí)的視角考慮CTR預(yù)估的冷啟動問題童擎。
3.2 Meta-Embedding
因為共享參數(shù)通常通過相當(dāng)多的歷史數(shù)據(jù)去訓(xùn)練曼月,我們對它的效果是有信心的,所以當(dāng)訓(xùn)練Meta-Embedding時柔昼,可以在整個過程中凍結(jié)
哑芹,不用去更新它。本文只考慮如何學(xué)習(xí)新ID的Embedding捕透。
對于一個新ID 聪姿,另
作為生成的初始Embedding碴萧。此時通過生成的Embedding,模型可以表示為
所以這的是一個模型(元學(xué)習(xí)器)末购,輸入為特征破喻,輸出為預(yù)測,并且不涉及Embedding矩陣盟榴〔苤剩可訓(xùn)練參數(shù)是來自
的元參數(shù)
。
考慮每個舊ID 的任務(wù)
擎场,會有
這么多訓(xùn)練樣本羽德,其中
是給定ID的樣本個數(shù)。
開始的時候迅办,隨機選擇宅静,
兩個不相交的minibatch標(biāo)簽數(shù)據(jù)站欺,每個都有K個樣本姨夹。假設(shè)K相當(dāng)小,例如
3.2.1 冷啟動階段
首先在第一個minibatch 上使用
做預(yù)測矾策,如下式所示:
其中下標(biāo)表示來自batch
的第j個樣本磷账,接著計算這些樣本上的平均損失:
到這里也就完成了冷啟動階段:通過生成器生成了
的Embedding,并在第一個batch上評估它得到損失
3.2.2 Warm-up階段
接著用第2個batch 模擬Warm-up階段的學(xué)習(xí)過程寇仓。
通過計算初始Embedding損失
的梯度忘瓦,以及一步梯度下降忍啤,可以得到更新的Embedding:
接著可以在第2個batch上用最小數(shù)量的數(shù)據(jù)訓(xùn)練得到的新Embedding評估渡贾。與之前類似蛉抓,做預(yù)測如下:
同時計算平均損失:
3.2.3 統(tǒng)一優(yōu)化目標(biāo)
從兩方面來評估初始Embedding的好壞:
1 對于新廣告的CTR預(yù)估錯誤應(yīng)盡可能小
2 在收集一小部分標(biāo)簽數(shù)據(jù)后,一點梯度更新就應(yīng)該有很快的學(xué)習(xí)
驚喜的是巷送,本文發(fā)現(xiàn)驶忌,
兩個損失可以分別完美地適配這兩個方面笑跛。在第1個batch付魔,因為用生成的初始Embedding做預(yù)測,
是一個評估冷啟動階段生成器的天然指標(biāo)飞蹂。在第2個batch几苍,因為Embedding已經(jīng)更新過一次,所以在warm-up階段用
評估樣本效率就相當(dāng)直接了妻坝。
為了統(tǒng)一這兩個損失伸眶,這里提出Meta-Embedding的最終損失函數(shù),即和
的加權(quán)和:
其中系數(shù)用于平衡兩個階段。
因為是初始Embedding的函數(shù)圣拄,可以通過鏈?zhǔn)椒▌t來做元參數(shù)
的梯度反向傳播:
其中:
盡管有二階導(dǎo)Hessian-vector存在庇谆,也可以很有效的在TensorFlow中實現(xiàn)岳掐。
訓(xùn)練算法如下圖所示,一個ID的訓(xùn)練過程如圖4所示族铆。
3.3 架構(gòu)和超參
3.3.1
的架構(gòu)
如圖5所示
不同字段的Embedding可以用不同的pooling方式岩四。最后用于輸出的密集層是生成器唯一需要訓(xùn)練的部分。
通過在最后一層使用三個trick哥攘,可以獲得數(shù)值穩(wěn)定的輸出:
1 使用tanh激活
2 不要增加偏置項
3 使用L2正則懲罰權(quán)重
3.3.2 超參
因為實踐上warm-up階段比冷啟動階段需要更多的步數(shù)剖煌,因此推薦將設(shè)置為一個小值,使得元學(xué)習(xí)器更注意warm-up階段來加速收斂逝淹。本文所有實驗將該值設(shè)置為0.1耕姊。
4 實驗
4.1 數(shù)據(jù)集
MovieLens-1M
騰訊2018社交廣告比賽
KDD Cup 2012
4.2 基本模型
FM
Wide & Deep
PNN
DeepFM
每個輸入字段的Embedding維度固定為256。對于NLP特征栅葡,首先將每個token(word)轉(zhuǎn)化為256維的word-embedding茉兰,然后使用AveragePooling來得到字段(句子)級別的表示。
4.3 實驗設(shè)置
4.3.1 數(shù)據(jù)集劃分
4.3.2 實驗pipeline
開始時先使用老的廣告預(yù)訓(xùn)練基礎(chǔ)模型欣簇,用于訓(xùn)練Meta-Embedding的樣本個數(shù)可見表1规脸。完成訓(xùn)練后,在新廣告上進行測試熊咽。對于每個新廣告,一個接一個的訓(xùn)練3個mini-batch横殴,就好像它們是warm-up的數(shù)據(jù)被因,分別命名為batch-a,batch-b衫仑,batch-c梨与,每個batch有K個實例,新廣告的其他實例用于測試文狱。具體實驗步驟如下:
- 用老廣告數(shù)據(jù)預(yù)訓(xùn)練基模型(1 epoch)
- 用訓(xùn)練數(shù)據(jù)訓(xùn)練Meta-Embedding(2 epoch)
- 用隨機初始化或Meta-Embedding生成新廣告的初始Embedding
- 在測試集上評估冷啟動效果
- 用batch-a更新新廣告的ID Embedding粥鞋,同時計算在測試集上的評估指標(biāo)
- 用batch-b更新新廣告的ID Embedding,同時計算在測試集上的評估指標(biāo)
- 用batch-c更新新廣告的ID Embedding瞄崇,同時計算在測試集上的評估指標(biāo)
4.3.3 評估指標(biāo)
用LogLoss和AUC呻粹,同時用百分比公式來展示相對提升:
4.4 實驗結(jié)果
一個有趣的發(fā)現(xiàn)是相對提升在越小的數(shù)據(jù)集上越顯著到踏。
5 相關(guān)工作
5.1 解決冷啟動問題的方法
有兩種類型的方法,一種是通過設(shè)計決策策略尚猿,例如使用contextual-bandits窝稿,或通過為冷item或user設(shè)計interview來收集信息。本文屬于第二種類型凿掂,是將冷啟動視為在線監(jiān)督學(xué)習(xí)伴榔,它通常使用side information用于冷啟動階段,例如使用user屬性庄萎,item屬性踪少,關(guān)系數(shù)據(jù)等等。但是這些方法即沒有考慮使用ID糠涛,也沒有在warm-up階段對它們做優(yōu)化援奢。本文不僅使用了全部可用特征,此外目的也是同時提升冷啟動階段和warm-up階段的效果忍捡。
Dropout-Net通過在深度協(xié)同過濾模型上應(yīng)用dropout來處理缺失輸入集漾,可以被視為一種用于預(yù)訓(xùn)練基礎(chǔ)模型的成功訓(xùn)練方法。
5.2 元學(xué)習(xí)
本文研究的是如何warm-up冷啟動廣告砸脊,在元學(xué)習(xí)領(lǐng)域相關(guān)的問題就是few-shot learning和fast adaptation具篇。本文受到MAML的啟發(fā),用基于梯度的元學(xué)習(xí)方法來學(xué)習(xí)共享模型參數(shù)凌埂。
七 小結(jié)
本文最大的亮點就是引入元學(xué)習(xí)來解決CTR預(yù)估中的冷啟動問題驱显,meta-learning,few shot learning瞳抓,這些概念已經(jīng)在CV里有不少應(yīng)用埃疫,現(xiàn)在也遷移到推薦廣告領(lǐng)域了『⒀疲看了第三節(jié)感覺寫的是真繁瑣栓霜,說的很玄乎,看起來也很累臭笆,得一個字一個字扣叙淌,但看完后回味下秤掌,好像也沒說什么啊愁铺,就是交替訓(xùn)練更新參數(shù)?另外本文第五節(jié)相關(guān)工作的梳理很值得一看闻鉴。
素質(zhì)四連
要解決什么問題
item冷啟動問題
用了什么方法解決
引入元學(xué)習(xí)茵乱,用Meta-Embedding替代隨機初始化Embedding
效果如何
離線效果都有提升,這個某種程度上應(yīng)該也是孟岛,專門優(yōu)化過的Embedding肯定優(yōu)于隨機初始化
還存在什么問題
實驗結(jié)果那一小節(jié)瓶竭,作者也提到督勺,在騰訊的數(shù)據(jù)集上,Wide&Deep的對比實驗并沒有提升斤贰,反而有輕微下降智哀,推測原因可能是Wide部分直接使用了原始輸入。另外只給出相對提升荧恍,沒給出原始值瓷叫。還有對于線上效果如何,沒有提到送巡。
算法背后的模式和原理
引入元學(xué)習(xí)解決CTR問題摹菠,借花獻佛
八 補充
Model-Agnostic Meta-Learning (MAML)模型介紹及算法詳解 https://zhuanlan.zhihu.com/p/57864886
什么是meta-learning? https://www.zhihu.com/question/264595128/answer/743067364