增量導出_[華為]一種實用的增量式深度CTR模型訓練方法

f584cbe463d8335fced64f39e1fd3056.png

今天給大家介紹一篇有關深度CTR模型增量訓練的文章,來自華為諾亞方舟實驗室。

1、背景

深度CTR模型需要大量的數據進行訓練,同時需要不斷的更新以適應最新的數據分布。如果模型沒有及時更新,則有可能帶來線上效果的衰減,如下圖,當模型5天沒有更新時,線上AUC會有0.66%的下降,這會帶來巨大的收入損失,同時對用戶體驗也會造成一定影響。

fb919079b365068fb55cb3e2ede7a1d1.png

為了保證線上模型的有效性,通常需要對模型進行天級別/小時級別甚至是分鐘級別的更新。而本文將重點放在天級別更新上。

模型的天級別更新比較常用的方式是使用規定時間窗口的數據對模型進行重新訓練,如下圖,模型0使用第1天到第10天的數據進行訓練,模型1使用第2天到第11天的數據進行訓練,依次類推:

d20c3d5250eb86e888096965b21f954a.png

上述重新訓練模型的做法,其缺點是耗時比較高,更新可能不及時,因此可以考慮增量訓練的方式,如下圖,模型0同樣使用第1天到第10天的數據,模型1在模型0的基礎上,加入第11天的數據進行更新,依次類推:

aec75dd6ba747c3832ff9585184efe97.png

本文重點介紹華為如何對深度CTR模型進行增量訓練,我們在下一節中一起學習一下。

2、增量訓練框架介紹

華為增量訓練框架如下圖所示:

1d217d9c150eb51831e7357a51836e25.png

如上圖,該框架主要包含三個模塊:數據模塊、特征模塊、模型模塊,接下來對這三個模塊依次進行介紹。

2.1 數據模塊

數據模塊主要對數據進行存儲和混合。如上圖,在第t天更新模型時,從t-1天的數據池中選擇部分數據,同時混合第t天新的數據,作為第t天模型更新所使用的數據。論文中提到,應該選擇t-1天的數據池中哪部分的數據,這塊仍然處于研究中,期待后續的研究進展。

2.2 特征模塊

特征模塊主要對特征進行處理,這塊重點講解對于離散型特征的增量更新。

對于離散變量來說,許多取值出現的次數非常少,通常會設定一個出現次數的閾值,當該取值出現的次數高于閾值時,會計作一個單獨的類別,而出現次數低于閾值的所有取值,會被統一當作others類別處理。當得到所有的類別之后,會將每一個類別映射到一個特定的id,最后轉換成對應的embedding。

類別映射到id的方法有許多種,文中提到了自增映射(auto-increment)和哈希映射( hash-coding)。論文使用的是自增映射,這里也簡單介紹下哈希映射(論文沒有提及,個人經驗,歡迎各位糾錯)。對哈希映射來說,首先要確定一個總的哈希空間大小,如2^10,然后通過某種哈希方式(如murmur哈希),將對應的類別轉換為對應的hash值,作為該類別的id值。對哈希映射來說,通常設定的hash空間的會比實際的類別數量大很多,以盡可能避免沖突的出現。使用Hash這種方式的好處個人認為主要是新出現的特征類別,不需要改變embedding向量的個數,embedding向量的個數和hash空間的大小相同;但hash空間的大小往往比實際的類別數量,會導致導出的模型比較大,同時需要采用合適的hash算法,否則會導致沖突的出現,降低模型的準確度。

而本文使用的自增映射方式,當新類別出現或者Others類別中某種取值出現的次數超過閾值時,則需要進行特殊處理。如上圖所示,t-1天的模型,只有Feat A和Feat B出現次數超過了閾值,因此只需要將Feat A和Feat B轉換為對應的id,分別為1和2(上圖有點不太嚴謹了,應該還有Others類別,不過不影響理解)。此時訓練的模型,embedding的大小為2* K(k為每個embedding向量的長度)。當收集了第t天的數據后,Feat C出現次數也超過了閾值,因此采用自增的方式,將Feat C轉換為對應的自增id,即3。此時第t天的模型不能繼續使用第t-1天的模型進行繼續訓練,而必須重新進行embedding的初始化,大小為3 * K,其中前兩行使用t-1天模型訓練后的embedding值進行初始化,第三行則進行隨機初始化。

下面是對特征模塊處理過程的總結,其中Eexist表示t-1天模型中存在的id對應的embedding,Enew表示第t天模型新增的embedding:

17dcacffd10d1c922c8f085b3bb441ee.png

2.3 模型模塊

對于模型的更新,這里介紹兩種方式,Fine-tune和Knowledge distillation。

2.3.1 Fine-tune

對于Fine-tune方式,除Embedding從t-1天模型進行warm-start外,其余的網絡參數也從t-1天模型進行拷貝。然后使用數據模塊混合后的訓練數據進行參數更新。這里還使用了一些小的trick來實現更好的效果,比如對于Eexist部分的embedding,使用較小的學習率,而對于Enew部分的embedding,則使用一個相對更大的學習率。模型使用交叉熵損失進行更新。

