2021 年預訓練語言模型及微調的最新進展

深度學習與NLP 2021-09-18 16:04:43 阅读数:336

模型 最新

    對預訓練語言模型(LM)進行微調已成為在自然語言處理中進行遷移學習的事實上的標准。在過去的三年中(Ruder,2018),微調(Howard&Ruder,2018)取代了預訓練embedding特征提取的使用(Peters等人,2018),而預訓練語言模型則受到青睞,由於提高了樣本效率和性能(Zhang和Bowman,2018),因此模型對翻譯(McCann等,2018),自然語言推理(Conneau等,2017)和其他任務進行了訓練。這些方法的經驗成功導致開發了更大的模型(Devlin等,2019; Raffel等,2020)。實際上,最近的模型是如此之大,以至於它們可以在不進行任何參數更新的情况下達到合理的性能(Brown等人,2020年)。但是,這種零樣本(zero-shot)場景的局限性(請參閱本節)使得有可能為了獲得最佳性能或保持合理的效率,在使用大型預訓練的LM時,微調將繼續成為常規的操作方法。

    在標准的轉移學習場景中(請參見下文;有關一般概述,請參見此帖子),首先使用masked語言建模(MLM;Devlin等, 2019)。然後使用標准的交叉熵損失對下遊任務的標記數據進行微調。

    標准的預訓練-微調場景(來源Ruder et al,2019)


    盡管預訓練需要大量計算,但微調可以相對便宜地完成。對於此類模型的實際使用而言,微調更為重要,因為單個預訓練模型已下載並微調了數百萬次(請參見Hugging Face模型存儲庫)。因此,微調是本文的重點。特別是,我將重點介紹影響或可能改變我們微調語言模型的方式的最新進展,如下所示。

    本文討論的微調方法概述

     

自適應微調

    盡管就分布外泛化而言,經過預訓練的語言模型比以前的模型更為健壯(Hendrycks等,2020),但它們仍然無法很好地處理與已有模型大不相同的數據。自適應微調是一種通過在更接近目標數據分布的數據上微調模型來彌合這種分布變化的方法。具體而言,自適應微調包括在特定於任務的微調之前,在附加數據上對模型進行微調,如下所示。重要的是,該模型已根據預訓練目標進行了微調,因此自適應微調僅需要未標記的數據。

    自適應微調是標准遷移學習場景的一部分。在更接近目標分布的數據上使用預訓練損失(通常是masked語言建模)來訓練預訓練模型。


    一般而言,給定目標域 Dt 由特征空間組成 X 和特征空間上的邊際概率分布 P(X),其中X={X1個,…,Xñ}∈X(Pan and Yang,2009 ; Ruder,2019),自適應微調使我們能够了解兩個特征空間X和目標數據的分布 P(X)。

    自適應微調的變體(域,任務和語言自適應微調)已用於分別使模型適應(adapy)目標域,目標任務和目標語言的數據。Dai和Le(2015)首先展示了領域自適應微調的好處。霍華德與魯德(2018)後來證明了通過作為ULMFiT的一部分對域內數據進行微調可以提高采樣效率。他們還提出了任務自適應的微調功能,該功能可以根據任務訓練數據上的預訓練目標對模型進行微調。與一站式任務標簽上的交叉熵相比,預訓練損失為建模目標數據提供了更豐富的信息,因此任務自適應的微調比常規的微調有用。或者,可以通過多任務學習聯合進行自適應和常規微調(Chronopoulou等,2019)。

    域和任務自適應的微調最近已應用於最新一代的預訓練模型(Logeswaran等人,2019 ; Han和Eisenstein,2019 ; Mehri等人,2019)。Gururangan等。(2020)錶明適應目標領域和目標任務的數據是互補的。最近,Pfeiffer等。(2020)提出了語言自適應的微調,以使模型適應新的語言。

    自適應微調模型專用於特定的數據分布,它將能够很好地建模。但是,這是以其成為通用語言模型的能力為代價的。因此,當在單個域的(可能多個)任務上的高性能很重要時,自適應微調最有用;如果預訓練模型應適應大量域,則自適應微調的計算效率低下。


