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

多任務(wù)處理卡頓頻發(fā),無風(fēng)扇工控機如何優(yōu)化性能?聚徽廠家一文讀懂
快速入門——LuatOS:sys庫多任務(wù)管理實戰(zhàn)攻略!

BEVFusion —面向自動駕駛的多任務(wù)多傳感器高效融合框架技術(shù)詳解

機器學(xué)習(xí)模型市場前景如何
【「基于大模型的RAG應(yīng)用開發(fā)與優(yōu)化」閱讀體驗】+大模型微調(diào)技術(shù)解讀
《具身智能機器人系統(tǒng)》第7-9章閱讀心得之具身智能機器人與大模型
AI模型部署邊緣設(shè)備的奇妙之旅:目標檢測模型
DDR內(nèi)存頻率對性能的影響
NPU技術(shù)如何提升AI性能
深度學(xué)習(xí)模型的魯棒性優(yōu)化
驍龍8至尊版性能實測:自研Oryon?CPU實現(xiàn)45%性能與能效提升

評論