2.3.2 Knowledge distillation

為了增強模型從歷史數據中學到的知識,避免出現不同天的模型預測差距過大的情況,在使用Fine-tune方式所有特性的基礎上,還增加了teather網絡,來輔助模型的訓練。

此時模型的損失變為:

5e8a491e0c1d465e7de5ca9e42e09dee.png

首先提一下,這個地方我感覺符號上還是有些值得商榷的地方,即student net的預測值,在和真實值(hard label)計算交叉熵損失,以及和teacher net的預測值(soft label,Ysoft)計算交叉熵損失時,二者的計算是存在一定的差別的(區別在于是否把log logits即Z除以temperature τ),因此符號上應該也做區別處理更加合適。

上面損失的三項分別是student net的預測值和真實值計算的交叉熵損失,student net的soft預測值和teacher net的soft預測值計算的交叉熵損失,以及正則項。

簡單解釋下損失中temperature τ的含義,知識蒸餾這種方式,我們希望得到的結果是student net和teacher net的輸出盡可能接近,假設不對logits除以temperature,那么teacher net輸出的類別概率可能會比較懸殊,比如0.99和0.01,那么0.01這一類對于損失的貢獻是非常小的,解決方式就是在計算損失函數時放大其他類的概率值所對應的損失值。假設teacher net的log logits = 3,那么softmax之后兩類的概率分別為0.95和0.05,再假設temperature=10,那么softmax之后兩類的概率分別為0.57和0.43,這樣兩種類別對于損失的貢獻更為接近了。這樣更加有助于student net向teacher net的方向優化。

關于teacher net的選擇,文中給出了兩種方式:

KD-batch:使用一定時間窗口內全量數據訓練的模型KD-self:t-1天的模型

后續會給出這兩種方式的實驗對比結果,好了,接下來是對模型模塊的總結:

4e0fffc48930679a0958acb42b973027.png

3、實驗結果

好了,最后來看一下論文的實驗結果:

首先,使用論文提到的增量訓練的方式,表現能否超過本文一開始提到的使用固定長度的時間窗口重新訓練模型的方式呢?結果如下表所示,其中Batch-0表示使用最新的時間窗口訓練的模型,Batch-1表示使用延遲一天的時間窗口訓練的模型,依次類推,可以看到增量訓練方式得到了一定程度的AUC的提升,以及模型更新耗時的大幅縮短。

76d8329e357b25bb89b6cfc687309df7.png

同時,從上表可以看到,在模型模塊使用或Fine-tune或者KD的方式,在Criteo數據集上表現接近,但在華為App上的數據來看,KD的方式表現更好。

最后,論文還驗證了特征模塊的作用,如果不對新加入的特征列別進行處理的話,會帶來效果的衰減,隨著天數的增加,這種衰減會越來越明顯。

1051eec2234b5b5822724f7387e2994e.png

38469b54ccbbfbd74760135b0aa27829.png

好了,本文就介紹到這里,又是一篇可以學到很多工業經驗的文章,值得仔細品讀!

推薦閱讀

  • 計算廣告OCPC算法實踐(一) 智能出價PID控制中的偏差與響應函數設計
  • 分享我收藏的100篇精選算法技術文章
  • Embedding 技術在民宿推薦中的應用
  • 分類模型與排序模型在推薦系統中的異同分析

想了解更多關于推薦系統的內容,歡迎掃碼關注公眾號淺夢的學習筆記。回復加群可以加入我們的交流群一起學習!c6fa37b1c50346c3e7aef36c8403ecb8.png

碼字很辛苦,有收獲的話就請分享點贊在看三連吧?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453087.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453087.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453087.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

win7如何添加終端服務器,Windows7系統超級終端的添加方法 win7如何添加超級終端...

有用戶在剛升級到Windows7系統以后反映,在XP 操作系統里,超級終端是很好用的,但是卻不知道為什么,升級為Windows7系統后卻找不到超級終端在哪,出現這樣的情況讓用戶非常的煩惱,其實找不到超級終端&#xff…

騰訊這家公司的核心競爭力是什么?為什么?

Andy Pan ,騰訊無線國際業務產品總監, 騰訊國際業務部... 我決定在國外出差的最后一晚晚點休息,在酒店靜靜的認真的回答這個問題。我盡量客觀的負責的回答,不憤青,不炫耀,不攻擊,用樸實的語言。只代表我個人的思考&…

h.323 服務器 作用,Cisco CallManager服務器冗余的H.323 網關撥號對端配置

語音、視頻和集成數據 (AVVID) 設計的體系結構一般建議您具有主 Cisco CallManager 服務器和輔助 Cisco CallManager 服務器以實現冗余。如果主 Cisco CallManager 服務器發生故障,則輔助 Cisco CallManager 服務器將接管,并且 IP 電話將重定向到此服務器…

靜態優先權和動態優先權

