袁 君
(武漢學(xué)院 湖北·武漢 430212)
Bozinovski等人最早明確提出在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程中使用遷移學(xué)習(xí)的方法,并且給出了一個基于數(shù)學(xué)和幾何學(xué)的遷移學(xué)習(xí)模型。遷移學(xué)習(xí)作為一種機器學(xué)習(xí)的方法,就是把為任務(wù)A開發(fā)的模型作為原始模型,將其重新應(yīng)用在任務(wù)B中來開發(fā)出一套針對任務(wù)B的模型。其中任務(wù)A和任務(wù)B應(yīng)該具有一定的相關(guān)性或者相似性。其一般的過程如下圖1所示。

圖1:遷移學(xué)習(xí)的一般過程
因此在遷移學(xué)習(xí)中核心的問題是,如何找到目標任務(wù)與源任務(wù)之間的相似性,并順利的實現(xiàn)知識/經(jīng)驗的遷移。簡而言之,我們希望計算機可以利用遷移學(xué)習(xí)的方法像人一樣通過舉一反三的進行學(xué)習(xí)。圖2給出了生活中常見的遷移學(xué)習(xí)的例子。

圖2:遷移學(xué)習(xí)的例子
在過去幾年的時間里,以預(yù)訓(xùn)練語言模型為形式的遷移學(xué)習(xí)在自然語言處理中已經(jīng)無處不在,并在各種任務(wù)解決中發(fā)揮了實質(zhì)性的作用。然而,遷移學(xué)習(xí)在自然語言處理中的應(yīng)用并不是一個新進出現(xiàn)的方法。我們以命名實體識別(NER)任務(wù)的進展為例,如下圖3所示:

圖3:CoNLL-2003(英語)上的命名實體識別(NER)性能隨時間變化
縱觀其歷史,這項任務(wù)的大部分重大改進都是由不同形式的遷移學(xué)習(xí)推動的:從早期Ando等人提出的帶有輔助任務(wù)的自我監(jiān)督學(xué)習(xí)和Lin等人對短語及詞組的研究到近年來Peters等人的語言模型嵌入,以及包括近幾年P(guān)eters,Akbik,Baevski分別提出的預(yù)訓(xùn)練語言模型。
目前在自然語言處理中常見的遷移學(xué)習(xí)有不同的類型。這些可以根據(jù)以下三個維度進行大致分類:
(1)源和目標設(shè)置是否處理相同的任務(wù);
(2)源和目標領(lǐng)域的性質(zhì);
(3)學(xué)習(xí)任務(wù)的順序。
這些任務(wù)的具體分類如下圖4所示,其中順序遷移學(xué)習(xí)是到目前為止取得最大進展的方法。

圖4:遷移學(xué)習(xí)在自然語言處理中分類
順序遷移學(xué)習(xí)一般的做法是選擇合適的方法在大型的無標簽文本語料庫上進行預(yù)訓(xùn)練表征,然后用有標簽的數(shù)據(jù)將這些表征遷移到有監(jiān)督的目標任務(wù)中,如下圖5所示,其中預(yù)訓(xùn)練和適應(yīng)是該方法的核心步驟。

圖5:順序遷移學(xué)習(xí)過程
預(yù)訓(xùn)練語言模型所取得的成功是令人矚目的。語言建模成功的一個原因可能是即使對人類來說它也是一項非常困難的任務(wù)。為了有機會解決這個任務(wù),一個模型需要學(xué)習(xí)語法、語義以及關(guān)于世界的某些事實。給予足夠的數(shù)據(jù)、大量的參數(shù)和足夠的計算,一個模型可以做一個合理的工作。Zhang和Wang則驗證了相較于其他預(yù)訓(xùn)練任務(wù),語言建模在翻譯或自動編碼等方面取得了更好的效果。最近Hahn對人類語言的預(yù)測率失真(PRD)分析表明,人類語言以及語言建模具有無限的統(tǒng)計復(fù)雜性,但它可以在較低水平上得到很好的近似。這一觀察表明:(1)可以用相對較小的模型獲得良好的結(jié)果;(2)有很大的潛力來擴大模型規(guī)模。對于這兩個含義,都有經(jīng)驗性的證據(jù)。
一般來說,為了提高預(yù)訓(xùn)練的表現(xiàn),可以通過聯(lián)合增加模型參數(shù)的數(shù)量和預(yù)訓(xùn)練數(shù)據(jù)的數(shù)量來改善效果。隨著預(yù)訓(xùn)練數(shù)據(jù)量的增長,收益開始減少。然而,如下圖6所示的性能曲線,并不表明我們已經(jīng)達到了一個瓶頸。因此,可以期待看到在更多數(shù)據(jù)上訓(xùn)練的更大的模型。

