精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于多任務學習如何提升模型性能與原則

深度學習自然語言處理 ? 來源:CSDN技術社區 ? 作者:上杉翔二 ? 2021-03-21 11:54 ? 次閱讀

提升模型性能的方法有很多,除了提出過硬的方法外,通過把神經網絡加深加寬(深度學習),增加數據集數目(預訓練模型)和增加目標函數(多任務學習)都是能用來提升效果的手段。(別名Joint Learning,Learning to learn,learning with auxiliary task.。..等)

對于人類來說,我們往往學會了一件事,是能夠觸類旁通,舉一反三的。即其他不同任務的經驗性,能夠帶來一些有用的信息,這是多任務學習的出發點。但如果處理多任務還是用single-task learning的話(類似bagging),模型會默認為每個任務是獨立的,沒有關聯性的,所以每個模型的參數都是獨立進行的。這樣做的缺點在于:

訓練數據有限,所以模型并不具有很好的泛化性能

不考慮任務之間的相關性,缺乏對不同模型之間共享信息的挖掘,使得模型訓練過程中性能下降

Multi-Task Learning(MTL)多任務學習實質上是一種遷移機制,如何讓模型能夠同時解決多種問題,從而提高泛化準確率、學習速度和能力,模型的可理解性。特別是如何使用與其他任務的“相關性”與“差異性”,通過多個任務訓練并共享不同任務已學到的特征表示,減輕對特定任務的過度擬合,從正則化效果中獲益,提升最終的性能,使學習的嵌入在任務之間具有通用性。

多任務學習的構建原則

理解建模任務之間的相關性,以構建合適的多任務方案。

同時對多個任務的模型參數進行聯合學習以挖掘不同任務的共享信息。

但需要同時考慮不同任務會存在的差異性,如何提高模型對不同任務的適應能力。

為什么多任務是有效的?

可增加訓練樣本,且不同任務的噪音不同,同時學習多個任務能得到更通用的表達

可以通過其他任務來判斷學習到的特征是否真的有效

對于某個任務難學到的特征,可以通過其他任務來學習

多任務學習傾向于讓模型關注其他模型也關注的信息表達

某種程度上可以視為正則化

常用多任務學習的主要方式

基于參數的共享,如神經網絡隱層參數共享,然后上層得到多個特征完成多種任務以達到聯合訓練的目的,即loss里面組合多個。

對于loss的組合的權重設置可以分為手工調整,Gradient normalization(希望不同任務loss的量級接近,納入梯度計算權重,優點是可以考慮loss的量級,缺點是每一步都要額外算梯度)。Dynamic weight averaging,DWA希望各個任務以相近的速度來進行學習(記錄每步的loss,loss縮小快的任務權重會變小,缺點是沒有考慮量級)。Dynamic Task Prioritization,DTP希望更難學的任務可以有更高的權重。Uncertainty Weighting,讓“簡單”的任務權重更高(確定性越強的任務權重會大,而噪聲大難學的任務權重會變小)。對于loss的平衡挺講究的,也算是調參師需要掌握的東西吧,有空再新寫文章整理。

基于正則化的共享,如均值約束,聯合特征學習等。比如使用低秩參數矩陣分解,即假設不同任務的參數可能會共享某些維度的特征,那么每個任務的參數都接近所有任務平均的參數來建模任務之間的相關性,即在loss中加入這樣的正則化來約束參數:

所以多任務的優點在于它具有很好的泛化性能,對于有些任務的數據不足問題,也能借助其他任務得到訓練,另外它還能起到正則的作用,即很難使某個任務過擬合以保證整個模型的泛化性能。

而其困難在于如何更好的對每個任務分配權重(已經有人有NAS做了。..)以使其魯棒性最強,同時如何兼顧特征共享部分和任務的特點表示,避免過擬合或者欠擬合是值得研究的。

除了一般處理多任務都是一個可學習的alpha來控制外,本篇文章將整理幾篇多任務學習的論文。

Single-Level MTL Models

單層主要有以下幾種方式:

「Hard Parameter Sharing」:不同任務底層共享,然后共不同任務各自輸出。當兩個任務相關性較高時,用這種結構往往可以取得不錯的效果,但任務相關性不高時,會存在負遷移現象,導致效果不理想。