靜態優先級:在創建進程時確定的,且在進程的整個運行期間保持不變動態優先級:在創建進程時所賦予的優先權,是可以隨進程的推進或隨其等待時間的增加而改變的,以便獲得更好的調度性能。確定靜態優先權的依據有如下三個方…

xmind可以畫流程圖嗎_新娘妝可以自己畫嗎?臨夏化妝學校告訴你答案!

對于很多女性來說,一生中最重要的時候無疑是新婚的那一天,古時候的閨閣女子,鳳披霞冠,八臺大轎,攜手自己的如意郎君相伴一生,現代女子,潔白的婚紗,手握鮮花,一枚戒指&…

2.如何對待加班

感覺深圳尤其是IT行業,加班確實很普遍。我覺得主要看是為什么加班吧,是公司強制要求,還是員工開發效率低,還是加班有額外的收入,還是想在這個期間學習,自我提升。公司為什么會形成這個氛圍,是自…

計算機一級發郵件發送多個抄送,計算機一級考試IE題和收發郵件模擬題.docx

文檔介紹:某模擬網站的主頁地址是:HTTP://LOCALHOST:65531/ExamWeb/INDEX.HTM,打開此主頁,瀏覽"航空知識"頁面,查找"運十運輸機"的頁面內容,并將它以文本文件的格式保存到考生目錄下,命名為"y10ysj.txt"。IE題①通過"答題"…

git merge與rebase

參考這篇文章 Git 之 merge 與 rebase 的區別 文章2 另外,使 rebase出現沖突后,先修改沖突,然后git add 某文件(我使用add .經常有問題),然后git rebase --continue,持續到rebase結束&#xf…

wget 地址 連接超時_HttoPool連接池 和Hystrix 服務容錯機制

學習主題:httpPool&Hystrix學習目標:對應視頻: http://www.itbaizhan.cn/course/id/85.html對應文檔:無對應作業1. 編寫支持Gzip壓縮案例(1) 修改Consumer的全局配置文件,添加Gzip相關配置。spring.application.nameeureka-consumer-http…

JQuery 加載 CSS、JS 文件

JS 方式加載 CSS、JS 文件: //加載 css 文件 function includeCss(filename) {var head document.getElementsByTagName(head)[0];var link document.createElement(link);link.href filename;link.rel stylesheet;link.type text/css;head.appendChild(link) …

關閉網頁如何接收服務器消息,WebSocket服務端發消息給客戶端,瀏覽器收到消息就關閉了...

引用 2 樓 fly_dragon_fly 的回復:收到的消息是什么0000 00 0b ab 7a 86 83 18 f4 6a 36 60 a2 08 00 45 00 ...z....j6...E.0010 00 b9 49 d3 40 00 40 06 6b aa c0 a8 01 79 c0 a8 ..I...k....y..0020 01 f8 08 03 71 88 a4 d5 52 dc ce c1 f6 89 50 18 ....q...R..…

街舞中的rolling機器人_REMEMBER街舞培訓中心2020年元旦匯演

二零二零 元旦匯演REMEMBER2020年1月1日,Remember街舞培訓中心在愛琴海購物公園進行了兩個小時的匯報表演,Remember的學員們貢獻了非常精彩的表演。在過去的2019年,我們一路探索、一路艱辛、一路欣喜、一路收獲,在這里感謝所有老…

shell基礎(上)

2019獨角獸企業重金招聘Python工程師標準>>> 一 shell介紹 shell 是一個命令解釋器。本質上是用戶與計算機之間的交互。 用戶把指令告訴shell,然后shell再傳輸給系統內核,接著內核再去支配計算機硬件去執行各種操作。 每個用戶都可以有自己特…

webRTC實戰總結

前言 前段時間一直在忙一個基于WebRTC的PC和移動端雙向視頻的項目。第一次接觸webRTC,難免遇到了許多問題,比如:webRTC移動端兼容性檢測,如何配置MediaStreamConstraints, 信令(iceCandidate, sessionDescription)傳輸…

程序員眼中的2007:尋找軟件開發利器

軟件開發生命周期包括需求分析、設計、開發、測試、交付部署等各個階段,以及貫穿在整個開發過程的軟件開發項目管理環節,2006年,在每一個階段都出現了令人眼花繚亂的技術與應用,同時這些技術還將進一步影響2007年的發展&#xff0…

谷歌虛擬服務器申請,【美國podserver.info】免費300M虛擬主機空間申請使用教程

【美國podserver.info】注冊使用教程:1、打開申請地址,點擊下圖位置中的“Sign Up”開始注冊。2、點擊“Sign Up”開始注冊后,進入到注冊檢查頁面,我們按下圖選擇“I’m a human.”然后點擊“Submit”進入到注冊信息填寫頁面。3、…

物理層協議有哪四大特性

1.機械特性 指明接口所用接線器的形狀和尺寸、引線數目和排列、固定和鎖定裝置等等。2.電氣特性 指明在接口電纜的各條線上出現的電壓的范圍。3.功能特性 指明某條線上出現的某一電平的電壓表示何種意義。4.過程特性 指明對于不同功能的各種可能事件的出現順序。