近年來隨著人工智慧的發展,深度學習開始在工業界不同場景落地。深度學習跟以前的機器學習模型相比,其中很重要的特點就是在於能在模型側自動構建特徵,實現端到端學習,效果也有明顯提升,但新的問題如模型效果和推理效率的衝突也開始凸顯。
愛奇藝提出了新的在線知識蒸餾方法來平衡模型效果和推理效率,在推薦場景上獲得了明顯的效果,本文主要介紹愛奇藝在探索升級排序模型的過程中提出的雙DNN排序模型。文章開始之前,首先為大家科普與本文主題相關的關鍵詞的含義及相關技術知識。
▌關鍵詞
▌寫在前面
近些年來,學術界和工業界陸續開展了多項讓排序模型變的wider and deeper的相關工作,其中,wider(更寬)意味著一個模型包含更多不同的子模型,如xDeepFM[1]包括了LR, DNN和CIN三種組件,分別建模一階顯示特徵交叉(LR),高階隱式特徵交叉(DNN)和高階顯示特徵交叉(CIN);deeper(更深)意味著通過增加模型複雜性來提升模型性能,一些在NLP和CV領域使用的複雜組件開始被引入排序模型,如xDeepFM的CIN其實是利用卷積神經網絡來建模特徵交叉, BST[2]利用Transformer建模用戶行為序列的表征。然而,更深更寬的模型在提升模型效果的同時,往往伴隨著模型推理效率的下降。
愛奇藝提出的在線知識蒸餾方法來平衡模型效果和推理效率,並在短視頻信息流和圖文信息流兩個重要場景上線後都獲得了明顯的正向效果。其中,在愛奇藝短視頻場景時長指標+6.5%,點擊率指標+2.3%;圖文推薦場景時長指標+4.5%,點擊率指標+14% 。
▌ 深度學習時代排序模型的演進
從建模特徵組合這個角度去介紹深度學習時代排序模型的演進,按照時間的發展經歷了三個時期(萌芽期、中興期和突破期),具體如下:
a. 萌芽期 : DNN開始被引入推薦排序模型,其優點在於神經網絡能隱式建模不同特徵間的高階特徵組合。國內最早應用案例是百度等公司在2013年左右開始將DNN用作CTR模型;
b. 中興期: 深度排序模型開始被廣泛接受,代表模型為WDL[3]和 DeepFM[4]等,這些模型的優勢在於在DNN基礎上,增加了顯示的一階或二階特徵組合。其中WDL幾乎成了推薦廣告CTR模型從傳統機器學習時代過渡到深度學習的敲門磚,應用這一模型既能嘗到深度學習的甜頭,又能復用已有的排序模型成果進一步提升模型性能;
c. 突破: 從DCN[5],xDeepFM開始,深度排序模型開始變的更深更寬,尤其重視使用DL組件來顯示建模高階特徵交叉,其顯示的高階特徵組合更符合算法工程師對排序模型的期許。通過模型本身來進行特徵組合可以避免人工特徵組合的一些弊端,如工程代價和人力成本。
上面介紹的深度排序模型可以歸類為如下表格,顯示的高階vector-wise交叉相對更make sense, 也是最近一些排序模型工作的核心優化點:
▌ 排序模型優化動機
愛奇藝排序模型從GBDT+FM等機器學習模型跨入到深度學習時代也是從WDL開始的,但是愛奇藝在此基礎上做了一些改進,最終排序模型結構如下圖1, Wide側是FM, GBDT輸出是FM輸入,Deep Model是DNN和FM的stacking。
該模型結構[7]在愛奇藝推薦的各個場景都作為baseline model使用,線上表現一直不錯。從2019年開始,團隊開始嘗試推動模型的實時性和端到端建模,同時引入一些最新的研究成果來提升模型性能。但在實踐過程中,發現baseline model存在如下弊端:
1. GBDT是CTR模型外的預處理組件,不適合實時訓練和更新。若GBDT更新,整個排序模型也需要更新,無法進行端到端訓練;
2. 若去掉GBDT, 端到端建模要解決兩類原始特徵(稀疏特徵和稠密特徵)之間的高階特徵組合。現有模型對稀疏特徵和稠密特徵是隔離處理,稀疏特徵只進入了Wide Model,現有模型不支持稀疏特徵的顯示高階建模;
3. 現在的模型結構無法自適應引入一些新的排序模型組件,因為其結構過於的大而全,而缺少了靈活性。
愛奇藝首先嘗試了最近提出的一些複雜模型來取代baseline model,如DCN, xDeepFM等,但發現需要平衡large model 的模型效果和推理性能是有待解決的比較關鍵的問題。
如以下圖表格所示,xDeepFM比較難落地:
1. 推理性能:同等情況下,在CPU上推理,xDeepFM與baselinemodel相比,耗時是其2.5~3.5倍;
2. 使用GPU時,只有在大batch下,xDeepFM推理性能才符合要求。
當使用和現有baseline model一樣的CPU推理資源時,像xDeepFM這樣的複雜深度模型無法上線。若使用GPU進行推理, ROI並不高。與這兩種情況相比,知識蒸餾[6]這一類模型壓縮方法是解決這類問題的良藥,可以將複雜模型的知識遷移到簡單模型。
到這裡總結出了下一代排序模型的優化方向:
1. 升級現有基準排序模型
• 去掉GBDT;
• 探索最新的一些排序模型進展,提升排序模型性能;
2. 大規模稀疏特徵的交叉
• 用模型顯示建模不同高維稀疏特徵的交叉;
• vector-wise交叉;
• 一個模型可以容納各種特徵交叉組件;
3 . 高性能的複雜深度模型如何落地
• 低投入高產出:不高於現有資源投入,獲得更好的線上效果;
• 模型壓縮:複雜模型知識遷移到簡單模型。
▌ 雙DNN排序模型
通過實踐,愛奇藝提出了一種新的排序模型框架: 雙DNN排序模型,其核心在於提出了新的聯合訓練方法,從而解決了高性能複雜模型的上線問題,該框架的特點和優勢總結如下:
1. 雙DNN
• 左側DNN:模型性能更好的複雜模型,推理性能差;
• 右側DNN: 模型性能一般的簡單模型,推理性能佳;
2. Fine-Tune
• 右側DNN 復用左側DNN的inputrepresentation layer;
3. 聯合訓練
• 複雜DNN監督指導簡單DNN的學習;
• KD on the fly, one stage;
• 訓練穩定性,大網絡性能天花板不受小網絡影響。
排序模型結構如下:
雙DNN排序模型由兩個DNN CTR Model組成,左側是Teacher,右側是Student,Student 模型是最終用於上線推理的CTR 模型。兩者共享特徵輸入和表示,但是左側相比右側多了Feature Interaction Layer。左側和右側有各自獨立的MLP , 其包含多層Hidden Layer。主要Layer的介紹如下:
Embedding Layer : 輸入表示層,不同特徵按Field組織,稀疏Field ID embedding化後通過average pooling得到field的embedding表示;
Feature Interaction Layer: 這是左側模型核心,其可以容納各種形式的特徵組合組件,二階或高階特徵組合都可以放置在其中;
Classifier Layer: 兩個DNNCTR模型的Classifier,一般是多層DNN。
▌ 雙DNN排序模型的優勢
雙DNN的優勢在於聯合訓練,通過聯合訓練遷移左側複雜DNN知識到右側簡單DNN,關鍵部分是以下3點:
1. Feature Transfer: 正如模型結構圖中的標註1所示,兩個DNN共享特徵表示層,相當於右側DNN 使用了copy and freeze的特徵遷移範式;
2. KD One the Fly: 知識蒸餾(KnowledgeDistillation, KD)是兩階段訓練,我們將其改為使用聯合訓練時進行知識遷移,訓練時使用teacher的預測結果指導student;
3. Classifier遷移: 僅有第二點還無法讓右側模型性能逼近左側,因為右側網絡結構偏弱,無法直接學到左側模型的輸出, 於是讓teacher的hiddenlayer作為監督信號指導student的hiddenlayer。
▌ 雙DNN排序模型訓練架構
在端到端模型結構確定後,通過引入在線學習實現了模型的實時性。下圖是雙DNN排序模型的訓練架構。
Finetune: 每天例行使用30天窗口訓練得到離線雙DNN排序模型,訓練完後再使用最新的樣本fine tune,使得模型能學到最新的用戶行為pattern。
在線學習熱啟動: 正如之前在線學習實踐[8]文章中所分享的,這裡也是使用離線模型作為在線學習訓練的熱啟動模型,這既能oov問題,也能防止在線學習長期運行帶來的bias。而這裡的在線學習只使用實時數據更新雙DNN的Student 模型,因為真正用於推理的是Student。
▌ 雙DNN排序模型推理
如下圖所示,依賴於公司提供的訓練平台,雙DNN模型的部署和推理實現了模型Graph和Embedding權重的解耦部署,其使得模型更新和部署超大模型變得更加方便,特別是在模型的大部分重要特徵是大規模稀疏特徵時。模型推理時,TF serving通過定製化的OP訪問存儲Embedding 矩陣的分布式PS。
▌ 業界相關實踐
百度
百度廣告CTR模型的發展歷程[9]如下:CTR-X是一個用於粗排階段的DSSM, 其中CTR 3.0與我們的工作比較類似,也是用於精排階段,但是訓練兩個結構差不多的DNN需要運用類似於特徵遷移的方法,左側DNN主要用來學習稀疏特徵embedding, 右側DNN使用左側訓練得到的embedding和其他特徵作為輸入訓練CTR model。
阿里
阿里媽媽在2018年提出了Rocket Launching訓練方法[10],將其用於廣告算法模型壓縮。該方法也是需要聯合訓練兩個複雜度有明顯差異的網絡,其中簡單的網絡稱為輕量網絡(light net),複雜的網絡稱為助推器網絡(booster net),兩個網絡共享表示層參數,方法和其核心區別在於如下兩點:
1. Rocket Launching只使用預測結果來指導簡單模型的訓練,我們的方法是讓簡單模型同時擬合預測結果和決策層的網絡結構表示,兩個網絡的性能差距會進一步縮小;
2. Rocket Launching聯合訓練時兩個大小網絡都會在反向傳播時更新EmbeddingLayer參數, 我們的方法是讓小網絡直接sharing, 不再更新,因為實驗發現同時更新會拉低大網絡性能。
實驗部分
雙DNN模型壓測:在愛奇藝某個信息流推薦場景的測試數據來看,左側模型是右側模型推理時延的5倍左右, 模型大小壓縮了超過3倍,右側模型QPS也更高。因此同樣資源情況下,使用右側上線ROI更高。
Co-Train 和兩階段訓練(類似於百度CTR3.0)效果對比:Co-Train模式下右側模型和左側模型的差距縮小明顯, student的能力更接近teacher。
愛奇藝提出了一種新的在線知識蒸餾方法,不同於以往的知識蒸餾進行兩階段訓練,而是進行聯合訓練,讓teacher網絡在訓練過程中指導student網絡的訓練,與此同時做到不受student網絡的影響。目前,雙DNN排序模型的方法在短視頻信息流和圖文信息流場景實現落地,這也佐證了這一方法的優越性。未來會繼續推動落地一些前沿的排序模型研究成果,讓teacher網絡變的更寬更深,進一步提升排序模型的精度。