「Asymmetry Sharing(不對稱共享)」:不同任務的底層模塊有各自對應的輸出,但其中部分任務的輸出會被其他任務所使用,而部分任務則使用自己獨有的輸出。哪部分任務使用其他任務的輸出,則需要人為指定。

「Customized Sharing(自定義共享)」:不同任務的底層模塊不僅有各自獨立的輸出,還有共享的輸出。

「MMoE」:底層包含多個Expert,然后基于門控機制,不同任務會對不同Expert的輸出進行過濾。

「CGC」:這是PLE的結構(圖自騰訊在RecSys2020最佳長論文,Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized Recommendations),他的不同之處在于學習一個個性和共性兩方面的信息,然后再用不同的gate來控制。

Multi-Level MTL Models

「Cross-Stitch Network」:用參數來控制不同任務間共享的特征

「Sluice Network」:分層特征融合網絡

「ML-MMoE」:MMoE的多級結構

「PLE」:多層萃取(基于CGC)

MMoE(Multi-gate Mixture-of-Experts)論文:Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts

MMoE應該是實際上用的比較多一個架構了,想主要整理一下這個。

這篇文章是對多任務學習的一個擴展,通過門控網絡的機制來平衡多任務。所謂“平衡”是因為多任務學習中有個問題就是如果子任務之間的差異性太大了,多任務模型的效果會很差,那么如何平衡不同的任務呢?MMoE主要有兩個共享:

圖a,使用shared-bottom網絡,多個上層任務共用底層網絡。

圖b,多個獨立模型的集成方法MoE,即每個expert network都可以認為是神經網絡,公共一個門控網絡(One-gate MoE model),最終的輸出是所有experts的加權和。

圖c,MMoE,每個任務使用單獨的gating networks。即每個任務的gating networks通過最終輸出權重不同實現對experts的選擇性利用。不同任務的gating networks可以學習到不同的組合experts的模式,因此模型考慮到了捕捉到任務的相關性和區別。

通過這種multi-gate的結構能夠緩解任務間差異大的情況。

Multi-task Learning in LM語言模型是天然無監督的多任務學習。而且鑒于目前針對BERT的改進很多(包括BERT-large等版本)都是增加了數據量,計算能力或訓練過程。

比如RoBERTa,精細調參,為了優化訓練程序,從BERT的預訓練程序中刪除了結構預測(NSP)任務,引入了動態掩蔽,以便在訓練期間使掩蔽的標記發生變化。

比如DistilBERT學習了BERT的蒸餾版本,保留了95%的性能,但只使用了一半的參數。具體來說,它沒有標記類型和池化層的嵌入,只保留了谷歌BERT中一半的層(當然ALBERT也是等)。

MT-DNN與ERNIE2.0。這兩篇論文的多任務學習很有意思,接下來主要整理這兩篇文章。

MT-DNN論文:Multi-Task Deep Neural Networks for Natural Language Understanding

MT-DNN是結合了至少4種任務的模型:單句分類、句子對分類、文本相似度打分和相關度排序等等。

「單句分類」:CoLA是判斷英語句子是否語法合適、SST-2是電影評論的情感(正面or負面)。

「文本相似度」:STS-B對兩句話進行文本相似度打分

「句子對分類」:RTE和MNLI是文本蘊含任務(推理兩個句子之間的關系,是否存在蘊含關系、矛盾的關系或者中立關系),QQP和MRPC是判斷兩句話是否語義上一致,等價。

「相關性排序」:QNLI斯坦福問答數據集的一個版本,雖然是二分類問題,此時變成一個多排序問題,使更接近的答案排得更加靠前。

在MT-DNN的多任務學習中,也是低層的特征在所有任務之間共享,而頂層面向豐富的下游任務。從模型結構上,從底向上的shared layers是Transformer逐步的過程,用于生成共享的上下文嵌入向量(contextual embedding layers),然后完成四種任務的預測。

ERNIE2.0論文:ERNIE 2.0: A Continual Pre-Training Framework for Language Understanding

ERNIE2.0的貢獻主要有1 通過大型語料庫+先驗知識。2,多任務學習逐步更新 ERNIE 模型。

