一文匯總:推薦系統(tǒng)中多任務(wù)學(xué)習(xí)的優(yōu)化思路
?多任務(wù)學(xué)習(xí)是推薦系統(tǒng)中非常常見的一個問題。推薦系統(tǒng)中,經(jīng)常要對多個目標(biāo)進行預(yù)測,比如點擊率、轉(zhuǎn)化率、觀看時長等等。將這些任務(wù)聯(lián)合學(xué)習(xí),希望通過不同的監(jiān)督信息,互相增強各自目標(biāo)的擬合能力。但是同時,不同目標(biāo)之間又不一定是正向關(guān)系,可能存在負(fù)向遷移問題,存在蹺蹺板現(xiàn)象。因此,如何最好的發(fā)揮多任務(wù)學(xué)習(xí)的作用,達到各個任務(wù)聯(lián)合最優(yōu),一直是一個推薦系統(tǒng)領(lǐng)域的核心研究問題。
這篇文章就給大家匯總一下,推薦系統(tǒng)中常見的多任務(wù)學(xué)習(xí)解決思路。整體可以分為參數(shù)共享/私有方式、梯度平衡、表征學(xué)習(xí)優(yōu)化等幾個方面。
1.參數(shù)共享/私有方式
不同任務(wù)之間如何進行參數(shù)的共享,哪些參數(shù)又該作為該任務(wù)的私有參數(shù),這個方面一直是多任務(wù)學(xué)習(xí)中的一個核心研究點。最早的文章由谷歌等機構(gòu)發(fā)表在KDD2018 Modeling task relationships in multi-task learning with multi-gate mixture-of-experts,這篇文章提出了一種基于門控的多專家網(wǎng)絡(luò)(MMoE),解決多任務(wù)學(xué)習(xí)問題。在底層網(wǎng)絡(luò)中,有多個并行的NN網(wǎng)絡(luò),每個NN網(wǎng)絡(luò)就是一個expert。每個任務(wù)的預(yù)測使用這些expert的加權(quán)求和得到,權(quán)重由一個門控網(wǎng)絡(luò)根據(jù)輸入樣本生成。通過這種方式,各個expert是參數(shù)共享的,能夠最大限度共享各個任務(wù)的信息,同時通過gate針對不同任務(wù)側(cè)重各自的expert,實現(xiàn)一定程度的參數(shù)隔離,緩解各個任務(wù)之間的負(fù)向影響。
SNR: Sub-Network Routing for Flexible Parameter Sharing in Multi-Task Learning(AAAI 2019)是谷歌提出的另一篇多任務(wù)學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)。SNR相比MMoE更加靈活,主要體現(xiàn)在把各個Expert拆成了更細(xì)的粒度,把每個專家拆成多層,每層之間都能進行路由,使得NN網(wǎng)絡(luò)的任務(wù)間共享私有機制更加靈活。
Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized Recommendations(RecSys 2020)是騰訊在2020提出的一種多專家網(wǎng)絡(luò)結(jié)構(gòu)。之前的多專家網(wǎng)絡(luò)所有Expert都是各個任務(wù)共享的,只靠Gate控制各個任務(wù)對于各個expert的使用程度,仍然比較容易出現(xiàn)蹺蹺板現(xiàn)象。為了緩解這個問題,PLE提出了在網(wǎng)絡(luò)中加入組個每個任務(wù)獨立,不和其他任務(wù)共享的參數(shù)。通過這種方式,讓每個任務(wù)有自己獨立的參數(shù)空間,大幅緩解了多任務(wù)學(xué)習(xí)中的蹺蹺板現(xiàn)象。
2.梯度平衡
由于不同任務(wù)的數(shù)據(jù)分布不同,各個任務(wù)在反向傳播時的梯度也不同。這就可能出現(xiàn),某些任務(wù)的梯度非常大,把學(xué)習(xí)過程主導(dǎo)了,導(dǎo)致其他任務(wù)學(xué)習(xí)不好的情況。為了解決這類問題,一些工作專門研究如何設(shè)計更好的優(yōu)化器,平衡各個任務(wù)之間的梯度。
MetaBalance: Improving Multi-Task Recommendations via Adapting Gradient Magnitudes of Auxiliary Tasks(WWW 2022)提出了一種梯度平衡的方法。本文面臨的問題是,引入輔助任務(wù)提升主任務(wù),但是輔助任務(wù)梯度過大導(dǎo)致主導(dǎo)了訓(xùn)練,反而影響了主任務(wù)效果的問題。為了解決這個問題,文中采用范數(shù)來約束輔助任務(wù)的梯度,讓輔助任務(wù)梯度的范數(shù)和主任務(wù)盡可能一致。范數(shù)的計算采用滑動平均的方法,計算歷史累積范數(shù)的滑動平均值,防止單次范數(shù)計算波動較大。通過,直接約束范數(shù)的結(jié)果可能并不是最優(yōu)的梯度更新方式,因此文中還引入了一個系數(shù),融合范數(shù)約束前后的梯度。
AdaTask: A Task-Aware Adaptive Learning Rate Approach to Multi-Task Learning(AAAI 2023)提出了在Adam、Adagrad等優(yōu)化器中,引入考慮多任務(wù)之間梯度大小的信息,讓這些優(yōu)化器在多任務(wù)學(xué)習(xí)的優(yōu)化中平衡不同任務(wù)的梯度大小。整體的實現(xiàn)思路為,原來大Adagrad等方法會根據(jù)歷史梯度信息調(diào)整每個參數(shù)的學(xué)習(xí)率。本文的AdaTask在此基礎(chǔ)上,增加了一個任務(wù)維度,也就是每個任務(wù)、每個參數(shù),根據(jù)歷史梯度信息調(diào)整下一步的學(xué)習(xí)率。
3.表征學(xué)習(xí)優(yōu)化
多任務(wù)聯(lián)合學(xué)習(xí)的一個核心目的,就是為了讓利用多個任務(wù)的目標(biāo),共同更新底層表征,提升底層表征的表達能力,進而提升各個任務(wù)的效果。在谷歌的文章Can Small Heads Help? Understanding and Improving Multi-Task Generalization(WWW2022)中,提出了一個多任務(wù)表征學(xué)習(xí)的矛盾點。一般多任務(wù)學(xué)習(xí)都由共享參數(shù)和私有參數(shù)兩部分組成,如果私有參數(shù)量太小,就會導(dǎo)致存在負(fù)向遷移的各個任務(wù)之間效果互相影響,降低整體多任務(wù)學(xué)習(xí)的效果。如果私有參數(shù)量太大,模型的自由度很高,底層表征就無法學(xué)到兼容各個任務(wù)的信息了。
為了解決這個問題,本文提出了在每個任務(wù)的原始輸出head基礎(chǔ)上,增加一個小的輸出head,這個小的輸出head也擬合對應(yīng)的任務(wù),作為輔助塔。其目的是縮小私有head參數(shù)的參數(shù)量,以此實現(xiàn)讓底層表征必須抽取出多任務(wù)共享的信息,進而提升多任務(wù)底層表征的泛化能力。
