提升模型性能的方法有很多,除了提出過(guò)硬的方法外,通過(guò)把神經(jīng)網(wǎng)絡(luò)加深加寬(深度學(xué)習(xí)),增加數(shù)據(jù)集數(shù)目(預(yù)訓(xùn)練模型)和增加目標(biāo)函數(shù)(多任務(wù)學(xué)習(xí))都是能用來(lái)提升效果的手段。(別名Joint Learning,Learning to learn,learning with auxiliary task.。..等)
對(duì)于人類(lèi)來(lái)說(shuō),我們往往學(xué)會(huì)了一件事,是能夠觸類(lèi)旁通,舉一反三的。即其他不同任務(wù)的經(jīng)驗(yàn)性,能夠帶來(lái)一些有用的信息,這是多任務(wù)學(xué)習(xí)的出發(fā)點(diǎn)。但如果處理多任務(wù)還是用single-task learning的話(huà)(類(lèi)似bagging),模型會(huì)默認(rèn)為每個(gè)任務(wù)是獨(dú)立的,沒(méi)有關(guān)聯(lián)性的,所以每個(gè)模型的參數(shù)都是獨(dú)立進(jìn)行的。這樣做的缺點(diǎn)在于:
訓(xùn)練數(shù)據(jù)有限,所以模型并不具有很好的泛化性能
不考慮任務(wù)之間的相關(guān)性,缺乏對(duì)不同模型之間共享信息的挖掘,使得模型訓(xùn)練過(guò)程中性能下降
Multi-Task Learning(MTL)多任務(wù)學(xué)習(xí)實(shí)質(zhì)上是一種遷移機(jī)制,如何讓模型能夠同時(shí)解決多種問(wèn)題,從而提高泛化準(zhǔn)確率、學(xué)習(xí)速度和能力,模型的可理解性。特別是如何使用與其他任務(wù)的“相關(guān)性”與“差異性”,通過(guò)多個(gè)任務(wù)訓(xùn)練并共享不同任務(wù)已學(xué)到的特征表示,減輕對(duì)特定任務(wù)的過(guò)度擬合,從正則化效果中獲益,提升最終的性能,使學(xué)習(xí)的嵌入在任務(wù)之間具有通用性。
多任務(wù)學(xué)習(xí)的構(gòu)建原則
理解建模任務(wù)之間的相關(guān)性,以構(gòu)建合適的多任務(wù)方案。
同時(shí)對(duì)多個(gè)任務(wù)的模型參數(shù)進(jìn)行聯(lián)合學(xué)習(xí)以挖掘不同任務(wù)的共享信息。
但需要同時(shí)考慮不同任務(wù)會(huì)存在的差異性,如何提高模型對(duì)不同任務(wù)的適應(yīng)能力。
為什么多任務(wù)是有效的?
可增加訓(xùn)練樣本,且不同任務(wù)的噪音不同,同時(shí)學(xué)習(xí)多個(gè)任務(wù)能得到更通用的表達(dá)
可以通過(guò)其他任務(wù)來(lái)判斷學(xué)習(xí)到的特征是否真的有效
對(duì)于某個(gè)任務(wù)難學(xué)到的特征,可以通過(guò)其他任務(wù)來(lái)學(xué)習(xí)
多任務(wù)學(xué)習(xí)傾向于讓模型關(guān)注其他模型也關(guān)注的信息表達(dá)
某種程度上可以視為正則化
常用多任務(wù)學(xué)習(xí)的主要方式
基于參數(shù)的共享,如神經(jīng)網(wǎng)絡(luò)隱層參數(shù)共享,然后上層得到多個(gè)特征完成多種任務(wù)以達(dá)到聯(lián)合訓(xùn)練的目的,即loss里面組合多個(gè)。
對(duì)于loss的組合的權(quán)重設(shè)置可以分為手工調(diào)整,Gradient normalization(希望不同任務(wù)loss的量級(jí)接近,納入梯度計(jì)算權(quán)重,優(yōu)點(diǎn)是可以考慮loss的量級(jí),缺點(diǎn)是每一步都要額外算梯度)。Dynamic weight averaging,DWA希望各個(gè)任務(wù)以相近的速度來(lái)進(jìn)行學(xué)習(xí)(記錄每步的loss,loss縮小快的任務(wù)權(quán)重會(huì)變小,缺點(diǎn)是沒(méi)有考慮量級(jí))。Dynamic Task Prioritization,DTP希望更難學(xué)的任務(wù)可以有更高的權(quán)重。Uncertainty Weighting,讓“簡(jiǎn)單”的任務(wù)權(quán)重更高(確定性越強(qiáng)的任務(wù)權(quán)重會(huì)大,而噪聲大難學(xué)的任務(wù)權(quán)重會(huì)變?。?。對(duì)于loss的平衡挺講究的,也算是調(diào)參師需要掌握的東西吧,有空再新寫(xiě)文章整理。
基于正則化的共享,如均值約束,聯(lián)合特征學(xué)習(xí)等。比如使用低秩參數(shù)矩陣分解,即假設(shè)不同任務(wù)的參數(shù)可能會(huì)共享某些維度的特征,那么每個(gè)任務(wù)的參數(shù)都接近所有任務(wù)平均的參數(shù)來(lái)建模任務(wù)之間的相關(guān)性,即在loss中加入這樣的正則化來(lái)約束參數(shù):
所以多任務(wù)的優(yōu)點(diǎn)在于它具有很好的泛化性能,對(duì)于有些任務(wù)的數(shù)據(jù)不足問(wèn)題,也能借助其他任務(wù)得到訓(xùn)練,另外它還能起到正則的作用,即很難使某個(gè)任務(wù)過(guò)擬合以保證整個(gè)模型的泛化性能。
而其困難在于如何更好的對(duì)每個(gè)任務(wù)分配權(quán)重(已經(jīng)有人有NAS做了。..)以使其魯棒性最強(qiáng),同時(shí)如何兼顧特征共享部分和任務(wù)的特點(diǎn)表示,避免過(guò)擬合或者欠擬合是值得研究的。
除了一般處理多任務(wù)都是一個(gè)可學(xué)習(xí)的alpha來(lái)控制外,本篇文章將整理幾篇多任務(wù)學(xué)習(xí)的論文。
Single-Level MTL Models
單層主要有以下幾種方式:
「Hard Parameter Sharing」:不同任務(wù)底層共享,然后共不同任務(wù)各自輸出。當(dāng)兩個(gè)任務(wù)相關(guān)性較高時(shí),用這種結(jié)構(gòu)往往可以取得不錯(cuò)的效果,但任務(wù)相關(guān)性不高時(shí),會(huì)存在負(fù)遷移現(xiàn)象,導(dǎo)致效果不理想。
「Asymmetry Sharing(不對(duì)稱(chēng)共享)」:不同任務(wù)的底層模塊有各自對(duì)應(yīng)的輸出,但其中部分任務(wù)的輸出會(huì)被其他任務(wù)所使用,而部分任務(wù)則使用自己獨(dú)有的輸出。哪部分任務(wù)使用其他任務(wù)的輸出,則需要人為指定。
「Customized Sharing(自定義共享)」:不同任務(wù)的底層模塊不僅有各自獨(dú)立的輸出,還有共享的輸出。
「MMoE」:底層包含多個(gè)Expert,然后基于門(mén)控機(jī)制,不同任務(wù)會(huì)對(duì)不同Expert的輸出進(jìn)行過(guò)濾。
「CGC」:這是PLE的結(jié)構(gòu)(圖自騰訊在RecSys2020最佳長(zhǎng)論文,Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized Recommendations),他的不同之處在于學(xué)習(xí)一個(gè)個(gè)性和共性?xún)煞矫娴男畔?,然后再用不同的gate來(lái)控制。
Multi-Level MTL Models
「Cross-Stitch Network」:用參數(shù)來(lái)控制不同任務(wù)間共享的特征
「Sluice Network」:分層特征融合網(wǎng)絡(luò)
「ML-MMoE」:MMoE的多級(jí)結(jié)構(gòu)
「PLE」:多層萃?。ɑ贑GC)
MMoE(Multi-gate Mixture-of-Experts)論文:Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts
MMoE應(yīng)該是實(shí)際上用的比較多一個(gè)架構(gòu)了,想主要整理一下這個(gè)。
這篇文章是對(duì)多任務(wù)學(xué)習(xí)的一個(gè)擴(kuò)展,通過(guò)門(mén)控網(wǎng)絡(luò)的機(jī)制來(lái)平衡多任務(wù)。所謂“平衡”是因?yàn)槎嗳蝿?wù)學(xué)習(xí)中有個(gè)問(wèn)題就是如果子任務(wù)之間的差異性太大了,多任務(wù)模型的效果會(huì)很差,那么如何平衡不同的任務(wù)呢?MMoE主要有兩個(gè)共享:
圖a,使用shared-bottom網(wǎng)絡(luò),多個(gè)上層任務(wù)共用底層網(wǎng)絡(luò)。
圖b,多個(gè)獨(dú)立模型的集成方法MoE,即每個(gè)expert network都可以認(rèn)為是神經(jīng)網(wǎng)絡(luò),公共一個(gè)門(mén)控網(wǎng)絡(luò)(One-gate MoE model),最終的輸出是所有experts的加權(quán)和。
圖c,MMoE,每個(gè)任務(wù)使用單獨(dú)的gating networks。即每個(gè)任務(wù)的gating networks通過(guò)最終輸出權(quán)重不同實(shí)現(xiàn)對(duì)experts的選擇性利用。不同任務(wù)的gating networks可以學(xué)習(xí)到不同的組合experts的模式,因此模型考慮到了捕捉到任務(wù)的相關(guān)性和區(qū)別。
通過(guò)這種multi-gate的結(jié)構(gòu)能夠緩解任務(wù)間差異大的情況。
Multi-task Learning in LM語(yǔ)言模型是天然無(wú)監(jiān)督的多任務(wù)學(xué)習(xí)。而且鑒于目前針對(duì)BERT的改進(jìn)很多(包括BERT-large等版本)都是增加了數(shù)據(jù)量,計(jì)算能力或訓(xùn)練過(guò)程。
比如RoBERTa,精細(xì)調(diào)參,為了優(yōu)化訓(xùn)練程序,從BERT的預(yù)訓(xùn)練程序中刪除了結(jié)構(gòu)預(yù)測(cè)(NSP)任務(wù),引入了動(dòng)態(tài)掩蔽,以便在訓(xùn)練期間使掩蔽的標(biāo)記發(fā)生變化。
比如DistilBERT學(xué)習(xí)了BERT的蒸餾版本,保留了95%的性能,但只使用了一半的參數(shù)。具體來(lái)說(shuō),它沒(méi)有標(biāo)記類(lèi)型和池化層的嵌入,只保留了谷歌BERT中一半的層(當(dāng)然ALBERT也是等)。
MT-DNN與ERNIE2.0。這兩篇論文的多任務(wù)學(xué)習(xí)很有意思,接下來(lái)主要整理這兩篇文章。
MT-DNN論文:Multi-Task Deep Neural Networks for Natural Language Understanding
MT-DNN是結(jié)合了至少4種任務(wù)的模型:?jiǎn)尉浞诸?lèi)、句子對(duì)分類(lèi)、文本相似度打分和相關(guān)度排序等等。
「單句分類(lèi)」:CoLA是判斷英語(yǔ)句子是否語(yǔ)法合適、SST-2是電影評(píng)論的情感(正面or負(fù)面)。
「文本相似度」:STS-B對(duì)兩句話(huà)進(jìn)行文本相似度打分
「句子對(duì)分類(lèi)」:RTE和MNLI是文本蘊(yùn)含任務(wù)(推理兩個(gè)句子之間的關(guān)系,是否存在蘊(yùn)含關(guān)系、矛盾的關(guān)系或者中立關(guān)系),QQP和MRPC是判斷兩句話(huà)是否語(yǔ)義上一致,等價(jià)。
「相關(guān)性排序」:QNLI斯坦福問(wèn)答數(shù)據(jù)集的一個(gè)版本,雖然是二分類(lèi)問(wèn)題,此時(shí)變成一個(gè)多排序問(wèn)題,使更接近的答案排得更加靠前。
在MT-DNN的多任務(wù)學(xué)習(xí)中,也是低層的特征在所有任務(wù)之間共享,而頂層面向豐富的下游任務(wù)。從模型結(jié)構(gòu)上,從底向上的shared layers是Transformer逐步的過(guò)程,用于生成共享的上下文嵌入向量(contextual embedding layers),然后完成四種任務(wù)的預(yù)測(cè)。
ERNIE2.0論文:ERNIE 2.0: A Continual Pre-Training Framework for Language Understanding
ERNIE2.0的貢獻(xiàn)主要有1 通過(guò)大型語(yǔ)料庫(kù)+先驗(yàn)知識(shí)。2,多任務(wù)學(xué)習(xí)逐步更新 ERNIE 模型。
「序列性多任務(wù)學(xué)習(xí)」。使模型能夠?qū)W習(xí)到詞匯,語(yǔ)法,語(yǔ)義信息。不同于持續(xù)學(xué)習(xí)和多任務(wù)學(xué)習(xí),序列多任務(wù)學(xué)習(xí)在引入新的訓(xùn)練任務(wù)時(shí),先利用之前學(xué)習(xí)到的參數(shù)對(duì)模型進(jìn)行初始化,再同時(shí)訓(xùn)練新任務(wù)和舊任務(wù)。
「定制和引入了多種預(yù)訓(xùn)練任務(wù)」。側(cè)重詞匯的任務(wù)(mask,大寫(xiě)字詞預(yù)測(cè),字詞-文章關(guān)系),側(cè)重結(jié)構(gòu)/語(yǔ)法的任務(wù)(詞語(yǔ)重排序,語(yǔ)句距離),側(cè)重語(yǔ)義的任務(wù)(文章關(guān)系任務(wù),信息檢索相關(guān)性任務(wù))。如下圖,首先主要使用的任務(wù)有:
「Knowledge Masking Task、Capitalization Prediction Task和Token-Document Relation Prediction Task」。Knowledge Masking Task是預(yù)測(cè)被masked掉的短語(yǔ)和命名知識(shí)實(shí)體以學(xué)習(xí)到局部語(yǔ)境和全局語(yǔ)境的依賴(lài)關(guān)系信息。Capitalization Prediction Task是首字母大寫(xiě)預(yù)測(cè),首字母大寫(xiě)的詞往往有特殊的功能。Token-Document Relation Prediction Task預(yù)測(cè)段中的token是否出現(xiàn)在原始文檔的其他段(segment)中,即捕獲高頻詞或線索詞。
「Sentence Reordering Task和Sentence Distance Task」。Sentence Reordering Task句子重排任務(wù)是為了學(xué)習(xí)句子之間的關(guān)系。Sentence Distance Task通過(guò)文檔級(jí)的信息學(xué)習(xí)句子之間的距離。
「Discourse Relation Task和IR Relevance Task」。Discourse Relation Task引入2個(gè)句子之間語(yǔ)義或修辭關(guān)系的預(yù)測(cè)任務(wù)。IR Relevance Task學(xué)習(xí)短文本在信息檢索中的相關(guān)性。
這篇文章比較有趣的就是這個(gè)多任務(wù)連續(xù)增量學(xué)習(xí),或持續(xù)學(xué)習(xí)(Continual learning)了,它致力于對(duì)數(shù)個(gè)任務(wù)按順序依次訓(xùn)練模型,以確保模型在訓(xùn)練新任務(wù)時(shí)候,依舊能夠記住先前的任務(wù)。正如人類(lèi)能夠不斷地通過(guò)學(xué)習(xí)或歷史經(jīng)驗(yàn)積累獲得信息,從而有效地發(fā)展新的技能。
具體關(guān)于連續(xù)增量學(xué)習(xí)的對(duì)比,第一個(gè)是如何以連續(xù)的方式訓(xùn)練任務(wù),而不忘記以前所學(xué)的知識(shí);第二個(gè)是如何更有效地學(xué)習(xí)這些預(yù)訓(xùn)練任務(wù)。
「Continual Learning」。在訓(xùn)練的每一個(gè)階段僅通過(guò)一項(xiàng)任務(wù)來(lái)訓(xùn)練模型,如訓(xùn)練任務(wù)A,在訓(xùn)練任務(wù)B,一直到訓(xùn)練任務(wù)Z,但是其缺點(diǎn)是會(huì)忘記先前學(xué)習(xí)的知識(shí),導(dǎo)致最后的結(jié)果會(huì)更加偏向靠后的任務(wù)。。
「Multi-task Learning」。是普通的MTL,即所有任務(wù)在一起進(jìn)行多任務(wù)學(xué)習(xí),即同時(shí)訓(xùn)練A,B..Z期間不做交互最后做集成。缺點(diǎn)是訓(xùn)練完的模型只能處理這些任務(wù),如果出現(xiàn)了比較新的任務(wù),比較大的概率需要重頭開(kāi)始訓(xùn)練。
「Sequential Multi-task Learning」。當(dāng)有新任務(wù)出現(xiàn)時(shí),先使用先前學(xué)習(xí)的參數(shù)來(lái)初始化模型,并同時(shí)訓(xùn)練新引入的任務(wù)和原始任務(wù),如先訓(xùn)練A,再訓(xùn)練A,B,再訓(xùn)練A,B,C,如圖中的金字塔形狀,當(dāng)有新任務(wù)出現(xiàn)時(shí),它也能夠快速反應(yīng)做調(diào)整。
除了這種,其實(shí)還可以先(A)(B)(C)訓(xùn)練,再(A,B)(B,C)(A,C),最后再(A,B,C)這種方式。有點(diǎn)像我們做題往往會(huì)先做單項(xiàng)訓(xùn)練,再綜合訓(xùn)練。
編輯:lyn
-
多任務(wù)
+關(guān)注
關(guān)注
0文章
18瀏覽量
9049 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5466瀏覽量
120891
原文標(biāo)題:【多任務(wù)】如何利用多任務(wù)學(xué)習(xí)提升模型性能?
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論