本期我們來看一篇又雙叒叕來自於阿里巴巴的工業paper,被KDD 2020所接收。一眼望去題中有兩個關鍵詞, Privileged FeaturesDistillation 來, 我們逐個擊破

論文:https://arxiv.org/abs/1907.05171

通俗版

先說Distillation,大家心裏可能就已經有了一個初步的模型框架了。沒錯,蒸餾嘛,就是這樣:

額,錯了錯了 ,是這樣:

所以就是一個老師教學生好好學習的過程,用專業點的話說,就是知識遷移。

那啥叫Privileged Features?作者說,你們之前模型用的那些在線特徵啊, Naive ,比如 你知道用戶停留時長這個指標對於CVR的預測有多重要嗎 ?你可能會說了,線上服務時我們沒法拿到停留時長這樣的後驗特徵啊,那爲了保持線上線下特徵的一致性,只能忍痛割愛。你說對了, 這種信號強,但又不聽話只能離線獲取的特徵,就叫優勢特徵

於是本文的工作就是讓老師去學習這些不聽話的特徵,然後把知識嚼碎了餵給學生,讓學生在預測過程中獲得更好的效果。

再來詳述一下這個過程。在離線環境下,會同時訓練兩個模型:一個學生模型和一個教師模型。其中教師模型額外利用了優勢特徵,則準確率更高。將教師模型蒸餾出來的知識傳遞給學生模型,輔助其訓練,提升學生的準確率。線上服務時,只用學生模型進行部署,由於輸入中不依賴優勢特徵,則保證了線上線下特徵的一致性。本文中的蒸餾知識是通過教師模型中的最後一層輸出進行傳遞。作者給這個 模型起名爲PFD

和一般的蒸餾模型(MD)不同的是,一般我們在MD中,教師和學生用的是相同的輸入特徵,而模型複雜度有差異,比如教師模型往往用更深的深度網絡,來指導淺層網絡的學生模型。在PFD中, 教師和學生的網絡模型是一致的,輸入特徵卻不一致 。MD和PFD的對比如下圖:

當然啦,作者也嘗試了MD+PFD的套餐組合,進一步升級了模型,取得了更好的效果。 疊加大法就是好~

效果自然是棒棒咯。本模型在手淘的信息流推薦場景,運用在了粗排階段的CTR預估、和精排階段的CVR預估兩個階段上。在AB測試下,粗排階段的CTR有5%的提升,精排階段的CVR有2.3%的提升。

其實這篇文章的解析到此可以結束了,但不排除有一些積極向上的同學,一定非常想了解模型的細節和更多的奧妙之處,那,那我也只能勉爲其難繼續啃原文(非常期待以後有中文寫作的會議。。。)

專業版

好了,下面進入 VIP用戶時間 。VIP多了些啥?先給你們畫個大餅。

來看,這張圖就是手淘推薦的流程框架圖。所有的商品從入池到推薦給用戶,會經歷三個階段:召回、粗排、精排。這三個階段待打分的商品數會逐漸減少,模型會越來越複雜。

粗排:作爲夾心餅乾的中間層,粗排其實是有點小尷尬的。粗排的做法是傳統的內積模型,把用戶側和商品側作爲雙塔,在請求時,把用戶側的向量和候選商品向量進行內積運算,從而對商品池做粗篩。有一些交叉特徵是對粗排效果影響明顯的,比如用戶在過去24個小時內在待預估商品類目下的點擊次數。但是複雜的交叉特徵會增加線上的推理延時,所以不能作爲常規特徵來訓練。於是 交叉特徵就成爲了粗排階段的優勢特徵

精排:在精排階段,用戶在商品頁的行爲對CVR的預估非常有用,但是線上服務時 是無法獲取這類後驗特徵的 。於是在精排CVR預估中,這類特徵就是優勢特徵。

蒸餾:下面介紹蒸餾方法。令X表示普通特徵,X*表示優勢特徵,y表示標籤,L表示損失函數,則特徵蒸餾的目標函數抽象如下:

其中下標s表示student,d表示distillation,t表示teacher。從公式可以看出,教師網絡的輸入裏包含普通特徵和優勢特徵。這個公式下是將教師網絡先訓練好,然後指導學生網絡。也可以同步更新教師網絡和學生網絡,減少訓練時長,則公式如下:

作者提到了 這種方法可能帶來訓練的不穩定 ,尤其是訓練初期,教師模型自己還沒有學好,就來指導學生模型,是有可能導致訓練偏離正常的。因此λ參數就很重要,初期可以設爲0。算法流程如下:

統一蒸餾:走到這裏,可以考慮將MD和PFD合在一起做進一步提升了。更強的教師模型怎麼選擇呢?這裏感覺還是比較巧妙的,本文直接拿精排的CTR模型來做粗排的教師模型,所以 也就是讓粗排反向學習精排的打分結果

在精排階段的蒸餾,還是如之前所述,主要是考慮了一些後驗特徵。那整個粗排+精排階段的模型框架,就是這樣:

別慌,你品,你細品 ,一定是能看懂的。

實驗:實驗部分我們主要看下AUC,畢竟我們知道,在現在推薦模型已經比較成熟的情況下,AUC的提升已經日趨艱難。一個很明顯的現象是,隨着訓練天數的增多,模型的優勢會增大。

線上的效果也有相應的提升,在一開始我們就總結了,粗排階段的CTR有5%的提升,精排階段的CVR有2.3%的提升。

好了,到了總結時間。總的來講這篇文章不難讀,思路也比較樸素,對於工業應用還是比較有借鑑意義的。難度可能還在於實踐, 畢竟教育是一件很困難的事情 ,老師自己什麼水平知道不?老師的教育水平怎樣知道不?學生學成啥樣知道不?學生在外怎麼造作知道不? 這些都是不可控因素 。不管怎樣,瞭解了蒸餾大法在推薦中的應用,也是埋下了一顆種子,提供了一個思路,不多說,撒花,慶祝~!

參考文獻

1. Privileged Features Distillation at Taobao Recommendations

推薦閱讀

這個NLP工具,玩得根本停不下來

從數據到模型,你可能需要1篇詳實的pytorch踩坑指南

如何讓Bert在finetune小數據集時更“穩”一點

模型壓縮實踐系列之——bert-of-theseus,一個非常親民的bert壓縮方法

徵稿啓示| 200元稿費+5000DBC(價值20個小時GPU算力)

文本自動摘要任務的“不完全”心得總結番外篇——submodular函數優化

Node2Vec 論文+代碼筆記

模型壓縮實踐收尾篇——模型蒸餾以及其他一些技巧實踐小結

中文命名實體識別工具(NER)哪家強?

學自然語言處理,其實更應該學好英語

斯坦福大學NLP組Python深度學習自然語言處理工具Stanza試用

關於AINLP

AINLP 是一個有趣有AI的自然語言處理社區,專注於 AI、NLP、機器學習、深度學習、推薦算法等相關技術的分享,主題包括文本摘要、智能問答、聊天機器人、機器翻譯、自動生成、知識圖譜、預訓練模型、推薦系統、計算廣告、招聘信息、求職經驗分享等,歡迎關注!加技術交流羣請添加AINLPer(id:ainlper),備註工作/研究方向+加羣目的。

閱讀至此了,分享、點贊、在看三選一吧:pray:

相關文章