「序列性多任務學習」。使模型能夠學習到詞匯,語法,語義信息。不同于持續學習和多任務學習,序列多任務學習在引入新的訓練任務時,先利用之前學習到的參數對模型進行初始化,再同時訓練新任務和舊任務。

「定制和引入了多種預訓練任務」。側重詞匯的任務(mask,大寫字詞預測,字詞-文章關系),側重結構/語法的任務(詞語重排序,語句距離),側重語義的任務(文章關系任務,信息檢索相關性任務)。如下圖,首先主要使用的任務有:

「Knowledge Masking Task、Capitalization Prediction Task和Token-Document Relation Prediction Task」。Knowledge Masking Task是預測被masked掉的短語和命名知識實體以學習到局部語境和全局語境的依賴關系信息。Capitalization Prediction Task是首字母大寫預測,首字母大寫的詞往往有特殊的功能。Token-Document Relation Prediction Task預測段中的token是否出現在原始文檔的其他段(segment)中,即捕獲高頻詞或線索詞。

「Sentence Reordering Task和Sentence Distance Task」。Sentence Reordering Task句子重排任務是為了學習句子之間的關系。Sentence Distance Task通過文檔級的信息學習句子之間的距離。

「Discourse Relation Task和IR Relevance Task」。Discourse Relation Task引入2個句子之間語義或修辭關系的預測任務。IR Relevance Task學習短文本在信息檢索中的相關性。

這篇文章比較有趣的就是這個多任務連續增量學習,或持續學習(Continual learning)了,它致力于對數個任務按順序依次訓練模型,以確保模型在訓練新任務時候,依舊能夠記住先前的任務。正如人類能夠不斷地通過學習或歷史經驗積累獲得信息,從而有效地發展新的技能。

具體關于連續增量學習的對比,第一個是如何以連續的方式訓練任務,而不忘記以前所學的知識;第二個是如何更有效地學習這些預訓練任務。

「Continual Learning」。在訓練的每一個階段僅通過一項任務來訓練模型,如訓練任務A,在訓練任務B,一直到訓練任務Z,但是其缺點是會忘記先前學習的知識,導致最后的結果會更加偏向靠后的任務。。

「Multi-task Learning」。是普通的MTL,即所有任務在一起進行多任務學習,即同時訓練A,B..Z期間不做交互最后做集成。缺點是訓練完的模型只能處理這些任務,如果出現了比較新的任務,比較大的概率需要重頭開始訓練。

「Sequential Multi-task Learning」。當有新任務出現時,先使用先前學習的參數來初始化模型,并同時訓練新引入的任務和原始任務,如先訓練A,再訓練A,B,再訓練A,B,C,如圖中的金字塔形狀,當有新任務出現時,它也能夠快速反應做調整。

除了這種,其實還可以先(A)(B)(C)訓練,再(A,B)(B,C)(A,C),最后再(A,B,C)這種方式。有點像我們做題往往會先做單項訓練,再綜合訓練。
編輯:lyn

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 多任務
    +關注

    關注

    0

    文章

    18

    瀏覽量

    9055
  • 深度學習
    +關注

    關注

    73

    文章

    5493

    瀏覽量

    120999