行為微調

    自適應微調使我們可以將模型專門化為 Dt,它並沒有直接告訴我們有關目標任務的任何信息。一般而言,目標任務Tt由標簽空間組成 ÿ,事先分配 P(ÿ) ,其中, ÿ={ÿ1,…,ÿñ}∈ÿ,以及條件概率分布 P(ÿ|X)。或者,我們可以通過在相關任務上進行微調來教授一種模型功能,該模型功能可以很好地完成目標任務,如下所示。我們將這種場景稱為行為微調,因為它著重於學習有用的行為並將其與自適應微調區分開。

    預訓練模型的行為微調。對與目標任務相關的任務,使用特定於任務的監督目標或自監督目標,對預訓練模型進行了訓練。


    教授模型相關功能的一種方法是在特定於任務的微調之前,根據相關任務的相關標記數據對其進行微調(Phang et al。,2018)。這種所謂的中間任務訓練最適合需要高級推理和推理能力的任務(Pruksachatkun等,2020;Phang等,2020)。帶有標記數據的行為微調已被用於教授有關命名實體的模型信息(Broscheit,2019),釋義(Arase和Tsujii,2019),語法(Glavaš和Vulić,2020),答案句子選擇(Garg等。(2020年)和問題解答(Khashabi等人,2020年)。Aghajanyan等(2021)在大規模的多任務場景中微調約50個帶標簽的數據集,並觀察到大量多樣的任務集合對於良好的遷移性能很重要。

    由於通常很難獲得此類高級推理任務的監督數據,因此,我們可以在目標上進行訓練,這些目標可以教授與下遊任務相關的模型功能,但仍可以以自監督的方式進行學習。例如,Dou和Neubig(2021)對一個用於單詞對齊的模型進行了微調,其目標是教其識別平行句子等。Sellam等(2020年)對BERT進行微調,以使用一系列句子相似度信號進行質量評估。在這兩種情况下,學習信號的多樣性都是重要的。

    另一種有效的方法是將目標任務設計為masked語言建模的一種形式。為此,Ben-David等(2020年)用基於樞軸的(pivot-based)目標微調情感領域適應模型。其他人提出了預訓練目標,可以在微調中類似地使用它們:Ram等(2021)用跨度選擇任務對QA模型進行預訓練,而Bansal等人(24)(2020年)通過自動生成完形填空樣式的多類分類任務來預訓練少量學習模型。

    區分自適應和行為微調鼓勵我們考慮旨在灌輸到模型中的歸納偏差,以及它們是否與領域的屬性 D或任務T有關。區分領域和任務的作用很重要,因為通常可以使用有限的未標記數據來學習有關領域的信息(Ramponi和Plank,2020年),而使用當前方法來獲得高級自然語言理解技能通常需要數十億的預訓練數據樣本(Zhang等,2020)。

    但是,當我們根據預訓練目標來組織任務時,任務和領域之間的區別變得更加模糊。諸如MLM之類的足够通用的預訓練任務可以為學習提供有用的信息P(ÿ|X)但可能不會包含對任務很重要的所有信號。例如,經過MLM預訓練的模型難以與模型求反,數字或命名實體(Rogers等人,2020年)作鬥爭。

    同樣,數據擴充的使用也糾纏了 D 和 T,因為它允許我們直接在數據中編碼所需的功能。例如,通過對文本中的模型進行微調,將性別單詞替換為性別相反的單詞,可以使該模型對性別偏見的魯棒性更高(Zhao等人,2018 ; Zhao等人,2019 ; Manela等人等,2021年)。


參數有效的微調

    當需要在許多場景中(例如針對大量用戶)對模型進行微調時,為每種情况存儲微調模型的副本在計算上會非常昂貴。因此,最近的工作集中在保持大多數模型參數固定不變,並對每個任務微調少量參數。實際上,這使得可以存儲大型模型的單個副本以及具有特定於任務的修改的許多小得多的文件。

    該工作線的第一種方法是基於adapter(Rebuffi等,2017),即在預訓練模型的各層之間插入小的瓶頸層(Houlsby等,2019 ; Stickland和Murray,2019)其參數是固定的。adapter提供通用場景,例如在訓練過程中存儲多個檢查點以及更高級的技術,例如檢查點平均(Izmailov等人,2018),快照集合(Huang等人,2017)和時間集合(Laine和Aila,2017)更加節省空間。使用adapter,通用模型可以有效地適應多種場景,例如不同的語言(Bapna和Firat,2019年)。Pfeiffer等(2020年)最近證明了adapter是模塊化的,並且可以通過堆疊進行組合,從而能够獨立學習專用錶示。這在使用前面討論的方法時特別有用:通過將經過訓練的任務adapter堆疊在adapter之上,可以評估自適應或性能微調的adapter,而無需進行任何特定於任務的微調。如下圖所示,其中,在英語(左)或Quechua語言adapter(右)上堆疊了受過命名實體識別(NER)訓練的任務adapter。

    在MAD-X框架的adapter塊中插入的任務和語言adapter(Pfeiffer等,2020)。adapter學習封裝的錶示形式,並且可以相互替換,從而實現零樣本遷移。

     

    adapter在不更改基礎參數的情况下修改模型的激活(activation)時,另一項工作是直接修改預訓練的參數。為了說明這組方法,我們可以將微調視為學習如何擾動預訓練模型的參數。形式上,為了獲得微調模型的參數θ(fine-tuned)∈ Rd,其中, d 是模型的維數,我們學習特定於任務的參數向量 θ(task)∈Rd, 捕獲如何更改預訓練的模型參數 θ(pre-trained)∈Rd。微調後的參數是將任務相關的排列應用於預訓練的參數的結果:
    θ(fine-tuned)=θ(pre-trained)+θ(task)


    而不是對於每個任務存儲的副本θ(fine-tuned),我們可以為每項任務存儲一個 θ(pre-trained)和一份θ(task)。如果我們可以更加快速的參數化,則成本更低。為此,Guo等人(https://arxiv.org/abs/2012.07463)學習θ(task)作為稀疏向量。Aghajanyan等人(2020)(https://arxiv.org/abs/2012.13255)設置θ(task)=θ(low)M ,其中, θ(low)是低維向量, M是隨機線性投影(在他們的情况下是FastFood變換(Li等人,2018)(https://openreview.net/forum?id=ryup8-WCW))。

    或者,我們可以僅對預訓練參數的子集應用修改。計算機視覺的經典方法(Donahue等,2014: http://proceedings.mlr.press/v32/donahue14.html)僅微調模型的最後一層。讓θ(pre-trained) 錶示所有L層預訓練參數的集合,即 θ(pre-trained)=L層θ(pre-trained)參數求和。因此,僅對最後一層進行微調等效於:


    盡管這在NLP中效果不佳(Howard&Ruder,2018:https://www.aclweb.org/anthology/P18-1031/),但還有其他一些參數子集可以更有效地進行微調。例如,Ben-Zaken(2020年:https://nlp.biu.ac.il/~yogo/bitfit.pdf)僅通過微調模型的偏執參數即可獲得非常好的效果。

    另一系列工作是在微調期間修剪預訓練模型的參數。此類方法使用不同的標准來修剪權重,例如基於關於權重重要性的零級或一階信息(Sanh等人,2020年:https://papers.nips.cc/paper/2020/file/eae15aabaa768ae4a5993a8a4f4fa6e4-Paper.pdf)。由於當前硬件對稀疏架構的支持有限,因此目前最好采用結構稀疏的方法,即,將更新集中在一組有限的層,矩陣或向量中。例如,預訓練模型的最後幾層已錶明在微調過程中用途有限,可以隨機重新初始化(Tamkin等,2020:https://www.aclweb.org/anthology/2020.findings-emnlp.125/;Zhang等,2021:https://openreview.net/forum?id=cO1IH43yUF),甚至完全删除(Chung等,2021:https://openreview.net/forum?id=xpFFI_NtgpW)。

    修剪方法著重於减少特定於任務的模型的參數總數,而其他大多數方法著重於减少可訓練參數的數量,同時保留一個副本。θ(pre-trained)。後一種方法中的最新方法通常與完全微調的性能相當,同時只訓練每個任務模型參數的約0.5%(Pfeiffer等,2020:https://www.aclweb.org/anthology/2020.emnlp-main.617/ ;)。

    越來越多的證據錶明,大型的預訓練語言模型可以很好地壓縮NLP任務(Li等人,2018年:https://openreview.net/forum?id=ryup8-WCW; Gordon等人,2020年:https://www.aclweb.org/anthology/2020.repl4nlp-1.18/)。這些實踐證據以及它們的便利性,可用性(Pfeiffer等人,2020年:https://www.aclweb.org/anthology/2020.emnlp-demos.7/)以及最近的經驗成功使這些方法在進行實驗以及在實際環境中都有收益。


文本到文本的微調

    遷移學習的另一個發展是從諸如BERT(Devlin等,2019:https://www.aclweb.org/anthology/N19-1423/)和RoBERTa(Liu等,2019)的掩蔽語言模型向諸如T5(Raffel等,2019)的語言的自回歸模型的轉變。GPT-3(Brown等人,2020年)。雖然這兩種方法都可以用於為文本分配似然度分數(Salazar等,2020),但自回歸LM模型更容易從中進行采樣。相比之下,被masked的LM通常僅限於填空場景,例如(Petroni等,2019)。

    使用masked LM進行微調的標准方法是用針對目標任務學習的隨機初始化的特定於任務的head替換用於MLM的輸出層(Devlin等人,2019年:https://www.aclweb.org/anthology/N19-1423/)。或者,可以通過以克隆的方式將任務重鑄為MLM,來重新使用經過預訓練的模型的輸出層(Talmor等人,2020:https://www.aclweb.org/anthology/2020.tacl-1.48/;Schick和Schütze,2021:https://arxiv.org/abs/2001.07676)。類似地,自回歸LM通常以文本到文本格式投射目標任務(McCann等,2018 :https://arxiv.org/abs/1806.08730; Raffel等,2020:https://jmlr.org/papers/v21/20-074.html ; Paolini等,2021:https://openreview.net/forum?id=US-TP-xnXI)。在這兩種場景中,這些模型能够從其所有預先訓練的知識中受益,並且無需從頭開始學習任何新參數,從而提高了樣本效率。

    在極端情况下,如果不對參數進行微調,則根據預訓練目標來構架目標任務,可以使用特定於任務的提示和少量任務樣本來實現零鏡頭或少鏡頭學習(Brown等人,2020:https://papers.nips.cc/paper/2020/file/1457c0d6bfcb4967418bfb8ac142f64a-Paper.pdf)。但是,盡管可以進行這樣的少量學習,但這並不是使用這種模型的最有效方法(Schick和Schütze,2020年:https://arxiv.org/abs/2009.07118;有關簡要概述,請參閱此文章)。沒有更新的學習需要一個巨大的模型,因為該模型需要完全依靠其現有知識。該模型可用的信息量也受到其上下文窗口的限制,並且顯示模型的提示需要仔細設計。

    檢索增强(有關概述,請參閱本文:https://ruder.io/research-highlights-2020/#2-retrieval-augmentation)可用於减輕外部知識的存儲負擔,而符號方法可用於教授類似於任務特定的模型規則(Awasthi等人,2020年:https://openreview.net/forum?id=SkeuexBtDr)。預先訓練的模型也將變得更大,更强大,並且可能會進行行為上的微調,以使其在零樣本場景下錶現出色。但是,如果不進行微調,模型最終適應新任務的能力將受到限制。

    因此,對於大多數實際場景而言,最好的前進路徑無疑是使用前面各節中描述的方法對模型參數的全部或子集進行微調。 此外,我們將越來越多地看到預訓練模型的生成能力。雖然當前的方法通常集中於修改模型的自然語言輸入,例如通過自動提示設計(Schick和Schütze,2020:https://arxiv.org/abs/2009.07118),但這是調節此類自然輸出的最有效方法。模型可能會直接作用於其隱藏的錶示上(Dathathri等人,2020:https://openreview.net/forum?id=H1edEyBKDS;請參閱Lillian Weng的文章 以了解可控文本生成方法的概述:https://lilianweng.github.io/lil-log/2021/01/02/controllable-neural-text-generation.html)。


减輕微調的不穩定性

    微調預訓練模型的一個實際問題是,不同訓練之間的性能可能會發生巨大變化,尤其是在小型數據集上(Phang等人,2018:https://arxiv.org/abs/1811.01088)。Dodge等人(2020年:https://arxiv.org/abs/2002.06305)發現,輸出層的權重初始化和訓練數據的順序都會導致性能變化。由於不穩定通常在訓練的早期就很明顯,因此他們建議在訓練20-30%之後盡早停止最沒有希望的訓練。Mosbach等(2021:https://openreview.net/forum?id=nzpLWnVAyah)另外建議在調整BERT時使用較小的學習率並增加epoch數。

    最近的許多方法試圖通過依靠基於對抗或信任區域的方法來减輕微調過程中的不穩定性(Zhu等人,2019:https://openreview.net/forum?id=BygzbyHFvB;Jiang等人,2020:https://www.aclweb.org/anthology/2020.acl-main.197/;Aghajanyan等人,2021:https://openreview.net/forum?id=OQ08SN70M1V)。此類方法通常使用限制更新步驟之間差异的正則化項來增加微調損耗。

    根據上一節的內容,我們可以提出另一種建議以最小化微調過程中的不穩定性:通過將目標任務以LM的形式進行框架或使用行為微調,避免在小型數據集的目標任務上使用隨機初始化的輸出層在特定於任務的微調之前對輸出層進行微調。因此,文本到文本模型對於在小型數據集上進行微調更為健壯,但它們在“少樣本”場景中會遇到不穩定性,並且對即時和少樣本很敏感(Zhao等人,2021年:https://arxiv.org/abs/2102.09690)。

    總體而言,隨著模型越來越多地用於具有較少樣本的具有挑戰性的任務,因此開發對可能的變化具有魯棒性並且可以可靠地進行微調的方法至關重要。

掃描下方二維碼可以訂閱哦!

DeepLearning_NLP

深度學習與NLP

       商務合作請聯系微信號:lqfarmerlq

版权声明:本文为[深度學習與NLP]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210918160442428d.html