天天看點

深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型

随着業務的不斷發展,粗排模型在整個系統鍊路中變得越來越重要,能夠顯著提升線上效果。本文是對粗排模型優化的階段性總結。

背景

在搜尋、推薦、廣告等大規模資訊檢索場景中,通常會将檢索分為召回、粗排、精排三個階段,每個階段處理的資料量和目标各有不同。召回階段,一般由多路召回構成,需要從海量候選集中盡可能全地找到與目前請求相關的集合;精排階段,由結構複雜的模型構成,需要在資料規模相對小的集合上做精細化打分,給出最終展示給使用者的排序清單。對于粗排階段來說,在整個系統鍊路中處于中間環節,處理的資料量與模型複雜度也介于召回與精排之間。在業務規模不大時,粗排階段往往會被弱化,比如使用召回階段的分數來對召回集合做截斷,就是一種最簡化的粗排。随着業務的不斷發展,粗排階段會變得越來越重要,如何更好地融合多路召回的結果、如何為精排提供更有效的集合,是粗排模型需要解決的問題。

我們的場景是一個典型的多階段檢索系統。召回階段,由多路召回構成,每個query需要從數億量級的商品池中,召回10萬量級的候選集;粗排階段,由離線模型分或雙塔内積模型構成,需要從10萬量級的召回集合中篩選出1萬量級提供給精排;精排階段,由多層模型構成,結合業務規則,在粗排集合中進一步篩選出每頁10個商品提供給使用者。相對于海量的召回集合來說,最終隻有少量商品有曝光機會,得到使用者的點選、成交回報。

深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型

淘寶應用場景

我們在優化過程中發現單獨優化粗排模型,不考慮與精排模型或政策的關聯,不一定能達到全局GMV最優的目标。在現階段我們認為,粗排保持與精排目标的一緻性,是提升線上效果的有效政策。粗排的打分量在10萬量級,精排的打分量在1萬量級,如果将精排模型直接下沉到粗排,會有比較大的性能問題。在嚴苛的性能要求下,粗排階段一般會采用雙塔内積模型,對海量item提前計算好item塔,對一個query隻計算一次user+query塔,通過向量内積計算出排序分數,能顯著提高性能,這也是粗排base模型。由于精排是由多層模型構成,也是在不斷優化中的,就需要有方法能及時吸收到精排的知識,同時盡量把粗排模型優化與精排模型優化解耦開。由此,我們提出了基于精排模型的蒸餾校準模型,能夠以比較小的成本達到這個目的。

在粗排階段,模型預估出ctr和cvr後,如何組合ctr、cvr、price也是影響效果的關鍵因素。通常來說,會對ctr和cvr分别校準,再将ctr*cvr與price組合得到最終排序分數。在這裡能發現,更本質的需求是預估校準後的ctcvr。我們基于蒸餾校準模型,引入了全空間模組化的思路,并在現有的子空間模組化的架構下進行了改進,以全空間-子空間聯合模組化的方式直接預估出蒸餾校準後的ctcvr。在新模型中,如何平衡ctr任務與ctcvr任務是一個需要解決的問題,我們采用了沖突梯度投影算法,并結合應用場景,做了适配與改進。

在我們的場景中,GMV是核心的線上名額,通過粗排模型的疊代,取得了整桶GMV提升1%的線上效果。

蒸餾校準模型

接下來介紹粗排模型的疊代,首先從蒸餾校準模型開始。設計這個模型的出發點有兩個,一是吸收精排的知識,同時盡量把粗排模型優化與精排模型優化解耦開,二是與精排分數對齊,模型在訓練過程中進行校準。

▐  蒸餾

通常來說,知識蒸餾[1, 2]在多分類情況下更常見,student模型可以從一個更有經驗的teacher模型裡學習到關于多分類的知識,比如label是手寫數字“2”時,teacher模型對手寫數字“7”的預測機率也會相對高一些,這是在label之外的資訊。對于二分類來說,這種知識同樣存在,比如label是1時,teacher模型的預測機率是0.6還是0.9,包含了不同的資訊量。[3]指出,對于二分類,知識蒸餾的效果相當于用teacher模型的預測機率來做樣本權重,可以加快收斂速度,達到更好的局部最優解,并提高泛化性。

