谷歌在KDD 2023發(fā)表了一篇工作,探索了推薦系統(tǒng)ranking模型的訓(xùn)練穩(wěn)定性問(wèn)題,分析了造成訓(xùn)練穩(wěn)定性存在問(wèn)題的潛在原因,以及現(xiàn)有的一些提升模型穩(wěn)定性方法的不足,并提出了一種新的梯度裁剪方式,提升了ranking模型的訓(xùn)練穩(wěn)定性。下面給大家詳細(xì)介紹一下這篇文章。
本文以Youtube中的ranking模型為例,進(jìn)行推薦系統(tǒng)ranking模型訓(xùn)練穩(wěn)定性的分析。整體模型如下圖所示,包括特征輸入層、多任務(wù)共享層、每個(gè)任務(wù)私有參數(shù)層,整體包括CTR預(yù)估、CVR預(yù)估等多個(gè)任務(wù)聯(lián)合訓(xùn)練。
圖片
什么樣的訓(xùn)練過(guò)程是穩(wěn)定性比較差的呢?如下圖所示,model-a的loss和auc曲線被文中稱為micro-diverged,即訓(xùn)練過(guò)程中出現(xiàn)loss的突增,伴隨著auc下降,但是繼續(xù)訓(xùn)練模型會(huì)恢復(fù)回來(lái),最終不會(huì)影響模型效果。model-b的loss和auc曲線被文中稱為fully-diverged,即模型訓(xùn)練過(guò)程中出現(xiàn)大幅度的loss增加和auc下降,并且后面也不會(huì)再恢復(fù)了,對(duì)模型的性能影響很大。本文更關(guān)注的是后面fully-diverged這種情況。
圖片
為什么推薦系統(tǒng)中的模型,存在這樣的訓(xùn)練穩(wěn)定性問(wèn)題呢?訓(xùn)練過(guò)程不穩(wěn)定,本質(zhì)原因在于模型在優(yōu)化到一個(gè)比較陡峭的超平面時(shí)使用了一個(gè)較大的學(xué)習(xí)率,導(dǎo)致模型參數(shù)的更新出現(xiàn)嚴(yán)重問(wèn)題,文中原話是“step size being too large when loss curvature is steep”。在推薦系統(tǒng)的ranking模型中,這種現(xiàn)象更為常見(jiàn),主要由于以下幾個(gè)原因:
多任務(wù)學(xué)習(xí):推薦系統(tǒng)中的ranking模型經(jīng)常采用多任務(wù)學(xué)習(xí)的方式,這導(dǎo)致當(dāng)一個(gè)任務(wù)的梯度出現(xiàn)問(wèn)題時(shí),對(duì)共享參數(shù)層也會(huì)造成很大影響,增加了模型訓(xùn)練不穩(wěn)定的可能性;
Sequential training:ranking模型經(jīng)常需要進(jìn)行ODL或者增量更新,以適應(yīng)線上數(shù)據(jù)分布的實(shí)時(shí)變化。這就導(dǎo)致模型的訓(xùn)練數(shù)據(jù)一直是動(dòng)態(tài)變化的,模型需要不斷擬合變化的數(shù)據(jù)分布,給模型的收斂帶來(lái)更大的不確定因素;
模型尺寸和輸入特征:相比其他領(lǐng)域的模型,ranking模型需要更多類型的輸入特征,并且目前的趨勢(shì)是不斷增大模型尺寸,這些都可能導(dǎo)致模型的優(yōu)化超平面變得更加陡峭導(dǎo)致難以收斂。
下圖展示了在相同的學(xué)習(xí)率下,loss平面的陡峭程度對(duì)于梯度更新的影響,越陡峭的超平面,以一個(gè)不適配(較大)的學(xué)習(xí)率更新會(huì)導(dǎo)致loss震蕩難以收斂。
圖片
為了解決這類訓(xùn)練不穩(wěn)定問(wèn)題,業(yè)內(nèi)已經(jīng)有一些相應(yīng)的解決方案。例如,針對(duì)上述Sequential training需要適配數(shù)據(jù)分布而帶來(lái)的不收斂問(wèn)題,可以采用滑動(dòng)時(shí)間窗口的方式生成訓(xùn)練樣本。每次讓模型使用滑動(dòng)窗口內(nèi)的數(shù)據(jù)進(jìn)行訓(xùn)練,通過(guò)增大滑動(dòng)窗口的尺寸,可以讓每輪訓(xùn)練的模型見(jiàn)到的數(shù)據(jù)分布差異沒(méi)那么大,平滑的更新數(shù)據(jù)分布,緩解模型需要適配數(shù)據(jù)分布劇烈變化的問(wèn)題。
不過(guò),從本質(zhì)原因“step size being too large when loss curvature is steep”來(lái)講,一個(gè)治標(biāo)治本的方法是直接優(yōu)化梯度更新的過(guò)程,對(duì)于陡峭的loss超平面使用更小的學(xué)習(xí)率,使用Hessian矩陣最大特征值計(jì)算,也可以近似利用梯度代替。Adagrad和梯度裁剪就是這類方法中的經(jīng)典工作。Adagrad通過(guò)每個(gè)參數(shù)歷史的梯度更新情況進(jìn)行累計(jì),來(lái)調(diào)整每個(gè)參數(shù)的學(xué)習(xí)率,歷史更新較多的參數(shù),學(xué)習(xí)率設(shè)置的更小一些,梯度更新公式如下所示:
圖片
而梯度裁剪更加直接,如果計(jì)算的梯度大于一定的閾值,就將梯度縮?。ㄈ缦旅婀?,核心是縮放系數(shù)sigmoid的計(jì)算,根據(jù)閾值和梯度的L2范數(shù)比值而來(lái),梯度的L2范數(shù)太大就縮小梯度)。
圖片
如何設(shè)計(jì)梯度裁剪中的閾值呢?后續(xù)的工作Adaptive Gradient Clipping提出了一種自動(dòng)設(shè)計(jì)閾值的方式,核心思路是梯度的范數(shù)與模型參數(shù)范數(shù)比值不能太大,因此引入這一項(xiàng)幫助個(gè)性化調(diào)節(jié)不同參數(shù)的梯度:
圖片
雖然上述梯度裁剪方法有助于提升ranking模型訓(xùn)練穩(wěn)定性,但是文中發(fā)現(xiàn)這類方法對(duì)于推薦系統(tǒng)中的ranking模型并不能起到有效作用。經(jīng)過(guò)分析,文中發(fā)現(xiàn),之前的梯度裁剪方法在梯度突然暴增的時(shí)候控制力不夠。文中提出了Clippy,主要修改的是梯度裁剪中的縮放系數(shù),相比原來(lái)的梯度裁剪主要有2個(gè)改進(jìn)點(diǎn),一方面將L2 norm改成了無(wú)窮范數(shù)(取各個(gè)維度L1最大值),同時(shí)對(duì)于分子改成了上文adagrad中的r,即歷史梯度的累積。
圖片
這樣修改的原因?yàn)?,如下圖所示,在step-b到step-c損失函數(shù)突增,梯度對(duì)應(yīng)變大,但是之前的梯度裁剪方法得到的縮放系數(shù)并不足以控制梯度。將L2范數(shù)改成無(wú)窮范數(shù),可以方便捕捉某一個(gè)維度上的突變,對(duì)某一維度的梯度突增有更強(qiáng)的敏感性。另外,將分子變?yōu)槔塾?jì)梯度,讓模型根據(jù)累計(jì)梯度而不是當(dāng)前梯度調(diào)整閾值,更適配Adagrad對(duì)模型參數(shù)的更新過(guò)程。通過(guò)這種方式,如下圖第二列所示,對(duì)梯度的約束更加強(qiáng)烈,可以有效限制梯度過(guò)大導(dǎo)致的訓(xùn)練不穩(wěn)定問(wèn)題。
圖片
最后,文中給出了Clippy加入到Adagrad更新的整體算法流程,如下表:
圖片
通過(guò)下面的實(shí)驗(yàn)對(duì)比可以發(fā)現(xiàn),使用了Adagrad+Cliipy后,模型的訓(xùn)練過(guò)程更加穩(wěn)定:
本文鏈接:http://www.tebozhan.com/showinfo-26-127-0.html谷歌KDD'23工作:如何提升推薦系統(tǒng)Ranking模型訓(xùn)練穩(wěn)定性
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com