<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          深度學(xué)習(xí)中的知識蒸餾技術(shù)(下)

          共 19780字,需瀏覽 40分鐘

           ·

          2021-05-10 07:36

          本文概覽:

          寫在前面:

          這是一篇介紹知識蒸餾在推薦系統(tǒng)中應(yīng)用的文章,關(guān)于知識蒸餾理論基礎(chǔ)的詳細介紹,請看上篇文章:

          1. 背景介紹

          1.1 簡述推薦系統(tǒng)架構(gòu)

          如果從傳統(tǒng)角度來看實際的工業(yè)推薦系統(tǒng),粗略地可以分為兩個階段。首先是召回階段,主要根據(jù)用戶部分特征,從海量的物品庫里,快速找回一小部分用戶潛在感興趣的物品,然后交給排序環(huán)節(jié)。其次是排序階段,排序階段可以融入較多特征,使用復(fù)雜模型,來精準地做個性化推薦。召回強調(diào)相關(guān)性,即快速地召回一批與用戶興趣點相關(guān)的物品;排序強調(diào)符合推薦系統(tǒng)的終極目標,即根據(jù)推薦系統(tǒng)的終極目標(DAU、時長、留存等)利用大規(guī)模特征做精準的個性化排序。最近一兩年,推薦系統(tǒng)的終極目標也在逐步下沉到召回和粗排階段,比如在召回和粗排階段設(shè)計的多目標與精排多目標對齊。

          但是,如果我們更細致地看實用的工業(yè)級推薦系統(tǒng),一般會有四個環(huán)節(jié),如下圖所示:

          四個環(huán)節(jié)分別是:召回、粗排、精排和重排。召回目的如上所述。有時候因為每個用戶召回環(huán)節(jié)都有多路召回算法,這會產(chǎn)生兩個問題:

          • 這些召回算法每路召回多少物品難以確定,因此需要加一層粗排對每路召回的結(jié)果進行統(tǒng)一的打分排序,把Top K 的結(jié)果送入精排中;
          • 總體召回環(huán)節(jié)返回的物品數(shù)量太多,排序環(huán)節(jié)需要占用大量的機器資源且影響排序速度,所以可以在召回和精排之間加入一個粗排環(huán)節(jié);

          粗排一般通過少量用戶和物品特征,利用簡單模型,來對召回的結(jié)果進行粗略的排序,在保證一定精準的前提下,進一步減少往后傳送的物品數(shù)量。粗排往往是可選擇的,可用可不用,跟場景有關(guān)。之后,是精排環(huán)節(jié),使用你能想到的任何特征,可以上你能承受速度極限的復(fù)雜模型,盡量精準地對物品進行個性化排序。排序完成后,傳給重排環(huán)節(jié),傳統(tǒng)地看,這里往往會上各種技術(shù)及業(yè)務(wù)策略,比如曝光去重、打散、多樣性保證、固定類型物品插入等等,主要是技術(shù)產(chǎn)品策略主導(dǎo)或者為了改進用戶體驗。

          1.2 為什么要把知識蒸餾引入推薦系統(tǒng)中?

          隨著深度學(xué)習(xí)的快速發(fā)展,優(yōu)秀的模型層出不窮,比如圖像領(lǐng)域的ResNet、自然語言處理領(lǐng)域的Bert,這些革命性的新技術(shù)使得模型精度快速提升。但是,先進的深度學(xué)習(xí)模型正在變得越來越復(fù)雜,網(wǎng)絡(luò)深度越來越深,模型參數(shù)量也在變得越來越多。而這會帶來一個現(xiàn)實應(yīng)用的問題:將這些復(fù)雜模型推上線,模型響應(yīng)速度太慢,當(dāng)流量大的時候撐不住。因此知識蒸餾就是目前一種比較流行的解決此類問題的技術(shù)方向。

          一般知識蒸餾采取Teacher-Student模式:將復(fù)雜模型作為Teacher,Student模型結(jié)構(gòu)較為簡單,用Teacher來輔助Student模型的訓(xùn)練,Teacher學(xué)習(xí)能力強,可以將它學(xué)到的知識遷移給學(xué)習(xí)能力相對弱的Student模型,以此來增強Student模型的泛化能力。復(fù)雜笨重但是效果好的Teacher模型不上線,就單純是個導(dǎo)師角色,真正上線撐流量的是靈活輕巧的Student小模型。

          結(jié)合知識蒸餾與推薦系統(tǒng)的特點,將知識蒸餾與推薦系統(tǒng)結(jié)合會有哪些優(yōu)勢呢?

          • 在推薦系統(tǒng)的各個階段都高度要求模型性能。受限于網(wǎng)絡(luò)延時和性能的要求,可以用復(fù)雜模型(如帶有高階特征交叉的模型,xDeepFM等)蒸餾的知識指導(dǎo)簡單一些的模型進行學(xué)習(xí)。
          • 相對于精排模型而言,粗排和召回模型本身就很簡單。粗排或召回階段,在優(yōu)化ground-truth目標時,是否可以用精排(Teacher網(wǎng)絡(luò))輸出的知識指導(dǎo)粗排或者召回模型的訓(xùn)練呢?

          2. 知識蒸餾與推薦系統(tǒng)

          在含有召回、粗排、精排的串行級聯(lián)推薦體系中,知識蒸餾可以應(yīng)用在哪個環(huán)節(jié)呢?假設(shè)我們在召回環(huán)節(jié)采用模型排序(YouTube DNN/DSSM雙塔等模型),那么知識蒸餾在這三個環(huán)節(jié)都可以采用,進而優(yōu)化現(xiàn)有推薦系統(tǒng)的線上服務(wù)響應(yīng)時間及推薦質(zhì)量。

          2.1 精排環(huán)節(jié)采用知識蒸餾

          為何在精排環(huán)節(jié)采用知識蒸餾?我們知道,精排環(huán)節(jié)注重精準排序,所以采用盡量多的特征和復(fù)雜模型,以期待獲得優(yōu)質(zhì)的個性化推薦結(jié)果。但是,這同時也意味著復(fù)雜模型的在線服務(wù)響應(yīng)變慢。若承載相同的流量,需要增加在線服務(wù)并行程度,也就意味著增加機器資源和成本。因此,如何在精準排序和機器資源之間做均衡呢?我們可以通過在精排環(huán)節(jié)采用知識蒸餾技術(shù)實現(xiàn)一個既有較好的推薦質(zhì)量,又能有快速推理能力的模型。

          圖:來源于參考文獻2

          上圖展示了如何在精排環(huán)節(jié)應(yīng)用知識蒸餾:我們在離線訓(xùn)練的時候,可以訓(xùn)練一個復(fù)雜精排模型作為Teacher,一個結(jié)構(gòu)較簡單的DNN排序模型作為Student。因為Student結(jié)構(gòu)簡單,所以模型表達能力弱,于是,我們可以在Student訓(xùn)練的時候,除了采用常規(guī)的Ground Truth訓(xùn)練數(shù)據(jù)外,Teacher也輔助Student的訓(xùn)練,將Teacher復(fù)雜模型學(xué)到的一些知識遷移給Student,增強其模型表達能力,以此加強其推薦效果。在模型上線服務(wù)的時候,并不用那個復(fù)雜的Teacher模型,而是使用小的Student作為線上精排模型,進行在線推理。小的Student模型優(yōu)勢如下:

          • Student結(jié)構(gòu)較為簡單,所以在線推理速度會大大快于復(fù)雜模型;
          • Teacher將一些知識遷移給Student,所以經(jīng)過知識蒸餾的Student推薦質(zhì)量也比單純Student自己訓(xùn)練質(zhì)量要高。

          以上就是典型的在精排環(huán)節(jié)采用知識蒸餾的思路。

          2.2 模型召回/粗排環(huán)節(jié)采用知識蒸餾

          由于模型召回或者粗排環(huán)節(jié),作為精排的前置環(huán)節(jié),需要在準確性和速度方面找到一個平衡點,在保證一定推薦精準性的前提下,對物品進行粗篩,減小精排環(huán)節(jié)壓力。所以,這兩個環(huán)節(jié)本身,從其定位來說,并不追求最高的推薦精度,就算模型效果比精排差些,這也是完全可以接受的,畢竟在這兩個環(huán)節(jié),如果準確性不足可以靠返回物品數(shù)量多來彌補。而模型小,速度快則是模型召回及粗排的重要目標之一。這就和知識蒸餾本身的特點對上了,所以在這里用特別合適。

          圖:來源于參考文獻2

          那么,召回或者粗排怎么用蒸餾呢?如上圖所示,用復(fù)雜的精排模型作為Teacher,召回或粗排模型作為小的Student,比如雙塔DNN模型等,Student模型模擬精排環(huán)節(jié)的排序結(jié)果,以此來指導(dǎo)召回或粗排Student模型的優(yōu)化過程。這樣,我們可以獲得滿足如下特性的召回或者粗排模型:

          • 首先,推薦效果好,因為Student經(jīng)過復(fù)雜精排模型的知識蒸餾,推薦效果可以非常接近于精排模型效果;
          • 其次,Student模型結(jié)構(gòu)簡單,所以速度快,滿足召回、粗排環(huán)節(jié)對于速度的要求;
          • 最后,通過Student模型模擬精排模型的排序結(jié)果,可以使得召回、粗排這兩個環(huán)節(jié)的優(yōu)化目標和精排環(huán)節(jié)的優(yōu)化目標保持一致,即與推薦任務(wù)的最終優(yōu)化目標保持一致。

          在推薦系統(tǒng)中,召回、粗排環(huán)節(jié)優(yōu)化目標保持和精排優(yōu)化目標一致,其實是很重要的,但是這點往往在實際中容易被忽略,或者因為條件所限無法考慮這一因素,比如非模型召回,從機制上是沒辦法考慮這點的。這里需要注意的一點是:如果召回模型或者粗排模型的優(yōu)化目標已經(jīng)是多目標的,對于新增的模型蒸餾來說,可以作為多目標任務(wù)中新加入的一個目標,當(dāng)然,也可以只保留單獨的蒸餾模型,完全替換掉之前的多目標模型,貌似這兩種思路應(yīng)該都是可以的,需要根據(jù)具體情況進行斟酌選擇。

          以上就是知識蒸餾技術(shù)在推薦系統(tǒng)的召回、粗排、精排環(huán)節(jié)的大概應(yīng)用思路。下面,我們根據(jù)工業(yè)界公開的相關(guān)論文和資料,詳細地了解在推薦系統(tǒng)的各個環(huán)節(jié)里,采用知識蒸餾的具體方法。

          3. 知識蒸餾在推薦系統(tǒng)中的研究進展

          3.1 精排環(huán)節(jié)應(yīng)用知識蒸餾

          3.1.1 《Rocket Launching: A Universal and Efficient Framework for Training Well-performing Light Net》

          這是阿里媽媽的一篇將“目標蒸餾-logits方法“應(yīng)用到推薦系統(tǒng)領(lǐng)域的論文。 該論文提出的背景是:響應(yīng)時間直接決定在線響應(yīng)系統(tǒng)的效果和用戶體驗。比如在線展示廣告系統(tǒng)中,針對一個用戶,需要在幾ms內(nèi),對上百個候選廣告的點擊率進行預(yù)估。因此,如何在嚴苛的響應(yīng)時間內(nèi),提高模型的在線預(yù)測效果,是工業(yè)界面臨的一個巨大問題。此外,簡單的網(wǎng)絡(luò)速度快,但精度不如復(fù)雜的網(wǎng)絡(luò)好;復(fù)雜的網(wǎng)絡(luò)精度好,但是計算量大,訓(xùn)練和線上推理速度都很慢。如何能結(jié)合小網(wǎng)絡(luò)的速度和大網(wǎng)絡(luò)的精度也是一個很難、很重要的問題。

          為了解決上述問題,阿里巴巴在2018年AAAI上的論文《Rocket Launching: A Universal and Efficient Framework for Training Well-performing Light Net》中提出了一個新型框架:訓(xùn)練階段,同時訓(xùn)練“復(fù)雜”和“簡單”兩個復(fù)雜度有明顯差異的網(wǎng)絡(luò),簡單的網(wǎng)絡(luò)稱為輕量網(wǎng)絡(luò)(Light Net),復(fù)雜的網(wǎng)絡(luò)稱為助推器網(wǎng)絡(luò)(Booster Net),它相比前者有更強的學(xué)習(xí)能力。兩網(wǎng)絡(luò)共享部分參數(shù),分別學(xué)習(xí)類別標記(Label)。此外,輕量網(wǎng)絡(luò)通過學(xué)習(xí)助推器的soft target來模仿助推器的學(xué)習(xí)過程,從而得到更好的訓(xùn)練效果。測試階段,僅采用輕量網(wǎng)絡(luò)進行預(yù)測。

          火箭發(fā)射過程中,初始階段,助推器和飛行器一同前行,第二階段,助推器剝離,飛行器獨自前進。在該論文的框架中,訓(xùn)練階段,有繁簡兩個網(wǎng)絡(luò)一同訓(xùn)練,復(fù)雜的網(wǎng)絡(luò)起到助推器的作用,通過參數(shù)共享和信息提供推動輕量網(wǎng)絡(luò)更好的訓(xùn)練;在預(yù)測階段,助推器網(wǎng)絡(luò)脫離系統(tǒng),輕量網(wǎng)絡(luò)獨自發(fā)揮作用,從而在不增加預(yù)測開銷的情況下,提高預(yù)測效果。整個過程與火箭發(fā)射類似,所以命名該系統(tǒng)為“火箭發(fā)射”。整個網(wǎng)絡(luò)結(jié)構(gòu)如下:

          助推器網(wǎng)絡(luò)和輕量網(wǎng)絡(luò)共享部分層的參數(shù),共享的參數(shù)可以根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)的變化而變化。在神經(jīng)網(wǎng)絡(luò)中,低層可以用來學(xué)習(xí)信息表示,低層網(wǎng)絡(luò)的共享,可以幫助輕量網(wǎng)絡(luò)獲得更好的信息表示能力。如上圖所示,訓(xùn)練階段,我們同時學(xué)習(xí)兩個網(wǎng)絡(luò):Light Net 和Booster Net,兩個網(wǎng)絡(luò)共享部分信息。我們把大部分的模型理解為表示層學(xué)習(xí)和判別層學(xué)習(xí)、 ,表示層學(xué)習(xí)的是對輸入信息做一些高階處理,而判別層則是和當(dāng)前子任務(wù)目標相關(guān)的學(xué)習(xí)。表示層的學(xué)習(xí)是可以共享的,共享的信息為底層參數(shù),這些底層參數(shù)能一定程度上反應(yīng)了對輸入信息的基本刻畫。在整個訓(xùn)練過程中,網(wǎng)絡(luò)的Loss如下:

          Loss包含三部分:第一項,為Light Net對Ground Truth的學(xué)習(xí);第二項,為Booster Net對Ground Truth的學(xué)習(xí);第三項,為兩個網(wǎng)絡(luò)Softmax之前的logits的均方誤差(MSE),該項作為hint loss,用來使兩個網(wǎng)絡(luò)學(xué)習(xí)得到的logits盡量相似。

          與傳統(tǒng)的知識蒸餾相比,該論文提出的新型框架的創(chuàng)新點和優(yōu)勢在于:

          • 復(fù)雜和簡單兩個網(wǎng)絡(luò)同時訓(xùn)練。 一方面, 縮短總的訓(xùn)練時間。相比傳統(tǒng)teacer-student范式中,先訓(xùn)練一個復(fù)雜網(wǎng)絡(luò),然后用其訓(xùn)練一個簡單網(wǎng)絡(luò)。這里同時訓(xùn)練復(fù)雜和簡單兩個網(wǎng)絡(luò)縮短了總的訓(xùn)練時間。另一方面, 助推器網(wǎng)絡(luò)全程提供soft target信息給輕量網(wǎng)絡(luò),從而達到指導(dǎo)輕量網(wǎng)絡(luò)整個求解過程的目的。這與一般的teacher-student 范式下,學(xué)習(xí)好大模型,僅用大模型固定的輸出作為soft target來監(jiān)督小網(wǎng)絡(luò)的學(xué)習(xí)有著明顯區(qū)別,因為Booster Net的每一次迭代輸出雖然不能保證對應(yīng)一個和Label非常接近的預(yù)測值,但是到達這個解之后有利于找到最終收斂的解。相比傳統(tǒng)方法,同時訓(xùn)練獲得了更多的指導(dǎo)信息,從而取得更好的效果。
          • 采用梯度固定技術(shù)。 訓(xùn)練階段,兩網(wǎng)絡(luò)soft target的loss(hint loss)只用于輕量網(wǎng)絡(luò)的梯度更新,而不更新助推器網(wǎng)絡(luò),從而使得助推器網(wǎng)絡(luò)不受輕量網(wǎng)絡(luò)的影響,只從真實標記中學(xué)習(xí)信息。由于助推器網(wǎng)絡(luò)有更多的參數(shù),有更強的擬合能力,我們需要給它更大的自由度來學(xué)習(xí),盡量減少輕量網(wǎng)絡(luò)對它的拖累。梯度固定技術(shù)的目的是,在hint loss進行梯度回傳時,我們固定助推器網(wǎng)絡(luò)獨有的參數(shù) 不更新,讓該時刻的助推器網(wǎng)絡(luò)前向傳遞得到的 監(jiān)督輕量網(wǎng)絡(luò)的學(xué)習(xí),從而使得小網(wǎng)絡(luò)向大網(wǎng)絡(luò)靠近。這一技術(shù),使得助推器網(wǎng)絡(luò)擁有更強的自由度來學(xué)習(xí)更好的模型,而助推器網(wǎng)絡(luò)效果的提升,也會提升輕量網(wǎng)絡(luò)的訓(xùn)練效果。

          在線響應(yīng)時間對在線系統(tǒng)至關(guān)重要。該論文提出的火箭發(fā)射式訓(xùn)練框架,在不提高預(yù)測時間的前提下,提高了模型的預(yù)測效果,為提高線上模型效果提供了新思路。目前Rocket Launching的框架為在線CTR預(yù)估系統(tǒng)弱化在線響應(yīng)時間限制和模型結(jié)構(gòu)復(fù)雜化的矛盾提供了可靠的解決方案,該技術(shù)可以做到在線計算被壓縮倍的情況下性能不變。在阿里真實的應(yīng)用場景中,日??梢詼p少在線服務(wù)機器資源消耗,雙十一這種高峰流量場景更是保障算法技術(shù)不降級的可靠方案。

          【相關(guān)文章】

          • Zhou G, Fan Y, Cui R, et al. Rocket launching: A universal and efficient framework for training well-performing light net[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2018, 32(1).

          3.1.2 《Privileged Features Distillation at Taobao Recommendations》

          這篇同樣是阿里的一篇將“目標蒸餾-logits方法“應(yīng)用到推薦系統(tǒng)領(lǐng)域的論文,被KDD 2020所接收。 論文《Privileged Features Distillation at Taobao Recommendations》提出的蒸餾技術(shù)是我在工業(yè)界見過的知識蒸餾用在推薦系統(tǒng)領(lǐng)域最廣泛的技術(shù)之一,整篇文章思路比較樸素,對于工業(yè)應(yīng)用具有非常大的借鑒意義。因此,我會詳細重點介紹這篇論文。

          (1)推薦中的優(yōu)勢特征

          在推薦系統(tǒng)的粗排階段,主要的任務(wù)是預(yù)估召回階段返回的候選集中每個物品的點擊率,然后選擇排序分最高的一些物品進入精排階段。粗排階段輸入的特征主要有用戶的行為特征(如用戶的歷史點擊/購買行為)、用戶屬性特征(如用戶id、性別、年齡等)、物品特征(如物品id、類別、品牌等)。在粗排階段,由于要在毫秒內(nèi)給成千上萬的候選物品打分,因此模型的復(fù)雜度受到了很大的限制,工業(yè)界傳統(tǒng)的做法是使用內(nèi)積模型,把用戶側(cè)和物品側(cè)作為雙塔,在請求時,把用戶側(cè)的向量和候選物品向量進行內(nèi)積運算,從而對物品池做粗篩。有一些交叉特征對粗排效果有明顯的提升,比如用戶在過去小時內(nèi)在待預(yù)估商品類目下的點擊次數(shù)、用戶過去小時內(nèi)在待預(yù)估商品所在店鋪中的點擊次數(shù)等。對于這些交叉特征,如果放到用戶側(cè),那么針對每個物品都需要計算一次用戶側(cè)的塔;如果放到物品側(cè),同樣針對每個物品都需要計算一次物品側(cè)的塔,這會大大加大計算復(fù)雜度,增加線上的推理延時。因此,這些交叉特征對于粗排階段的模型來說,通常在線上無法應(yīng)用,我們就稱它們?yōu)榇峙臗TR預(yù)估中的Privileged Features。

          在精排階段,我們不僅要預(yù)估CTR,還要預(yù)估CVR,即用戶點擊跳轉(zhuǎn)到商品頁后購買該商品的概率。在電商領(lǐng)域的推薦,主要目標是最大化GMV,即 GMV = CTR * CVR * Price 。一旦預(yù)估了所有商品的CTR和CVR,我們就可以根據(jù)預(yù)期的GMV對它們進行排名,使得GMV最大化。在CVR的定義下,很明顯用戶在商品頁的行為特征對于CVR預(yù)估會非常有幫助,比如說用戶在商品頁停留的時長、是否查看評論、是否與商家溝通等。但是,這些特征在線上預(yù)估階段是無法獲取的,商品在被用戶點擊之前就需要估計CVR以進行排序。所以對于CVR預(yù)估來說,用戶在點擊后進入到商品頁的一些特征(比如停留時長、是否查看評論、是否與商家溝通等)同樣是Privileged Features。

          再比如,在短視頻粗排或精排階段要做多目標預(yù)估,即不僅要預(yù)估點擊率還要預(yù)估該視頻的點贊、評論、分享轉(zhuǎn)發(fā)、進入個人主頁、收藏、下載等互動目標。如果此時,用戶點擊該視頻,并對該視頻進行了觀看。那么,用戶的視頻觀看時長特征,對于互動目標的預(yù)估顯的很重要,但是在線上推理時,我們需要在預(yù)估點擊率之前就要估計互動目標,并不能獲取到視頻觀看時長這一重要特征。因此,我們可以把用戶觀看視頻時長特征作為Privileged Features。

          使用這些Privileged Features,可以提升模型的預(yù)測精度。因此本論文借鑒模型蒸餾的思想,讓粗排階段的CTR模型或者是精排階段的CVR模型,都能夠?qū)W習(xí)到一些Privileged Features的信息。

          (2)優(yōu)勢特征蒸餾

          直觀來看,使用多任務(wù)學(xué)習(xí)(Multi-Task Learning,簡稱MTL)來預(yù)測優(yōu)勢特征是一個不錯的選擇。然而,在多任務(wù)學(xué)習(xí)中,每個子任務(wù)往往很難滿足對其他任務(wù)的無害準則(No-harm Guarantee),換句話說,預(yù)測優(yōu)勢特征的任務(wù)可能會對原始的預(yù)測任務(wù)造成負面影響,尤其是預(yù)測優(yōu)勢特征的任務(wù)比原始任務(wù)來得更有挑戰(zhàn)性時。從實踐的角度來看,如果同時預(yù)測許多優(yōu)勢特征,如何平衡各個任務(wù)的權(quán)重也會非常困難。

          為了更優(yōu)雅地利用優(yōu)勢特征,本論文提出優(yōu)勢特征蒸餾(Privileged Features Distillation,簡稱PFD)。在離線環(huán)境下,我們會同時訓(xùn)練兩個模型:一個學(xué)生模型以及一個教師模型。其中學(xué)生模型和原始模型完全相同,而教師模型額外利用了優(yōu)勢特征, 其準確率也因此更高。 通過將教師模型蒸餾出的知識(Knowledge,論文中特指教師模型中最后一層的輸出)傳遞給學(xué)生模型,可以輔助其訓(xùn)練并進一步提升準確率。在線上服務(wù)時,我們只抽取學(xué)生模型進行部署,因為輸入不依賴于優(yōu)勢特征,離線、在線的一致性得以保證。在PFD中,所有的優(yōu)勢特征都被統(tǒng)一到教師模型作為輸入,加入更多的優(yōu)勢特征往往能帶來模型更高的準確度。相反,在MTL中,預(yù)測更多的優(yōu)勢特征反而可能損害原始模型。更進一步,相比原始目標函數(shù),PFD只引入額外一項蒸餾誤差,因此更容易與原始損失函數(shù)平衡。

          上面的損失函數(shù)被分為兩部分,兩部分都是計算交叉熵。損失的第一部分是可以稱為hard loss,其label是或者;第二部分可以稱為soft loss或distillation loss,其label是Teacher網(wǎng)絡(luò)的Softmax輸出,是概率值,如的概率點擊,的概率不點擊)。其中,表示普通的輸入特征,表示優(yōu)勢特征,表示Label,表示模型的輸出,表示損失函數(shù),其中下標 指代student,指代distillation,指代teacher。是平衡兩個損失函數(shù)之間的超參數(shù)。值得注意的是,在教師模型中,除了輸入優(yōu)勢特征以外,我們還將普通特征輸入到教師模型中去。如上述公式中所示,教師模型的參數(shù)需要預(yù)先學(xué)好,這直接導(dǎo)致模型的訓(xùn)練時間加倍。

          PFD不同于常見的模型蒸餾(Model Distillation,簡稱MD)。在MD中,教師模型和學(xué)生模型處理同樣的輸入特征,其中教師模型會比學(xué)生模型更為復(fù)雜,比如,教師模型會用更深的網(wǎng)絡(luò)結(jié)構(gòu)來指導(dǎo)使用淺層網(wǎng)絡(luò)的學(xué)生模型進行學(xué)習(xí)。在PFD中,教師和學(xué)生模型會使用相同網(wǎng)絡(luò)結(jié)構(gòu),而處理不同的輸入特征。在下圖中,我們給出了優(yōu)勢特征蒸餾和模型蒸餾的網(wǎng)絡(luò)結(jié)構(gòu)區(qū)別。

          如上述損失函數(shù)的公式所示,教師模型的參數(shù)需要預(yù)先學(xué)好,這直接導(dǎo)致模型的訓(xùn)練時間加倍。一種更直接的方式是同步更新學(xué)生和教師模型,因此目標函數(shù)變成如下形式:

          盡管同步更新能顯著縮短訓(xùn)練時間,但也會導(dǎo)致訓(xùn)練不穩(wěn)定的問題。尤其在訓(xùn)練初期,教師模型還處于欠擬合的情況下,學(xué)生模型直接學(xué)習(xí)教師模型的輸出會有一定的概率導(dǎo)致訓(xùn)練偏離正常。解決這個問題的方法也非常簡單,只需要在開始階段將設(shè)定為,然后在預(yù)設(shè)的迭代步將其設(shè)為固定值。具體步驟可以參見下圖算法1。值得一提的是,我們讓蒸餾誤差項只影響學(xué)生網(wǎng)絡(luò)的參數(shù)的更新,而對教師網(wǎng)絡(luò)的參數(shù)不做梯度回傳,從而避免學(xué)生網(wǎng)絡(luò)和教師網(wǎng)絡(luò)相互適應(yīng)(co-adaption)而損失精度。

          (3)優(yōu)勢特征蒸餾+模型蒸餾

          在上圖中,我們比較了模型蒸餾和優(yōu)勢特征蒸餾的異同,既然兩者都能提升學(xué)生模型的效果且互補,一個直觀的想法就是將這兩種技巧結(jié)合在一起以進一步提升效果。

          這里我們嘗試在粗排CTR模型中使用這種PFD+MD技巧。在粗排中,我們使用內(nèi)積運算對候選商品集合進行打分。事實上,無論采用何種映射表征用戶或者商品,模型最終都會受限于頂層雙線性(Bi-Linear)內(nèi)積運算的表達能力。內(nèi)積粗排模型可以看成是廣義的矩陣分解,不過與常規(guī)的分解不同的是,這里額外融合了各種輔助信息(side information)。按照神經(jīng)網(wǎng)絡(luò)的萬有逼近定理,非線性(Non-Linear)MLP,有著比雙線性內(nèi)積運算更強的表達能力,在這里很自然地被選為更強的教師模型。下圖給出了粗排PFD+MD蒸餾框架示意圖。事實上,圖中加了優(yōu)勢特征的教師模型就是我們線上精排CTR模型,所以這里的蒸餾技巧也可以看成粗排反向?qū)W習(xí)精排的打分結(jié)果。

          (4)實驗結(jié)論

          在手淘信息流的兩個基礎(chǔ)預(yù)測任務(wù)上進行PFD實驗。在粗排CTR模型中,通過蒸餾交叉特征(在線構(gòu)造特征以及模型推理延時過高,在粗排上無法直接使用)以及蒸餾表達能力更強的MLP模型,即通過MD+PFD可以在線提升%的點擊指標(同時保證成交指標不降)。在精排CVR模型上,通過蒸餾停留時長等后驗特征,只對PFD做測試,對比Baseline,PFD提升%的成交指標(并且點擊指標不降)。

          【相關(guān)文章】

          • Xu C, Li Q, Ge J, et al. Privileged Features Distillation at Taobao Recommendations[C]//Proceedings of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2020: 2590-2598.

          3.1.3 《Ranking Distillation: Learning Compact Ranking Models With High Performance for Recommender System》

          這篇論文是將“目標蒸餾-logits方法“應(yīng)用到推薦系統(tǒng)領(lǐng)域的論文,被KDD 2018所接收。 因為是推薦和信息檢索相關(guān)的論文,有一定的借鑒價值,因此也在這里給大家介紹一下。本論文提出的背景是:(1)檢索系統(tǒng)或推薦系統(tǒng)中模型龐大,可以用蒸餾網(wǎng)絡(luò)的方式提升工程效率;(2)目標是給一個query,預(yù)測檢索系統(tǒng)的Top K相關(guān)的documents。知識蒸餾是指:給定一個輸入,學(xué)生模型學(xué)習(xí)最小化Label和教師模型Soft-target的KL散度;排序蒸餾是指:給定一個query,學(xué)生模型將因其教師模型的前K個文檔排名而獲得更高的排名;兩者區(qū)別如下圖所示。

          排序蒸餾的過程如下圖所示。第一階段訓(xùn)練教師網(wǎng)絡(luò),對于每個query預(yù)測Top K相關(guān)documents,補充為學(xué)生網(wǎng)絡(luò)的Ground truth信息;第二階段教師網(wǎng)絡(luò)的Top K作為正例加到學(xué)生網(wǎng)絡(luò)中一起進行訓(xùn)練,使得學(xué)生網(wǎng)絡(luò)和教師網(wǎng)絡(luò)的預(yù)測結(jié)果更像。

          排序蒸餾的損失函數(shù)如下:

          其中,Loss的第一部分為交叉熵Loss, 為真實標簽, 為學(xué)生網(wǎng)絡(luò)的預(yù)測結(jié)果。第二部分為蒸餾損失,教師網(wǎng)絡(luò)對無標簽數(shù)據(jù)排序出的Top K作為正樣本指導(dǎo)學(xué)生模型學(xué)習(xí)。第二部分Top K 損失的具體公式為:

          其中,為每條教師網(wǎng)絡(luò)中預(yù)測的樣本的權(quán)重,有兩種方式生成:

          • 對位置進行加權(quán)(即,Top 1到K的順序);
          • 對排序相關(guān)性進行加權(quán)(考慮教師網(wǎng)絡(luò)預(yù)測的documents與query的相關(guān)性程度)。

          【相關(guān)文章】

          • Tang J, Wang K. Ranking distillation: Learning compact ranking models with high performance for recommender system[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018: 2289-2298.

          3.1.4 《Ensembled CTR Prediction via Knowledge Distillation》

          這是華為發(fā)表的一篇將“目標蒸餾-logits方法“和“特征蒸餾(即學(xué)習(xí)Teacher模型的中間層特征)”應(yīng)用到推薦系統(tǒng)領(lǐng)域的論文,被CIKM 2020所接收。 當(dāng)前對于CTR預(yù)估的研究大致集中在兩個方面,一種是嘗試更為復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)來更好的捕捉特征之間的交叉信息以及用戶的動態(tài)行為信息,如引入卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、注意力機制和圖神經(jīng)網(wǎng)絡(luò)等;另一種趨勢是沿用Wide & Deep的思路,嘗試將多個子模塊進行融合,如DeepFM、DCN、XDeepFM、AutoInt等。盡管這些研究帶來了點擊率預(yù)估效果的提升,但是隨著模型結(jié)構(gòu)變得更加復(fù)雜,在實際工業(yè)界使用這些模型耗時會越來越高,往往難以真正在線上進行部署。那么如何既能保持多模型融合的效果,同時又能夠使得模型更加輕量化呢?知識蒸餾的方式是一種不錯的選擇。

          (1)單教師網(wǎng)絡(luò)知識蒸餾

          首先來看一下單教師網(wǎng)絡(luò)知識蒸餾的框架:

          從上圖中可以看到,用同樣的特征分別輸入到teacher網(wǎng)絡(luò)和student網(wǎng)絡(luò)中,得到teacher網(wǎng)絡(luò)的輸出為 ,得到student網(wǎng)絡(luò)的輸出為 ,那么在訓(xùn)練時teacher網(wǎng)絡(luò)和student網(wǎng)絡(luò)的損失分別為:

          其中, 表示交叉熵損失, 表示蒸餾損失。 表示teacher網(wǎng)絡(luò)的損失,它只有交叉熵損失。 表示student網(wǎng)絡(luò)的損失,它不僅包含交叉熵損失,還包括一項蒸餾損失。為了使知識從教師模型轉(zhuǎn)移到學(xué)生模型,在論文中,使用兩種最常用的蒸餾方法:soft label(目標蒸餾-logits方法)和hint regression(學(xué)習(xí)Teacher模型的中間層特征)。

          • soft label蒸餾損失如下所示:

          其中, 表示交叉熵損失,表示教師模型最后softmax層輸出的類別概率,表示學(xué)生模型最后softmax層輸出的類別概率,就是溫度。關(guān)于soft label蒸餾、hint regression蒸餾和溫度參數(shù)作用,可以看我的這篇文章:深度學(xué)習(xí)中的知識蒸餾技術(shù)

          • hint regression蒸餾損失函數(shù)如下:

          hint regression的目的是引導(dǎo)student網(wǎng)絡(luò)學(xué)習(xí)teacher網(wǎng)絡(luò)的中間層表示。這里代表teacher網(wǎng)絡(luò)的中間層表示,代表student網(wǎng)絡(luò)中被指導(dǎo)的層的輸出。通過矩陣進行變換,期望二者的距離越近越好。

          (2)多教師網(wǎng)絡(luò)知識蒸餾

          模型融合能夠有效提升CTR預(yù)估的效果,但會帶來耗時的增加。因此,可以通過知識蒸餾的方式,讓student網(wǎng)絡(luò)從多個模型中進行學(xué)習(xí),來達到近似或比模型融合更佳的效果。因此,論文提出了多教師網(wǎng)絡(luò)知識蒸餾,其結(jié)構(gòu)如下圖所示:

          這里的主要問題是,多個teacher網(wǎng)絡(luò)如何向student網(wǎng)絡(luò)傳遞知識?最簡單的方式就是對所有teacher模型的輸出進行平均,從而使問題簡化為向單個教師學(xué)習(xí)。這種做法實現(xiàn)簡單,但是不同teacher的模型結(jié)構(gòu)和訓(xùn)練框架都不同,因此并非所有的教師模型都可以在每個樣本上提供同等重要的知識。效率低下的教師模型甚至可能會誤導(dǎo)學(xué)生模型的學(xué)習(xí)。為了從多個教師模型那里獲得有效的知識,論文提出了一種自適應(yīng)的集成蒸餾框架,如上圖所示,可以動態(tài)地調(diào)整每個教師模型的貢獻。因此有了如下式所示的自適應(yīng)蒸餾損失函數(shù):

          為了實現(xiàn)動態(tài)學(xué)習(xí)權(quán)重和自適應(yīng)不同的訓(xùn)練樣本,作者提出了一個教師門控網(wǎng)絡(luò)(Teacher gating network)來調(diào)整教師模型的重要性權(quán)重,從而實現(xiàn)按樣本進行教師模型選擇。更具體地說,采用softmax函數(shù)作為門控函數(shù),計算方式如下:

          (3)網(wǎng)絡(luò)訓(xùn)練

          知識蒸餾一般有兩種訓(xùn)練方式,pre-train方式和co-train方式。pre-train方式是預(yù)先訓(xùn)練teacher網(wǎng)絡(luò),然后再訓(xùn)練student網(wǎng)絡(luò);co-train方式則是通過上述介紹的損失對teacher網(wǎng)絡(luò)和student網(wǎng)絡(luò)進行聯(lián)合訓(xùn)練。co-train方式往往訓(xùn)練速度更快,但所需的GPU資源也會更多。論文的實驗部分也對這兩種訓(xùn)練方式進行了比較,感興趣的同學(xué)可以閱讀一下論文原文。

          【相關(guān)文章】

          • Zhu J, Liu J, Li W, et al. Ensembled CTR Prediction via Knowledge Distillation[C]//Proceedings of the 29th ACM International Conference on Information & Knowledge Management. 2020: 2941-2958.

          3.1.5 百度CTR 3.0 雙DNN聯(lián)合訓(xùn)練

          這是2017年百度當(dāng)時商務(wù)搜索智能交互部負責(zé)人劉斌新在其PPT《AI筑巢:機器學(xué)習(xí)在百度鳳巢的深度應(yīng)用》中提到的類似知識蒸餾的技術(shù)。由于百度極少對外公開自己的技術(shù),放在這里是想讓大家了解一下,百度廣告CTR模型的發(fā)展歷史。

          百度廣告CTR模型的發(fā)展歷程如下圖所示,CTR-X是一個用于粗排階段的DSSM,其中CTR3.0與知識蒸餾的工作比較相似,類似于將“特征蒸餾(即學(xué)習(xí)Teacher模型的中間層特征)”應(yīng)用在CTR模型中, 也是用于精排階段,但是訓(xùn)練兩個結(jié)構(gòu)差不多的DNN需要運用類似于特征遷移的方法,左側(cè)DNN主要用來學(xué)習(xí)稀疏特征embedding向量,右側(cè)DNN使用左側(cè)訓(xùn)練得到的embedding向量和其它特征作為輸入訓(xùn)練CTR模型。

          3.1.6 愛奇藝在排序階段提出了雙DNN排序模型

          近年來隨著人工智能的發(fā)展,深度學(xué)習(xí)開始在工業(yè)界不同場景落地。深度學(xué)習(xí)跟以前的機器學(xué)習(xí)模型相比,其中很重要的特點就是能在模型側(cè)自動構(gòu)建特征,實現(xiàn)端到端學(xué)習(xí),效果也有明顯提升,但新的問題如模型效果和推理效率的沖突也開始凸顯。愛奇藝提出了新的在線知識蒸餾方法來平衡模型效果和推理效率,在推薦場景上獲得了明顯的效果。愛奇藝在探索升級排序模型的過程中提出的雙DNN排序模型,這是一個將“目標蒸餾-logits方法“和“特征蒸餾(即學(xué)習(xí)Teacher模型的中間層特征)”結(jié)合,應(yīng)用到推薦系統(tǒng)領(lǐng)域的實踐。

          愛奇藝嘗試了一些復(fù)雜模型來取代改進版的Wide & Deep模型,如DCN, xDeepFM等,但發(fā)現(xiàn)需要平衡large model 的模型效果和推理性能是有待解決的比較關(guān)鍵的問題。xDeepFM比較難落地主要有以下兩點原因:

          • 推理性能:同等情況下,在CPU上推理,xDeepFM與改進版的Wide & Deep模型相比,耗時是其倍;
          • 使用GPU時,只有在大batch下,xDeepFM推理性能才符合要求。

          通過實踐,愛奇藝提出了一種新的排序模型框架: 雙DNN排序模型,其核心在于提出了新的聯(lián)合訓(xùn)練方法,從而解決了高性能復(fù)雜模型的上線問題,該框架的特點和優(yōu)勢總結(jié)如下:

          (1)雙DNN

          • 左側(cè)DNN-Teacher網(wǎng)絡(luò)(紅框):模型性能更好的復(fù)雜模型,推理性能差;
          • 右側(cè)DNN-Student網(wǎng)絡(luò)(黃框):模型性能一般的簡單模型,推理性能佳;

          (2) Fine-Tune

          Teacher網(wǎng)絡(luò)(紅框)和Student網(wǎng)絡(luò)(黃框)share底層特征參數(shù)(藍框),teacher網(wǎng)絡(luò)多了Feature Interaction Layer層(該層是teacher網(wǎng)絡(luò)的核心,可以容納各種特征交互)。

          (3)聯(lián)合訓(xùn)練

          • 教師網(wǎng)絡(luò)監(jiān)督指導(dǎo)學(xué)生網(wǎng)絡(luò)的學(xué)習(xí);
          • 學(xué)生網(wǎng)絡(luò)學(xué)習(xí)教師網(wǎng)絡(luò)的隱層輸出和Logits輸出(特征遷移 + 輸出遷移);
          • Teacher網(wǎng)絡(luò)和Student網(wǎng)絡(luò)同時進行訓(xùn)練;
          • 訓(xùn)練穩(wěn)定,大網(wǎng)絡(luò)性能天花板不受小網(wǎng)絡(luò)影響;

          排序模型結(jié)構(gòu)如下:

          雙DNN排序模型由兩個DNN CTR模型組成,左側(cè)是Teacher,右側(cè)是Student,Student 模型是最終用于上線推理的CTR 模型。兩者共享特征輸入和表示,但是左側(cè)相比右側(cè)多了Feature Interaction Layer。左側(cè)和右側(cè)有各自獨立的MLP , 其包含多層Hidden Layer。主要Layer的介紹如下:

          • Embedding Layer: 輸入表示層,不同特征按Field組織,稀疏Field ID embedding化后通過average pooling得到field的embedding表示;
          • Feature Interaction Layer: 這是左側(cè)模型核心,其可以容納各種形式的特征組合組件,二階或高階特征組合都可以放置在其中;
          • Classifier Layer: 兩個DNN CTR模型的Classifier,一般是多層DNN;

          【相關(guān)文章】

          • 雙DNN排序模型:在線知識蒸餾在愛奇藝推薦的實踐,地址:https://mp.weixin.qq.com/s/ZNjC30F28uX2lBkHBAAU3g

          3.2 粗排環(huán)節(jié)應(yīng)用知識蒸餾

          3.2.1 騰訊-全民K歌粗排雙塔模型實踐

          這是一個將“目標蒸餾-logits方法“應(yīng)用到推薦系統(tǒng)領(lǐng)域的實踐。 粗排夾在召回跟精排之間,它的定位是什么?相比于召回,粗排更強調(diào)排序性,也就是更強調(diào)topk內(nèi)部的排序關(guān)系;相對于精排,粗排更強調(diào)性能,因為精排通常有非常復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),非常大的參數(shù)量,這也意味著它在實際應(yīng)用的過程中比較難去處理一個較大規(guī)模量級的候選集的打分,這時粗排就必須要解決這個問題,所以它在性能上會相較于精排有更多的要求。

          從精排的角度,把粗排當(dāng)成是精排的遷移或壓縮,也就是說從粗排到精排這是一條排序的路線,它的建模目標是預(yù)估值。這種粗排建模方法的好處是它的表達能力很強,因為通常會用到一些比較復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),而且它跟精排的聯(lián)動性是更好的,可以讓粗排跟精排的目標保持某種程度上的一致性。同時,它的缺點也凸顯出來了,就是我們用到了復(fù)雜的方法,算力的消耗一定也會相應(yīng)的提升。因此,需要著重解決的是如何在有限的算力下盡可能地突破表達能力上限。在這種路線下,我們通常會在架構(gòu)選擇上選擇雙塔結(jié)構(gòu)模型,如上圖所示。

          我們通過把user和item的feature進行結(jié)構(gòu)解耦與分開建模,然后完成整個架構(gòu)的設(shè)計,在模型訓(xùn)練完畢之后,我們會通過user serving實時的產(chǎn)出user embedding,再通過索引服務(wù)把該用戶所有的候選集合的ID給取出來,最后在user embedding跟item embedding之間做內(nèi)積的運算,得到一個粗排的預(yù)估值,作為整個粗排階段的排序依據(jù)。

          這么做的優(yōu)勢是user和item的結(jié)構(gòu)是解耦的,內(nèi)積計算的算力消耗小。同時,它的缺點也非常的明顯:

          • 第一個是它在特征表達上是缺失的,因為user跟item解耦之后,很難使用一些交叉特征,一旦用了交叉特征,有多少item就得進行多少次預(yù)估,這違背了我們使用雙塔模型的初衷。
          • 第二個是雙塔模型在結(jié)構(gòu)上也是有缺陷的,從上面這幅框架圖中可以看到,user跟item的交互非常少,這會限制模型的表達能力的上限。

          如果選擇了雙塔結(jié)構(gòu)模型,我們可以保障它的性能,但是需要進一步的考慮如何避免這種簡易的結(jié)構(gòu)所帶來的效果上的損失。在這種情況下,我們通常會使用一些模型蒸餾的方式。

          具體的,我們來看看全民K歌算法團隊如何做粗排模塊的蒸餾,主要是分為兩個大的方向:

          • 模型蒸餾,主要適用于模型不同但特征相同的情況,比如,包含多個場景的框架里,某些場景對性能有要求;由于有一些額外的外部限制,使某場景無法用很復(fù)雜參數(shù)量非常大的模型,可以用一個子模型使用全部特征。此時,模型蒸餾主要是彌補子模型缺少復(fù)雜結(jié)構(gòu)或交互結(jié)構(gòu)導(dǎo)致的部分收益損失,本質(zhì)上是一種模型壓縮方案。
          • 特征蒸餾,主要適用于模型相同但特征不同的情況,比如,在某些場景,無法使用全量特征 ( 如交叉特征 ) 或部分特征必須是剪裁過的,即特征沒被完全利用,存在一部分損失。這時,通過一個更大的teacher模型學(xué)習(xí)全量特征,再把學(xué)到的知識遷移到子模型,即彌補了上述的部分特征損失。

          基于以上描述可知,粗排模塊可以通過蒸餾的方式,補足雙塔模型在結(jié)構(gòu)和特征上的缺陷。接下來的問題就是如何找到一個合適的teacher模型?精排模型通常是一個被充分訓(xùn)練的、參數(shù)量很大、表達能力很強的模型,如果通過蒸餾精排模型獲取粗排模型,那么目標的一致性和學(xué)習(xí)能力的上限都符合我們的預(yù)期。具體操作方式如上圖右側(cè)所示:

          • 左側(cè)的teacher模型是精排模型,該模型使用全量的特征,包括三大類,即user側(cè)特征、item側(cè)特征及它們的交叉特征;虛線框里是一些復(fù)雜的網(wǎng)絡(luò)拓撲結(jié)構(gòu);最后的softmax with temperature就是整個精排模型的輸出內(nèi)容,后續(xù)會給到粗排模型進行蒸餾。
          • 中間的粗排模型,user tower只用user features,item tower只用item features,即整體上看,模型未使用交叉特征。在user tower和item tower交互后,加上精排模型傳遞過來的logits信息,共同構(gòu)成了粗排模型的優(yōu)化目標。整個粗排模型的優(yōu)化目標,同時對真實樣本和teacher信息進行了擬合。
          • 右側(cè)展示的是訓(xùn)練完粗排模型后,在線上產(chǎn)出user serving,通過user serving產(chǎn)出user embedding,再與item embedding做內(nèi)積運算,完成整個排序的過程。上述流程即實現(xiàn)了粗排和精排的聯(lián)動過程,并且訓(xùn)練完粗排模型就可以進行一個非常高效的serving,進行粗排排序。業(yè)界也有相關(guān)的一些工作,上圖最下方給出了一篇阿里在這方面的論文。

          實踐中,粗排模型訓(xùn)練時,依賴的精排輸出結(jié)果來自上報精排日志。如果在離線重新對樣本進行預(yù)估再輸出,其實是對線下資源的浪費,所以通常在線上精排預(yù)估時,就把一些結(jié)果作為日志進行上報。以我個人的猜測,這里精排日志應(yīng)該是精排模型最后一層或倒數(shù)第二層的輸出結(jié)果,通常是logits或softmax形式的soft labels,比如是否點擊,那soft labels就是,表示點擊的概率,表示不點擊的概率;是否完播,那soft labels就是表示完播的概率,表示不完播的概率。粗排模型異步訓(xùn)練,產(chǎn)出模型提供給Serving。

          最后,全民K歌推薦算法團隊給出了知識蒸餾的進一步優(yōu)化方向:

          • 首先,上述粗排蒸餾過程本質(zhì)上是pointwise,但通過上報精排日志可以拿到精排模型給出的完整推薦列表,用pairwise學(xué)習(xí)精排排出來的序,可以進一步逼近精排結(jié)果,能更多的提取精排傳遞出的信息。
          • 其次,前面雖然不斷地用teacher模型和student模型描述整個過程,但實際效果上student模型不一定低于teacher模型。換一個角度,student模型其實是基于teacher模型做進一步訓(xùn)練,所以student模型的表征能力有可能超過teacher模型。事實上,如何讓student模型通過反復(fù)的蒸餾,效果超過teacher模型,在模型蒸餾領(lǐng)域也有許多相關(guān)方法。

          【相關(guān)文章】

          • 騰訊音樂:全民K歌推薦系統(tǒng)架構(gòu)及粗排設(shè)計,地址:https://mp.weixin.qq.com/s/Jfuc6x-Qt0rya5dbCR2uCA

          3.2.2 愛奇藝短視頻推薦之粗排模型蒸餾優(yōu)化

          這是一個將“目標蒸餾-logits方法“應(yīng)用到推薦系統(tǒng)領(lǐng)域的實踐。 粗排模型發(fā)揮的主要作用是統(tǒng)一計算和過濾召回結(jié)果,在盡量保證推薦準確性的前提下減輕精排模型的計算壓力。這里主要介紹愛奇藝隨刻基礎(chǔ)推薦團隊在短視頻推薦業(yè)務(wù)的粗排模型優(yōu)化上通過知識蒸餾技術(shù)提升鏈路目標的一致性。

          愛奇藝團隊也是選擇了目前主流的雙塔DNN模型作為粗排模型。用戶側(cè)和Item側(cè)分別構(gòu)建三層全聯(lián)接DNN模型,最后分別輸出一個多維(512)的embedding向量,作為用戶側(cè)和視頻側(cè)的低維表征。粗排雙塔DNN模型如下圖所示:

          在構(gòu)建粗排模型特征集合時,為了控制粗排模型參數(shù)的復(fù)雜度,他們對粗排的特征集合做了大量的裁剪,用戶側(cè)和視頻側(cè)都只采用了少部分精排模型的特征子集。

          其中,用戶側(cè)特征主要選取了下面幾維特征:

          • 用戶基礎(chǔ)畫像特征、上下文特征如手機系統(tǒng)、型號、地域等;
          • 用戶的歷史行為特征,如用戶觀看的視頻ID、up主ID,以及觀看視頻的關(guān)鍵詞tag等,以及用戶session內(nèi)的行為特征等。

          視頻側(cè)特征只保留了三維:視頻ID、 up主ID、視頻標簽。

          這里,我插入一些自己的想法。如果粗排模型是雙塔DNN模型,精排模型為wide&deep模型,那么對粗排模型和精排模型的預(yù)估結(jié)果做詳細的統(tǒng)計和分析,就會發(fā)現(xiàn)粗排模型預(yù)估為Top-K的頭部視頻和精排模型預(yù)估的頭部視頻有很大的差異。這也是目前工業(yè)界大多數(shù)推薦系統(tǒng)的弊端,歸咎原因主要是以下兩方面的原因:

          • 特征集合的差異: 粗排層到精排層相當(dāng)于是一個承上啟下的作用,它會把我們召回到的一些萬量級的視頻進一步篩選到千量級,既要考慮打分的性能問題,又要考慮粗排精準度的問題。因此,粗排模型的特征只會采用少部分精排模型的特征子集。
          • 模型結(jié)構(gòu)的差異: 雙塔DNN模型和精排模型(wide&deep、MMoE等模型)的優(yōu)化和擬合數(shù)據(jù)時的側(cè)重點還是有很大的差異的。

          綜合以上分析,為了盡量彌補粗排模型和精排模型的Gap,縮小粗排模型和精排模型預(yù)估結(jié)果的差異性;為了彌補特征裁剪帶來的損失,保證裁剪后粗排模型的精度;且粗排從GBDT升級為雙塔DNN模型,使得復(fù)雜度和參數(shù)量級有了爆炸性增長,為了不損失粗排模型的精度同時滿足上線的性能指標要求,我們在訓(xùn)練粗排模型時,采用了模型壓縮常用的方法-知識蒸餾來訓(xùn)練粗排模型。

          知識蒸餾是一種模型壓縮常見方法,在teacher-student框架中,將復(fù)雜、學(xué)習(xí)能力強的網(wǎng)絡(luò)學(xué)到的特征表示“知識蒸餾”出來,傳遞給參數(shù)量小、學(xué)習(xí)能力弱的網(wǎng)絡(luò)。從而我們會得到一個速度快,能力強的網(wǎng)絡(luò)。將粗排模型和精排模型放到知識蒸餾的teacher-student框架中,以蒸餾訓(xùn)練的方式來訓(xùn)練粗排模型,以精排模型為teacher來指導(dǎo)粗排模型的訓(xùn)練,從而得到一個結(jié)構(gòu)簡單,參數(shù)量小,但表達力不弱的粗排模型,蒸餾訓(xùn)練示意圖如下圖所示:

          在蒸餾訓(xùn)練的過程中,為了使粗排模型輸出的logits和精排模型輸出的logits分布盡量對齊,訓(xùn)練優(yōu)化的目標從原來單一的粗排模型的logloss調(diào)整為如下式所示的三部分loss的加和,包括student loss(粗排模型loss)、蒸餾loss 和teacher loss(精排模型loss)三部分組成。

          其中蒸餾loss,我們線上采用的是粗排模型輸出和精排模型輸出的最小平方誤差,為了調(diào)節(jié)蒸餾loss的影響,我們在該項loss前又加了一維超參lamda,我們設(shè)置超參lamda隨著訓(xùn)練步數(shù)迭代逐漸增大,增強蒸餾loss的影響,在訓(xùn)練后期使得粗排模型預(yù)估值盡量向精排模型對齊,lamda隨著訓(xùn)練step的變化趨勢如下圖所示:

          【相關(guān)文章】

          • 如何提升鏈路目標一致性?愛奇藝短視頻推薦之粗排模型優(yōu)化歷程,地址:https://mp.weixin.qq.com/s/LZlskUK4dmOd5fLTZIATnQ

          4. 總結(jié)

          從整個推薦系統(tǒng)的工作流程和業(yè)界的實踐來看,在精排和粗排中,知識蒸餾的效果已經(jīng)得到了驗證。但是在召回中,還鮮有提及。如何打破推薦不同環(huán)節(jié)之間的信息壁壘,提升推薦系統(tǒng)的整個鏈路目標一致性,知識蒸餾在這方面是有價值的。

          時間已經(jīng)來到了2021年,推薦系統(tǒng)中的模型知識蒸餾技術(shù),已經(jīng)得到了工業(yè)界的廣泛使用。但是,在互聯(lián)網(wǎng)的浪潮下,深度學(xué)在CTR預(yù)估問題上又有了許多新的發(fā)展,比如使用新的特征交互方式、CTR模型統(tǒng)一的benchmark、用戶行為序列建模和用戶的多興趣建模、多任務(wù)學(xué)習(xí)、CTR模型的增量訓(xùn)練、CTR模型debias、多模態(tài)學(xué)習(xí)與對抗、跨域遷移CTR建模、隱式反饋數(shù)據(jù)建模、NAS在CTR上應(yīng)用等。在推薦領(lǐng)域中,這些新的技術(shù)和方向?qū)映霾桓F,我們需要及時的follow業(yè)界前沿知識,才能不斷的成長,變得更強~

          5. Reference

          【1】推薦系統(tǒng)技術(shù)演進趨勢:從召回到排序再到重排 - 張俊林的文章 - 知乎 https://zhuanlan.zhihu.com/p/100019681
          【2】知識蒸餾在推薦系統(tǒng)的應(yīng)用 - 張俊林的文章 - 知乎 https://zhuanlan.zhihu.com/p/143155437
          【3】知識蒸餾與推薦系統(tǒng) - 涼爽的安迪的文章 - 知乎 https://zhuanlan.zhihu.com/p/163477538
          【4】火箭發(fā)射:阿里巴巴的輕量網(wǎng)絡(luò)訓(xùn)練方法,地址:https://github.com/Captain1986/CaptainBlackboard/blob/master/D%230034-%E7%81%AB%E7%AE%AD%E5%8F%91%E5%B0%84%EF%BC%9A%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E7%9A%84%E8%BD%BB%E9%87%8F%E7%BD%91%E7%BB%9C%E8%AE%AD%E7%BB%83%E6%96%B9%E6%B3%95/D%230034.md
          【5】火箭發(fā)射:點擊率預(yù)估界的“神算子”是如何煉成的?,地址:https://mp.weixin.qq.com/s/_qZNxBDUwXZVj4hGpV6ilA
          【6】KDD 2020 | 優(yōu)勢特征蒸餾在淘寶推薦中的應(yīng)用,地址:https://mp.weixin.qq.com/s/3zpri6pfVtp-3-5_004B1Q
          【7】RS Meet DL(62)-[阿里]電商推薦中的特殊特征蒸餾,地址:https://mp.weixin.qq.com/s/W309FtLGTjj6y1hFwdueHQ
          【8】優(yōu)勢特征蒸餾(Privileged Features Distillation)在手淘信息流推薦中的應(yīng)用 | KDD論文解讀,地址:https://developer.aliyun.com/article/768970
          【9】推薦系統(tǒng)遇上深度學(xué)習(xí)(九十九)-[華為]多教師網(wǎng)絡(luò)知識蒸餾來提升點擊率預(yù)估效果,地址:https://mp.weixin.qq.com/s/09O4Izf8_752db45FJ3znQ
          【10】AI筑巢:機器學(xué)習(xí)在百度鳳巢的深度應(yīng)用。https://myslide.cn/slides/763
          【11】雙DNN排序模型:在線知識蒸餾在愛奇藝推薦的實踐,地址:https://mp.weixin.qq.com/s/ZNjC30F28uX2lBkHBAAU3g
          【12】騰訊音樂:全民K歌推薦系統(tǒng)架構(gòu)及粗排設(shè)計,地址:https://mp.weixin.qq.com/s/Jfuc6x-Qt0rya5dbCR2uCA
          【13】如何提升鏈路目標一致性?愛奇藝短視頻推薦之粗排模型優(yōu)化歷程,地址:https://mp.weixin.qq.com/s/LZlskUK4dmOd5fLTZIATnQ
          【14】筆記︱模型壓縮:knowledge distillation知識蒸餾(一),地址:https://mp.weixin.qq.com/s/u82_7jYvfHXQaGMM_UQFBw
          【15】2020年精排模型調(diào)研 - Ruhjkg的文章 - 知乎 https://zhuanlan.zhihu.com/p/335781101
          【16】DSSM在召回和粗排的應(yīng)用舉例 - arachis的文章 - 知乎 https://zhuanlan.zhihu.com/p/350206643
          【17】Instagram 推薦系統(tǒng):每秒預(yù)測 9000 萬個模型是怎么做到的?地址:https://mp.weixin.qq.com/s/xJ9DNxamcYAQEzaYkoSNwA

          瀏覽 43
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美性交免费网站 | 中国人操逼视频 | 精品无码一区三区四区五区 | 夜夜骑青青草夜夜嗨 | 久久艹影院|