▐  校準

精排是由多層模型構成的,最後包含了校準模型,目的是将預測機率的範圍對齊到真實機率,以便将ctr和cvr相乘。預測機率之是以會偏離真實機率,有兩方面原因,一是參數量巨大的神經網絡會做出過于自信的預測,[4, 5]指出知識蒸餾在這種情況下會起到校準的作用;二是訓練過程中,對負樣本有采樣,在采樣資料上訓練模型,預測機率會顯著偏離真實分布。對于這種情況,工業界一般采用機率變換[6]和保序回歸[7]兩種事後的校準方式。我們主要考慮第二種情況,為了對齊精排分數和更好的準度,采用了訓練過程中的校準。

▐  模型架構

具體看一下模型架構:

深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型

  • 訓練方式

采用ctr和cvr任務分别用獨立資料源交替訓練的方式,也就是對ctr和cvr在兩個空間上分别模組化,其中ctr的資料源是曝光樣本,點選是正樣本,未點選的負樣本有采樣;cvr的資料源是點選樣本,成交是正樣本。

  • 模型結構

考慮到粗排場景的高性能要求,采用了雙塔内積。ctr和cvr任務各自有獨立的user net,共享item net,共享雙塔底層的embedding層。user net由self attention和user+query attention構成的attention net來提取特征。在雙塔内積之外,還有包含user、query、display特征的bias net來提高預估的準度。由于item net與user、query無關,可以提前計算好,模型線上上提供服務時,隻需要對一個query計算一次user net和bias net,通過向量内積和加法計算出排序分數,能顯著提高性能。

  • 蒸餾
  1. teacher模型:采用已經訓練好的精排多層模型,指導粗排student模型的學習。精排模型的打分量比粗排模型小1~2個量級,相比粗排模型,精排模型包含了更多的特征以及在雙塔内積架構下無法使用的user-item交叉特征和多層mlp。
  2. 反函數恢複logits:蒸餾需要擷取精排網絡的logits,但考慮到精排多層的異構情況,無法直接得到logits,我們采用sigmoid函數的反函數來從預測機率中恢複:
    深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型
    。需要注意的是,sigmoid函數的激活範圍主要集中在[-10,10],對應到它的反函數就需要限定機率的範圍,否則訓練過程中會出現Nan。這個設計可以将粗排模型優化與精排模型優化解耦開,精排模型更新後,粗排模型仍然可以從中獲得收益。
    深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型
  3. loss:得到從精排中恢複的logits後,記為rlogits,結合粗排網絡裡的logits,可以計算loss:
深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型

其中,

深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型

表示交叉熵,

深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型

是蒸餾溫度

  1. 梯度平衡:用loss對logits求導,能發現loss中的第二項蒸餾loss的梯度與第一項相比,相差一個溫度超參數T,如果不對蒸餾loss權重的話,梯度是失衡的,會影響收斂速度。這裡我們對蒸餾loss乘以溫度T,而不是[1, 3]中建議的T2,因為當T較大時,T2會過于增大蒸餾loss的梯度。
    深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型
  2. 精排分數置信度:分析資料時發現,精排的分數處于不同區間範圍時,對應區間上資料的auc會有所不同,特别在分數最低的一部分資料上auc最低,我們認為在這部分資料上精排的置信度比較低,這個置信度會反映到loss上進行權重調節。
  • 校準
  1. 樣本權重:假設ctr任務中負樣本的采樣率為r,在訓練過程中可以對正負樣本設定不同的權重,來将預測機率的分布恢複到采樣前。隻需要注意到采樣前後似然項不變,就能推導出正負樣本權重設定為r:1時,預測機率可以被校準回真實分布。在loss中,
    深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型
    依賴精排校準後的機率,為了保持一緻性,我們需要在訓練過程中就進行校準,而不是事後校準。訓練過程中的校準會通過loss驅動模型參數更新,比事後的無參數校準具有一定優勢。
    深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型
    進一步,可以推導出與[6]中的事後校準一緻的公式:
    深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型
  2. 期望校準誤差ECE:在訓練過程中,我們采用[5]中的期望校準誤差ECE來監控模型的校準程度。ECE的計算方式是:按照預測機率将樣本分為M個區間,在每個區間上計算預測機率均值與真實機率的內插補點,将內插補點在M個區間上按照每個區間的樣本數權重平均。因為一個batch内的樣本數有限,為保證真實機率的置信度,這個名額需要像auc一樣跨batch累計,并定期清空。