圖6:使用不同數(shù)量的共同抓取數(shù)據(jù)進行預(yù)訓(xùn)練的GLUE平均得分
預(yù)訓(xùn)練的一個主要應(yīng)用方向是跨語言的預(yù)訓(xùn)練,并可以使我們?yōu)槭澜缟?000種語言建立屬于它們自己的自然語言處理模型。許多關(guān)于跨語言學(xué)習(xí)的工作如Ruder都集中在訓(xùn)練不同語言的單獨的詞嵌入,并學(xué)習(xí)如何對齊它們。同樣地,Shuster提出可以學(xué)習(xí)對齊語境表征。Devlin,Artetxe則提出了另一種常見的方法是共享一個子詞詞表,并在多種語言上訓(xùn)練一個模型。雖然這很容易實現(xiàn),而且是一個強大的跨語言基線,但Heinzerling指出它會導(dǎo)致低資源語言的代表性不足。Pires和Wu分別提出的多語種的BERT模型則成為了備受關(guān)注的主題。盡管它具有強大的零點性能,但Eisenschlos專用的單語語言模型往往具有競爭力,同時效率更高。
為了使預(yù)訓(xùn)練的模型適應(yīng)目標任務(wù),我們可以對架構(gòu)進行修改和優(yōu)化方案。
3.2.1 架構(gòu)的修改
保持預(yù)訓(xùn)練模型的內(nèi)部結(jié)構(gòu)不變。這可以簡單到在預(yù)訓(xùn)練模型的基礎(chǔ)上增加一個或多個線性層,這通常是用BERT模型來做的。但我們也可以在預(yù)訓(xùn)練模型無法為目標任務(wù)提供必要的交互時,將模型的輸出作為一個單獨的模型的輸入,例如跨度表示或跨句子關(guān)系建模任務(wù)中。
修改預(yù)訓(xùn)練模型的內(nèi)部結(jié)構(gòu)。如Houlsby和Stickland分別嘗試使用預(yù)訓(xùn)練的模型來盡可能地初始化結(jié)構(gòu)不同的目標任務(wù)模型。此外還可以應(yīng)用特定的任務(wù)修改,如增加跳過或殘留的連接或注意力。最后,修改目標任務(wù)參數(shù)可以通過在預(yù)訓(xùn)練模型的各層之間添加瓶頸模塊(“適配器”)來減少需要微調(diào)的參數(shù)數(shù)量。
3.2.2 方案的優(yōu)化
在優(yōu)化模型方面,可以選擇應(yīng)該更新哪些權(quán)重以及如何和何時更新這些權(quán)重。
(1)對于預(yù)訓(xùn)練模型的權(quán)重,可以選擇調(diào)整或不調(diào)整兩種策略。
不改變預(yù)訓(xùn)練的權(quán)重。在實踐中,線性分類器是在預(yù)訓(xùn)練的表征之上訓(xùn)練的。Ruder等人發(fā)現(xiàn)要到達最優(yōu)性能不只需要利用頂層的表征,也需要學(xué)習(xí)各層表征的線性組合來實現(xiàn)的。另外,預(yù)訓(xùn)練的表征可以作為下游模型的特征使用。當添加適配器時,只有適配器層需要加以訓(xùn)練。
改變預(yù)訓(xùn)練的權(quán)重。預(yù)訓(xùn)練的權(quán)重被用作下游模型的參數(shù)的初始化。然后在適應(yīng)階段對整個預(yù)訓(xùn)練的結(jié)構(gòu)進行訓(xùn)練。
(2)更新權(quán)重。
跟新權(quán)重的主要目的是避免覆蓋有用的預(yù)訓(xùn)練信息,并最大限度地實現(xiàn)正向轉(zhuǎn)移。McClosky曾提出災(zāi)難性遺忘的概念,即一個模型忘記了它最初訓(xùn)練的任務(wù)。同預(yù)訓(xùn)練模型相比,更新模型參數(shù)的指導(dǎo)原則是在時間上、強度上,從上到下逐步更新參數(shù)。
在時間上逐步更新。通常如果同時在所有的網(wǎng)絡(luò)層中利用不同的任務(wù)來進行訓(xùn)練會導(dǎo)致性能的不穩(wěn)定和糟糕的解決方案。因此在早起深度神經(jīng)網(wǎng)絡(luò)的分層訓(xùn)練中Hinton和Bengio都分別嘗試了分別訓(xùn)練各神經(jīng)層去適應(yīng)新的任務(wù)和數(shù)據(jù)。最近Felbo,Howard和Chronopoulou各自提出的方法多以共同訓(xùn)練的層之間不同的組合方式為主;并在最后聯(lián)合訓(xùn)練所有參數(shù)。
強度逐漸增加。通常使用較低的學(xué)習(xí)率是為了避免覆蓋有用的信息。低學(xué)習(xí)率在低網(wǎng)絡(luò)層、訓(xùn)練早期和訓(xùn)練后期尤為重要。Howard提出可以使用鑒別性的微調(diào)是每一層的學(xué)習(xí)率適度衰減。為了在訓(xùn)練前期保持較低的學(xué)習(xí)率,可以使用三角學(xué)習(xí)率計劃。Liu最近提出,預(yù)熱可以減少訓(xùn)練早期的變異。
預(yù)訓(xùn)練的語言模型在細粒度的語言任務(wù)(Liu)、層次化的句法推理(Kuncoro)和常識(Zeller)方面表現(xiàn)仍然很糟糕。它們在自然語言生成方面仍然表現(xiàn)較差,尤其是在保持語言的一貫性、關(guān)系和一致性方面。較大模型如果只利用少量數(shù)據(jù)進行微調(diào)時會使其較難優(yōu)化,并且還會出現(xiàn)高變異的情況。目前預(yù)訓(xùn)練的語言模型也非常大,因此蒸餾和修剪是處理這個問題的較好選擇。