推荐系统里,可以用蒸馏吗?
無論是商品推薦,還是廣告推薦,都大致可以分為召回,預(yù)排序(粗排),精排等階段,如上篇<淘寶搜索中基于embedding的召回>的圖所示:
召回最重要的就是要快,高召回率,對準確率可以不必要求太高,所以召回模型往往就是雙塔模型,最經(jīng)典的就是youtube雙塔:
后面各種論文大多都說基于樣本構(gòu)造,模型結(jié)構(gòu),增加特征等方面去優(yōu)化召回模型,但是不得不提到的是,蒸餾也是個提高召回側(cè)模型效果的一個好方法。
由于受限于線上性能,在廣告/商品召回階段,我們通常采用深度學(xué)習(xí)雙塔模型結(jié)構(gòu),離線先計算保存好ad/item embedding,線上實時預(yù)測出user embedding再通過近鄰檢索召回相似廣告。user塔和ad塔是兩個獨立的神經(jīng)網(wǎng)絡(luò),而user側(cè)特征和ad側(cè)特征沒有交互,損失了很多有用信息,且因為user embedding線上實時inference,這就限制了user塔的特征規(guī)模及模型結(jié)構(gòu)復(fù)雜度。對于這兩個問題,蒸餾模型提供了一種解決方法。以下是蒸餾模型的特點:
- 由于training階段不要求實時操作,允許訓(xùn)練一個復(fù)雜的模型,蒸餾模型可以在training階段用復(fù)雜度高的網(wǎng)絡(luò)(teacher network)-學(xué)到的知識指導(dǎo)較為簡單的網(wǎng)絡(luò)(student network)學(xué)習(xí),在serving階段以較小的計算代價來使用簡單網(wǎng)絡(luò),同時保持一定的網(wǎng)絡(luò)預(yù)測能力。
- 對于一些線上serving階段無法獲取的但又對目標有實際意義的特征,如用戶與廣告或商品的交互特征等,可以在training階段將這類特征都加入teacher network學(xué)習(xí),而線上serving階段只需獲取用于訓(xùn)練student network的基本特征,serving過程只使用student network結(jié)構(gòu)。
- 可以將集成的知識壓縮在簡單的模型中。對于一個已經(jīng)訓(xùn)練好的復(fù)雜的模型,如果要集成的話要帶來很大的計算開銷,而使用蒸餾模型可以用復(fù)雜模型指導(dǎo)一系列簡單模型學(xué)習(xí),根據(jù)復(fù)雜的大網(wǎng)絡(luò)和一系列簡單模型的輸出作為目標,訓(xùn)練一個最終的模型,可不用對復(fù)雜模型進行集成。
當然,蒸餾用在召回,更重要的意義是保證召回,預(yù)排序(粗排),精排一致性,而不是蒸餾一堆看似高大上的特點。為啥要保證一致性呢?召回側(cè)最終服務(wù)于排序,選出排序認可的才是最重要的,如果召回的都不是排序認可的,那排序模型也只能矮子里挑高的選,這樣會影響整體的收益。如果召回模型在訓(xùn)練階段增加對精排的擬合,是不是可以近似達到精排模型在全庫搜索的效果呢?
那么推薦系統(tǒng)中蒸餾應(yīng)該怎么做呢?其實最簡單的就是改loss,除了交叉熵損失,可以增加和teacher預(yù)估不一致而帶來的損失,輔助學(xué)習(xí)。
其中,L_hard是分類問題中經(jīng)典的交叉熵損失,是真實標簽與模型預(yù)測概率之間的交叉熵損失,記為hard loss;λ是超參數(shù),控制teacher模型對student的指導(dǎo)程度;L_soft是teacher模型輸出概率與student模型輸出概率的交叉熵,記為soft loss,形式如下所示:
也可以用帶溫度的softmax函數(shù)控制teacher信號的傳輸:
Lsoft也可以用logit直接的mse loss進行學(xué)習(xí)。大致框架如下圖所示:
訓(xùn)練大家可以嘗試teacher和student同時訓(xùn)練,也可以先訓(xùn)練好teacher,再蒸餾到student上。在實際使用上,AUC和GAUC都是可以漲一些的。
說到這肯定有人要問了,召回可以學(xué)精排,預(yù)排序(粗排)可以學(xué)精排嗎?,當然可以,而且肯定也會有收益。那召回為啥不學(xué)預(yù)排序(粗排)?畢竟召回直接相連的就是預(yù)排序模型。當然也是可以的嘗試的。
總結(jié)一下,無論是做哪個階段的模型,只單獨優(yōu)化某個階段的模型很容易到達瓶頸,盡管每年關(guān)于推薦的論文層出不窮,但是真正用上了有效果的卻很少。有時要從系統(tǒng)的角度出發(fā)去思考模型比單純?nèi)ザ哑瞿P徒Y(jié)構(gòu)效果要大得多。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的推荐系统里,可以用蒸馏吗?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 神经网络调参经验大汇总
- 下一篇: 开启算法编程之旅的准备工作——如何在Wi