深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型

▐  實驗

我們以熱啟動的方式,用一周資料訓練蒸餾校準模型。用來對比的base模型是線上上長期增量訓練多年的雙塔内積模型。

在調參過程中,我們發現對梯度平衡、精排分數置信度以及蒸餾溫度的調節,都會提高收斂速度。能觀察到溫度越高,效果越好。經過多組實驗,通過熱啟動的方式,隻用一周資料訓練,就得到了一個ctr/cvr auc比base模型提升0.2%的模型。

除auc的提升外,能觀察到與base模型相比,期望校準誤差ECE從13%下降到了0.1%。校準程度也可以通過Reliability Diagrams更加直覺地看到:

深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型

畫Reliability Diagrams時,需要先按照預測機率将資料劃分區間,為了使每個區間上真實機率的置信度更高,這裡采用等頻的劃分方式,然後在每個區間上統計預測機率均值和真實機率。能看到校準後的曲線接近于y=x,意味着,在統計意義上預測機率接近真實機率。

全空間-子空間聯合模組化

蒸餾校準模型的訓練方式是,對ctr和cvr任務分别用pv->click和click->pay兩個獨立資料源交替訓練,也就是在兩個空間上分别模組化,其中click->pay是全空間pv->pay的子空間。對于一條pv樣本來說,訓練時模型沒有同時對它打出ctr和cvr的分數,但這卻是線上應用時的場景,也就是需要同時打出這兩個分數再相乘。在這裡,離線訓練與線上預測存在bias。進一步,線上應用的本質是需要對pCTCVR做預估和校準。我們可以把全空間模組化[8, 9]的思路引入到目前的子空間模組化中,實作聯合優化,直接對ctcvr任務模組化。

▐  引入全空間模組化

對ESMM模型[8]來說,cvr任務是主任務,ctr和ctcvr任務是輔任務。通過pCTCVR=pCTR*pCVR的機率關系,在pv->click和pv->pay全空間上對ctr和ctcvr任務模組化來得到pCVR。直接應用ESMM模型來模組化pCTCVR會存在問題:pCTCVR由兩個機率的乘積構成,它的準确性依賴pCTR和pCVR這兩個機率,其中pCVR由原來的學習目标轉變為新目标的中間環節,另外pv->pay全空間上的label也更稀疏。如何降低ctcvr任務的學習難度,是我們考慮的主要問題。我們從兩方面來解決這個問題,一是利用上click->pay子空間上的label對pCVR進行學習,提高pCVR的準确性,二是對ctcvr任務引入蒸餾校準,增加除pv->pay的label之外的資訊。由此,我們提出了全空間-子空間聯合優化的蒸餾校準模型。

因為我們的模型本身是在pv->click和click->pay兩個空間上學習的,可以用click->pay這個子空間上訓練出來的cvr參數在pv樣本上做預測,得到pCVR,進而得到全空間上的pCTCVR=pCTR*pCVR。同時,增加pv->pay全空間上的ctcvr學習任務,也可以更新click->pay子空間上的cvr參數。我們設計了如下的模型架構:

深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型

其中,ctr net和cvr net是蒸餾校準模型中的網絡結構,各自有獨立的資料源,共享embedding層和item塔。cvr shadow net不參與click->pay子空間上的訓練過程,隻是将cvr net的參數全部同步過來,在ctr net的同一條輸入樣本上預測出pCVR。在ctr net的訓練過程中,包含ctr loss和ctcvr loss,ctcvr loss會通過cvr shadow net來更新cvr net的參數。在模型訓練過程中,cvr shadow net起到了在全空間與子空間中互動資訊的作用。