原文標題:【多任務】如何利用多任務學習提升模型性能?

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    DDR內存頻率對性能的影響

    的整體性能,特別是在處理大量數據或運行復雜程序時,如視頻編輯、3D渲染和高端游戲等場景。快速的內存可以縮短CPU和內存之間的通信時間,從而提升整體系統的響應效率。 二、多任務處理能力 內存頻率高可以
    的頭像 發表于 11-20 14:25 ?279次閱讀

    NPU技術如何提升AI性能

    設計的處理器,與傳統的CPU和GPU相比,它在執行深度學習任務時具有更高的效率和更低的能耗。NPU通過專門優化的硬件結構和指令集,能夠更快地處理神經網絡中的大量并行計算任務。 1. 優化硬件架構 NPU技術通過優化硬件架構來
    的頭像 發表于 11-15 09:11 ?289次閱讀

    AI大模型性能優化方法

    AI大模型性能優化是一個復雜而關鍵的任務,涉及多個方面和策略。以下是一些主要的性能優化方法: 一、模型壓縮與優化
    的頭像 發表于 10-23 15:01 ?498次閱讀

    【《大語言模型應用指南》閱讀體驗】+ 基礎知識學習

    今天來學習大語言模型在自然語言理解方面的原理以及問答回復實現。 主要是基于深度學習和自然語言處理技術。 大語言模型涉及以下幾個過程: 數據收集:大語言
    發表于 08-02 11:03

    【大語言模型:原理與工程實踐】大語言模型的應用

    ,它通過抽象思考和邏輯推理,協助我們應對復雜的決策。 相應地,我們設計了兩類任務來檢驗大語言模型的能力。一類是感性的、無需理性能力的任務,類似于人類的系統1,如情感分析和抽取式問答
    發表于 05-07 17:21

    智能駕駛大模型:有望顯著提升自動駕駛系統的性能和魯棒性

    智能駕駛大模型是近年來人工智能領域和自動駕駛領域最為前沿的研究方向之一,它融合了深度學習、多模態融合、世界模型構建等多種技術,有望顯著提升自動駕駛系統的
    的頭像 發表于 05-07 17:20 ?1532次閱讀
    智能駕駛大<b class='flag-5'>模型</b>:有望顯著<b class='flag-5'>提升</b>自動駕駛系統的<b class='flag-5'>性能</b>和魯棒性

    【大語言模型:原理與工程實踐】大語言模型的評測

    的作用。同時,模型在多語言方面的表現直接決定了其在全球范圍內的適用性和普及度。為了全面評估大語言模型在翻譯領域的綜合性能,評測任務通常細分為兩個子類別。首先,基礎翻譯能力主要考察
    發表于 05-07 17:12

    【大語言模型:原理與工程實踐】大語言模型的預訓練

    如此卓越的性能,就是通過其核心能力對海量數據進行預訓練,再進行微調或對其什么型更好的根據人類的指令和偏好,發揮這些性能。隨著語言模型參數的不斷增加,模型完成各個
    發表于 05-07 17:10

    【大語言模型:原理與工程實踐】大語言模型的基礎技術

    特定任務模型進行微調。這種方法的成功不僅是自然語言處理發展的一個轉折點,還為許多現實世界的應用場帶來了前所未有的性能提升。從廣為人知的GPT到BERT,預訓練的
    發表于 05-05 12:17

    【大語言模型:原理與工程實踐】核心技術綜述

    的具體需求,這通常需要較少量的標注數據。 多任務學習和遷移學習: LLMs利用在預訓練中積累的知識,可以通過遷移學習在相關任務上快速適應
    發表于 05-05 10:56

    【大語言模型:原理與工程實踐】揭開大語言模型的面紗

    Transformer架構,利用自注意力機制對文本進行編碼,通過預訓練、有監督微調和強化學習等階段,不斷提升性能,展現出強大的語言理解和生成能力。 大語言模型的涌現能力,是指隨著
    發表于 05-04 23:55

    昆侖萬維天工3.0大模型性能顯著提升,天工SkyMusic音樂模型亮相

    天工3.0擁有4000億參數,超越Grok-1的3140億參數,成為全球最大的開源MoE大模型。該模型在語義理解、邏輯推理、通用性、泛化性、不確定性知識以及學習能力等方面均有顯著提升,
    的頭像 發表于 04-17 16:05 ?582次閱讀

    OpenVINO?協同Semantic Kernel:優化大模型應用性能新路徑

    作為主要面向 RAG 任務方向的框架,Semantic Kernel 可以簡化大模型應用開發過程,而在 RAG 任務中最常用的深度學習模型
    的頭像 發表于 03-08 10:41 ?652次閱讀
    OpenVINO?協同Semantic Kernel:優化大<b class='flag-5'>模型</b>應用<b class='flag-5'>性能</b>新路徑

    請教:有SPC560B的多任務實時系統的例程嗎(freertos)

    請教:有SPC560B的多任務實時系統的例程嗎(freertos)
    發表于 01-15 17:04

    如何從零開始構建深度學習項目?(如何啟動一個深度學習項目)

    性能重大提升的背后往往是模型設計的改變。不過有些時候對模型進行微調也可以提升機器學習
    發表于 01-11 10:49 ?285次閱讀
    如何從零開始構建深度<b class='flag-5'>學習</b>項目?(如何啟動一個深度<b class='flag-5'>學習</b>項目)