▐  對ctcvr任務蒸餾校準

對pCTCVR應用sigmoid函數的反函數後,可以得到ctcvr logits。對于精排模型,同樣将反函數應用到ctr和cvr分數的乘積,也可以得到相應的logits。這樣一來,我們能夠在原本稀疏的pv->pay的label之外通過蒸餾增加新的資訊,來降低ctcvr任務的學習難度。

接下來,我們對ctcvr任務進行校準。假設pv->click的負樣本采樣率為r,click->pay沒有負樣本采樣,那麼pv->pay的負樣本采樣率可以推導出來:

深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型

圖中的x1、x2、x3互不相交,x1+x2+x3是采樣後的整體pv資料,x3是ctcvr的正樣本,x1+x2是采樣後的ctcvr的負樣本。是以,對ctcvr的負樣本來說,采樣率為:

深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型

到這裡,我們就可以用對ctr/cvr任務的類似處理方式,完成對ctcvr任務的蒸餾校準。

我們以熱啟動的方式,用一周資料訓練全空間-子空間聯合優化模型,與蒸餾校準模型做對比。在我們的應用場景中,需要輸出ctcvr,是以将ctcvr任務作為主任務,在ctr net訓練時,将ctcvr loss的權重設定得比ctr loss更大。

通過手動調節多組不同的權重,我們得到了ctcvr auc提升0.14%,cvr auc提升0.37%的模型。能看到,全空間模組化及蒸餾的引入,對ctcvr主任務是有益的,同時通過ctcvr loss驅動子空間上cvr參數的更新,對cvr任務也是有益的。

多任務平衡

我們觀察到,對ctr loss和ctcvr loss設定不同的權重,會得到在名額上有不同側重的模型。直覺上,手動設定權重除了調參成本比較高外,沒有考慮到訓練過程中不同任務的變化,對所有疊代都不加區分,存在改進的空間。在[10]中,通過對不同任務的不确定性模組化來動态調節多任務權重。在[11, 12]中,通過動态調節權重,希望不同任務用相似的速度來學習,[11]在每次疊代中都需要計算額外的梯度,計算複雜度高,[12]則不需要,計算成本低。在[13, 14]中,采用了求pareto最優解的方式,找到多任務的平衡。

▐  沖突梯度平衡

我們參考了[15],先對多任務的梯度判定是否沖突,再将沖突梯度向另一個梯度的正交方向做投影,能夠使多任務在避免沖突的情況下學習。相對來說,解決問題的方法更直覺,也可以與其他方法疊加。

深度粗排模型的GMV優化實踐:基于全空間-子空間聯合模組化的蒸餾校準模型

▐  對PCGrad的适配與改進

在實作過程中,我們對算法做了一些針對應用場景的适配與改進:

  1. 在我們的模型中,embedding層非常巨大,個别特征的hash bucket size在億級别,梯度更新時會對這個大型矩陣做局部處理。在PCGrad計算兩個任務的梯度向量的内積時,需要單獨對embedding矩陣的梯度做處理,否則會導緻worker oom。
  2. 兩個不沖突的高維梯度向量,在低維投影子空間裡,可能是沖突的。比如,(1,1,1)和(-2,1,2)這兩個向量的内積大于0,方向不沖突,但對于它們的子向量(1,1)和(-2,1)來說内積小于0,方向是沖突的。如果隻看高維梯度向量,可能會錯過對部分梯度的處理。是以,我們将高維向量切分成了多組低維子向量再判定是否沖突,在基本沒有增加計算時間的情況下,提升了效果,同時降低了worker oom的可能性。
  3. 為了将模型朝着優化ctcvr的方向引導,我們也可以對ctcvr loss增權重重,讓PCGrad算法來解決整體偏向ctcvr任務帶來的梯度沖突。

▐  實驗

我們仍然以熱啟動的方式,用一周資料訓練全空間-子空間聯合優化模型,用PCGrad代替手工調節權重,與蒸餾校準模型做對比。由于将高維梯度向量切分為子向量對比不切分,能夠将ctcvr auc提升0.1%,我們将切分作為預設設定。

PCGrad相比于手工調節權重得到的最優模型,ctcvr auc提升0.19%。為了将任務進一步向ctcvr引導,我們嘗試了兩種政策,第一種是隻對embedding層變量提高ctcvr loss的權重,第二種是對全部變量提高ctcvr loss的權重。相比之下,第一種政策效果更好,對比不提高權重的模型,ctcvr auc提升0.15%。總的來說,經過PCGrad優化的全空間-子空間聯合模型,相比于原始的蒸餾校準模型,ctcvr auc提升0.48%,cvr auc提升0.38%。

總結

在我們的場景中,随着業務的不斷發展,粗排模型在整個系統鍊路中變得越來越重要。考慮到線上嚴苛的性能要求,我們在保持雙塔内積架構的前提下,提出了蒸餾校準模型,從不斷更新的精排多層模型中吸收知識。針對GMV優化的目标,我們在蒸餾校準模型的基礎上,提出了全空間-子空間聯合模組化、使用梯度投影算法優化的新模型,在離線、線上都取得了效果的顯著提升。

我們對粗排模型的探索仍在進行中,如何更好地與精排模型進行關聯、如何超越精排模型的局限、如何平衡性能與效果,都是值得進一步思考的問題。

參考文獻

[1] Hinton, Geoffrey, Oriol Vinyals, and Jeff Dean. "Distilling the knowledge in a neural network." arXiv preprint arXiv:1503.02531 (2015).[2] Tang, Jiaxi, and Ke Wang. "Ranking distillation: Learning compact ranking models with high performance for recommender system." Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018.[3] Tang, Jiaxi, et al. "Understanding and Improving Knowledge Distillation." arXiv preprint arXiv:2002.03532 (2020).[4] Müller, Rafael, Simon Kornblith, and Geoffrey E. Hinton. "When does label smoothing help?." Advances in Neural Information Processing Systems. 2019.[5] Guo, Chuan, et al. "On calibration of modern neural networks." arXiv preprint arXiv:1706.04599 (2017).[6] He, Xinran, et al. "Practical lessons from predicting clicks on ads at facebook." Proceedings of the Eighth International Workshop on Data Mining for Online Advertising. 2014.[7] Niculescu-Mizil, Alexandru, and Rich Caruana. "Predicting good probabilities with supervised learning." Proceedings of the 22nd international conference on Machine learning. 2005.[8] Ma, Xiao, et al. "Entire space multi-task model: An effective approach for estimating post-click conversion rate." The 41st International ACM SIGIR Conference on Research & Development in Information Retrieval. 2018.[9] Wen, Hong, et al. "Entire Space Multi-Task Modeling via Post-Click Behavior Decomposition for Conversion Rate Prediction." Proceedings of the 43rd International ACM SIGIR Conference on Research and Development in Information Retrieval. 2020.[10] Kendall, Alex, Yarin Gal, and Roberto Cipolla. "Multi-task learning using uncertainty to weigh losses for scene geometry and semantics." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.[11] Chen, Zhao, et al. "Gradnorm: Gradient normalization for adaptive loss balancing in deep multitask networks." International Conference on Machine Learning. PMLR, 2018.[12] Liu, Shikun, Edward Johns, and Andrew J. Davison. "End-to-end multi-task learning with attention." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019.[13] Sener, Ozan, and Vladlen Koltun. "Multi-task learning as multi-objective optimization." Advances in Neural Information Processing Systems. 2018.[14] Lin, Xiao, et al. "A pareto-efficient algorithm for multiple objective optimization in e-commerce recommendation." Proceedings of the 13th ACM Conference on Recommender Systems. 2019.[15] Yu, Tianhe, et al. "Gradient surgery for multi-task learning." arXiv preprint arXiv:2001.06782 (2020).

團隊介紹

淘寶主搜召回團隊:團隊負責主搜鍊路中的召回、粗排環節,目前的主要技術方向為基于全空間樣本的多目标個性化向量召回、基于大規模預訓練的多模态召回、基于對比學習的相似Query語義改寫以及粗排模型等。

繼續閱讀