小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

NLP領域中的遷移學習現(xiàn)狀

 hlhq1 2019-09-03

NAACL 2019 tutorial 完整呈現(xiàn)

翻譯 | 栗 峰  

校對 | 楊曉凡

轉(zhuǎn)載自公眾號 | AI科技評論



在過去一年多的時間里,以預訓練模型形式進行的遷移學習已經(jīng)成為NLP領域的主流,許多任務的基準都因而得到極大地提升。然而事實上遷移學習在NLP中并不是最近才出現(xiàn)的。
 其中一個例子便是命名實體識別(NER)任務的進展,如下圖所示:

圖 1:隨時間推移在CoNLL-2003上的命名實體識別(NER)性能
縱觀其歷史,從早期具有輔助任務的自監(jiān)督學習(Ando和Zhang,2005)、短語和單詞簇(Lin和Wu,2009),到近幾年的語言嵌入模型(Peters等人, 2017)和預訓練語言模型(Peters,Akbik,Baevski等人),NER這個task中重要的改進都具備了不同形式的遷移學習。
在當前的自然語言處理領域中,也同樣普遍存在著不同類型的遷移學習。這大致可以從三個維度進行分類:a)源設置和目標設置是否處理相同的任務;b)源域和目標域是否有相同的屬性;c)task學習順序是否相同。

圖 2:NLP中轉(zhuǎn)移學習的分類(Ruder, 2019)
到目前為止,序列遷移學習的形式上有了很大的變化。通常的做法是,使用你選擇的方法對一個大型文本語料庫中的未標記數(shù)據(jù)進行預訓練,然后使用下面所示的標記數(shù)據(jù)對這些表示方法進行調(diào)整,對于這些標記數(shù)據(jù)檢查其設定目標的工作如下所示。
序列遷移學習是目前改進最大的一種形式。一般的做法是先使用你選擇的方法在大規(guī)模未標注文本語料庫上進行預訓練,然后使用標注數(shù)據(jù)將這些表示應用到一個有監(jiān)督的目標任務上。如下所示: 

圖 3:序列遷移學習的一般過程

我們將在本文介紹 NLP 領域中遷移學習的現(xiàn)狀。本文是NAACL 2019 關于遷移學習的 tutorial 內(nèi)容的擴展。當時的 tutorial 是 Matthew Peters、Swabha Swayamdipta、Thomas Wolf 和本文作者 Sebastian Ruder 組織策劃的。在這篇文章中, Ruder 強調(diào)了一些在這個領域中的見解和收獲,并根據(jù)最近的工作進展更新了一部分資料。
在本文中,我們對遷移學習的定義為:
 遷移學習是一種從源設置(source setting)中提取知識,然后應用到不同目標設置(target setting)的方法。
 下圖可以形象地說明:

圖4:遷移學習過程

一、主要的研究課題

在應用這種范式的過程中,我們可以觀察到以下幾個主要的研究課題。
1、單詞表征
隨著時間推移、技術發(fā)展,單詞表征也更多地聯(lián)系上下文的語義。像 word2vec 這樣的早期方法 (Mikolov 等人,2013) 為每個單詞學習了單獨的表征,但與上下文沒有聯(lián)系。后來的方法就開始將這些表征的尺度拓展到了句子和文本級別 (Le 和 Mikolov, 2014;Conneau 等人,2017)。當前的方法能夠基于單詞的上下文不同而學到不同的表征 (McCann 等人,2017; Peters 等人,2018)。
2、LM預訓練
許多成功的預訓練方法都是基于語言建模(LM)的變體。LM 的優(yōu)點是它不需要任何人工注釋,并且許多語言都有足夠的文本資料學出一個不錯的模型 d。此外,LM 是多用途的,可以通過各種目標函數(shù),學習句子和單詞的表征。
3、由淺入深
在過去的幾年里,NLP 領域中最先進的模型變得越來越深入。僅僅兩年前,大多數(shù)任務上表現(xiàn)最佳的模型都還是 2-3 層的深度 BiLSTM,只有機器翻譯領域表現(xiàn)最好的模型是與眾不同的 16 層 (Wu 等人,2016)。相比之下,目前的模型如 BERT-Large 和 GPT-2 由 24 個 Transformer 模塊組成,而最新的模型甚至會更深。
4、預訓練vs目標設定
預訓練和目標任務的選擇密切相關。例如,句子的表達對于單詞級別的預測并沒有用,而基于詞組的預訓練對于詞組級的預測是重要的??偟膩碚f,為了獲得最佳的目標性能,而選擇類似的預訓練任務是有益的。

二、預訓練

1、為什么語言建模會如此有效?
預訓練語言模型的取得了驚人的成功。語言建模成功的一個原因可能是,它是一項非常困難的工作,即使對于人類來說也不例外。為了有機會解決這個難題,模型需要學習語法,語義以及某些世界常識。給定足夠的數(shù)據(jù),大量參數(shù)和足夠的計算能力,模型就可以有不錯的學習成果。根據(jù)過往的實驗來看,語言建模比翻譯或自動編碼等其它預訓練工作更有效 (Zhang,Wang 等人)。
最近對人類語言的預測率失真 (PRD) 的分析 (Hahn and Futrell, 2019) 研究表明,人類語言和語言建模都具有無窮高的統(tǒng)計復雜性,但語言建模可以在較低層次上模仿逼近人類語言。這一觀察結果有兩個啟示:1)我們可以用相對較小的模型以獲得較為精準的結果;2)我們的模型有很大的拓展?jié)摿?。對于這兩種啟示,我們都有充足證據(jù),我們可以在下一節(jié)中看到。
2、樣本效率
預訓練的一個主要好處就是它減少了對有標注數(shù)據(jù)的需求。在實際使用中,與非預訓練模型相比,遷移學習模型通常只需要十分之一甚至更少的樣本數(shù)量就達到類似的表現(xiàn),如下圖所示 (Howard 和 Ruder, 2018)。

圖 5:從零開始訓練的模型(藍色)與分別對標記目標數(shù)據(jù) (橙色) 和未標記目標數(shù)據(jù) (綠色) 進行微調(diào)的兩個預訓練模型 (紅色) 的性能 (Howard 和 Ruder, 2018)。
3、增大預訓練規(guī)模
通常可以通過同時增加模型參數(shù)和預訓練數(shù)據(jù)量的方式來改善預訓練表征。但隨著預訓練數(shù)據(jù)量的增長,回報率開始下降。然而,如下圖所示的當前的性能曲線并不表示我們已達到了穩(wěn)定狀態(tài)。因此,我們期待可以在更多數(shù)據(jù)基礎上訓練出更大的模型。

圖 6:平均 GLUE 數(shù)據(jù)與預訓練的爬行數(shù)據(jù)量對比(Baevski 等,2019)。
最近的例子是 ERNIE 2.0,XLNet,GPT-2 8B 和 RoBERTa。尤其是后者發(fā)現(xiàn),簡單地對 BERT 進行更長時間和更多數(shù)據(jù)的訓練就可以得到更好的結果,而對 GPT-2 8B 進行更長時間和更多數(shù)據(jù)的訓練則可以減少語言建模數(shù)據(jù)集上的困惑度 (盡管幅度很小)。

4、跨語言預訓練

預訓練的一個主要作用是它可以幫助我們跨越數(shù)字語言間鴻溝,使我們能夠為全世界超過 6000 種語言都學習到 NLP 模型。

跨語言學習的工作大多集中在訓練不同語言中的單詞嵌入,并學習如何使它們之間匹配度更高 (Ruder 等人,2019);同樣地,我們也可以對上下文表征做同樣的事情(Schuster 等人,2019)。

另一種常見方法是共享子單詞詞匯表并在多種語言上訓練一個模型(Devlin,Artetxe,Schwenk,Mulcaire,Lample 和 Conneau 等人,2019)。雖然這很容易實現(xiàn),并且是一個很強大的跨語言基線,但它導致資源配置較低的語言代表性不足(Heinzerling 和 Strube,2019)。特別是多語言 BERT 已成為備受關注的話題(Pires,Wu 和 Dredze 等人,2019),雖然它有很好的零樣本學習表現(xiàn),但專門的單語模型仍然是具有極大競爭力的,同時也更有效率 (Eisenschlos 等人,2019)。

5、實際權衡

預訓練很費錢。

我們在教程中使用的 Transformer-XL 樣式模型的預訓練在 8 個 V100 gpu 上花費了 5-20 小時 (如果是 1 個 V100 那么就要花費幾天的時間) 才能達到一個好的效果。因此,共享預訓練的模型非常重要。

除了需要為 transformer 的學習速率預熱外,預訓練對超參數(shù)的選擇并不怎么挑剔。一般來說,如果數(shù)據(jù)集足夠大,模型就不應該有足夠的容量來進行過度擬合。掩蔽語言建模 (如 BERT 中所述) 的訓練速度通常比標準 LM 慢 2-4 倍,因為掩蔽一小部分單詞對應著只有一小部分的訓練指導信號。

三、表征中都有什么

我們已經(jīng)證明,表征可以用來預測某些語言現(xiàn)象,如翻譯或句法層次的匹配。使用語法進行預訓練,能夠取得較好的效果;即使沒有明顯地對語法進行編碼,表征仍然可以學習到一些語法概念 (Williams 等人,2018)。

最近的工作進一步表明,當前最先進的模型可以有效地蒸餾出語法知識 (Kuncoro 等人.,2019)。網(wǎng)絡架構通常決定了表征的內(nèi)容。例如,已經(jīng)觀察到了 BERT 能夠捕捉語法 (Tenney 等人)。對于捕捉到的信息,不同的模型架構會表現(xiàn)出不同的層間變化趨勢。

圖 7:探究工作一般用于設置研究語境詞表示中的語言知識 (Liu 等人,2019)

模型捕獲的信息還取決于你如何看待它:可視化激活或是注意力權重能提供模型知識的總體情況,但只能針對幾個樣本進行分析;如果在學習到的表征基礎上訓練一個分類器作為探針,用它來預測某些屬性,這種方法可以發(fā)現(xiàn)語料庫級別的一些具體特點,但也可能引入探針本身帶來的偏倚;最后,網(wǎng)絡對照試驗對于改進模型非常有用,但得到的結論可能會僅限于當前的任務。

四、適配

為了使預訓練模型適應目標任務,我們可以做出若干不同方向上的決策:架構修改,優(yōu)化方案以及是否要獲得更多的學習信號。

1、架構修改

對于架構修改,我們有兩個選項:

a) 保持預訓練的模型內(nèi)部不變

簡單的做法可以是在預訓練的模型之上添加一個或多個線性層,通常是在 Bert 基礎上增加?;蛘呶覀円部梢允褂媚P洼敵鲎鳛榱硪粋€模型的輸入。當目標任務需要預訓練的嵌入有一些交互作用但目前的預訓練模型執(zhí)行不了時,這通常是有幫助的,例如以 BERT 為預訓練模型但需要詞匯表征或建立跨句子關系模型。

b) 修改預先訓練的模型內(nèi)部架構

我們希望這樣做的原因之一可能是為了適應結構不同的設定目標,例如一個具有多個輸入序列的任務。在這種情況下,我們可以使用預訓練的模型盡可能初始化結構不同的設定模型。

我們還可以應用于特定項目的修改,例如添加、跳過或殘余連接或警示。最后,修改目標任務的參數(shù)可以通過在預訓練的模型層之間添加瓶頸模塊 (適配器)來減少需要精細調(diào)整的參數(shù)數(shù)量(Houlsby,Stickland 和 Murray 等人,2019)。

圖 8:Transformer模塊 (左) 中使用的適配器層 (右)(Houlsby 等人,2019 年)

五、優(yōu)化方案

在優(yōu)化模型方面,我們需要選擇要更新哪些權重,以及何時、如何更新它們? 

1、要更新哪些權重

對于權重更新,我們可以選擇微調(diào)或者不微調(diào)(預訓練權重):

a)不要改變預訓練的權重(特征提?。?/span>

在實際應用中,很多人會在預訓練表征的基礎上訓練一個線性分類器。如果想要獲得最好的性能,通常就不僅使用頂層的表征,而要學習層表征的線性組合 (Peters 等人,2018, Ruder 等人,2019)。另一個做法是,預訓練的表征可以作為下游模型中的特性。當添加適配器時,只訓練適配器層。

圖 9:在單獨的下游模型中使用預訓練的模型作為特征

b)改變預訓練過程中的權重(微調(diào))

采用預訓練的權值作為下游模型參數(shù)的初始化值。然后,在適應階段對整個預訓練架構進行訓練。

2、如何以及何時更新權重

選擇順序和如何更新權重的主要目的是要避免覆蓋有用的預訓練的信息并最大化正遷移。與此相關的是災難性遺忘的概念 (McCloskey&Cohen,1989;French,1999),是指一個模型忘記了它最初訓練的任務。在大多數(shù)設置中,我們只關心目標任務的性能,但這可能因應用場合的不同而有所不同。

更新我們模型的參數(shù)的一個指導原則是,在時間上、強度上或與預訓練的模型相比,自上而下地逐步更新:

a) 時間上的逐步更新(凍結法)

對不同分布和不同任務的數(shù)據(jù)同時進行所有層的訓練可能會導致性能不穩(wěn)定,產(chǎn)生的解決方案較差。相反,我們單獨訓練網(wǎng)絡中不同的層,讓它們有時間適應新的任務和數(shù)據(jù)。這可以追溯到早期深層神經(jīng)網(wǎng)絡的分層訓練 (Hinton 等人,2006;Bengio 等人,2007)。最近的方法 (Felbo 等人,2017;Howard 和 Ruder,2018 年;Chronopoulou 等,2019 年) 的變化主要在于共同訓練的層的選擇不同。尚未對 transformer 模型的解凍進行詳細的研究。

b) 強度上的逐步更新 (降低的學習率)

我們希望通過降低學習率,以避免覆蓋有用的信息。較低的學習率在較低層次 (因為它們會捕捉到很多的普遍信息)、訓練早期 (因為模型仍然需要適應目標分布) 和訓練后期 (當模型接近結尾時) 尤為重要。為此,我們可以使用判別性微調(diào) (Howard 和 Ruder,2018),它降低了每一層的學習速度,如下所示。

圖 10:判別性微調(diào) (Howard 和 Ruder,2018 年)

為了在早期的訓練中保持較低的學習率,可以使用三角學習速率計劃,也就是 transformer 的學習率預熱。(Liu 等人,2019) 最近指出,在訓練的早期階段,預熱可以減少差異 。

c)逐步更新 vs 預訓練模型(正則化)

最大限度地減少異常遺忘的一種方法是鼓勵目標模型參數(shù)使用正則化項,減小與預訓練模型的參數(shù)的差異性 (Wiese 等人,CoNLL 2017,Kirkpatrick 等人,PNAS 2017)。

六、權衡與實際考慮

一般來說,需要從頭開始訓練的參數(shù)越多訓練速度就越慢。特征提取需要添加比微調(diào)更多的參數(shù) (peters 等人,2019),因此訓練速度通常較慢。

然而,當一個模型需要適應很多的任務時,特征提取更節(jié)省空間,因為它只需要在內(nèi)存中存儲一個預先訓練過的模型的副本。適配器通過為每個任務添加少量的附加參數(shù)來達到平衡。

就性能而言,沒有一種適配器方法能在所有設置中都帶來帶來最好的表現(xiàn)。如果源和目標任務不一致,特征提取似乎更可取 (Peters 等人,2019)。否則,特征提取和微調(diào)通常執(zhí)行類似的操作,這取決于用于超參數(shù)調(diào)整的預算 (微調(diào)通常需要對超參數(shù)進行更廣泛的搜索和嘗試)。據(jù)說,transformer 比 lstms 更容易微調(diào) (對超參數(shù)不那么敏感),并且可以通過微調(diào)實現(xiàn)更好的性能。

然而,大型的預訓練模型 (如 Bert-Large) 在對小訓練集的任務進行精細調(diào)整時,往往會導致性能退化。通常顯示為「ON-off」:如下圖所示,模型要么運行良好,要么根本不起作用。想要了解這種行為的條件和原因,目前來說還是一個等待解決的研究問題。

圖 11:BERT(紅色)和 BERT 的 20 個隨機重啟的任務分數(shù)分布,在 MNLI(綠色)上進行微調(diào),每次任務的微調(diào)不超過 5k(Phang 等,2018)。

七、獲得更多的學習信號

目標任務通常都缺少資源. 我們通??梢酝ㄟ^組合多種不同的學習信號來提高遷移學習的性能。

1、提高樣本效率

如果存在相關的任務,我們可以先在相關任務上使用更多數(shù)據(jù)對模型進行微調(diào),然后再對目標任務進行微調(diào)。這尤其有助于數(shù)據(jù)有限的情況和執(zhí)行類似任務 (Phunet 等人,2018),并提高了目標任務的樣本效率 (Yogatama 等人,2019)。

2、多任務微調(diào)

或者,我們也可以根據(jù)相關任務和目標任務的要求對模型進行共同微調(diào)。這個相關的任務也可以是一個無監(jiān)督的輔助任務。語言建模是一個很好的選擇,并且已經(jīng)證明即使沒有預訓練也能起到幫助 (Rei 等人,2017 年)。任務比率可以進行選擇,逐漸減小輔助任務的比例,在訓練結束時輔助任務的比例可以減小到 0(Chronopoulou 等人,NAACL,2019 年)。語言模型微調(diào)也已經(jīng)作為一個單獨步驟使用在了 ULMFiT 中 (Howard 和 Ruder,2018)。最近,即便有很多個目標任務,多任務微調(diào)也可以帶來收益 (Liu 等人,2019;Wang 等人,2019)。

3、數(shù)據(jù)集分割

我們可以使用只在數(shù)據(jù)的某個子集上訓練的輔助任務,而不對輔助任務微調(diào)。為此,我們首先要分析模型的誤差,采用啟發(fā)式方法自動識別訓練數(shù)據(jù)中的突出子集,然后與目標任務聯(lián)合訓練輔助任務。

4、半監(jiān)督學習

我們還可以使用半監(jiān)督學習方法,通過擾亂未標記的數(shù)據(jù)來使我們的模型預測更加準確。干擾方式可以是噪聲,掩蔽(Clark 等人,2018)也可以是數(shù)據(jù)增強,(Xie 等人,2019)。

5、集成模型

為了提高性能,可以把不同超參數(shù)訓練的模型、不同預訓練模型精細調(diào)節(jié)得到的模型、乃至不同任務,不同數(shù)據(jù)集的子集上訓練的模型集成起來

6、蒸餾

最后,大型模型或模型組合可能被提煉成小型單一模型。該模型也可以更加簡單化 (Tang 等人,2019 年),也可以產(chǎn)生不同的歸納偏差 (Kuncoro 等人,2019 年)。多任務微調(diào)也可以與提煉相結合 (Clark 等人,2019)。

八、下游應用

預訓練大型模型在計算和環(huán)境影響方面的成本很高 (Strubell 等人,2019 年)。只要有可能,最好使用開源模型。如果您需要訓練自己的模型,請與社區(qū)分享您的預訓練模型。

1、框架和函數(shù)庫

為了共享和使用經(jīng)過訓練的模型,可以有不同的選擇:

Hubs

Hubs 是中央存儲庫,并能提供訪問預訓練模型的通用 API。最常見的兩個 Hub 是 TensorFlowHub 和 PyTorch Hub。Hub 通常使用起來很簡單;但是,由于模型的源代碼難以訪問,所以它們更像一個黑匣子。此外,修改預訓練模型架構的內(nèi)部結構可能會很困難。

研究者發(fā)布的檢查點模型

檢查點文件通常包含了預訓練模型的所有權重。與 Hub 相比,仍然需要創(chuàng)建模型圖,需要單獨加載模型權重。因此,檢查點文件比 Hub 模塊更難使用,但它可以讓您完全控制模型內(nèi)部。

第三方函數(shù)庫

像是 AllenNLP,fast.ai 和 pytorch-transformers 這類的第三方函數(shù)庫,可以輕松訪問預訓練模型。此類庫通??蓪崿F(xiàn)快速實驗,并涵蓋了許多經(jīng)典的示例以進行遷移學習。

九、有待解決的問題及未來發(fā)展方向

1、預訓練語言模型的缺陷

預訓練的語言模型仍然不擅長細粒度的語言任務 (Liu 等人,2019)、層次句法推理 (Kuncoro 等人,2019) 和常識(Zellers 等人,2019)。

在自然語言生成方面仍然有所欠缺,特別是在長期的維系、關系和連貫性方面。微調(diào)的時候它們更傾向于過于過度擬合表面形式信息,目前仍然被視為是「效率極高的表面學習者」。

正如我們前面所指出的,特別是對少量數(shù)據(jù)進行微調(diào)的大型模型很難進行優(yōu)化,而且存在高度的差異性。目前經(jīng)過預訓練的語言模型非常龐大。蒸餾和剪枝是處理這一問題的兩種方法。

2、預訓練任務

雖然語言建模目標經(jīng)過試驗正名是有效的,但它也有缺陷。最近,我們看到雙向語境和詞序列的建模尤為重要。也許最重要的是,語言建模鼓勵人們關注語法和詞的共現(xiàn),并且只提供了用于理解語義和維系上下文弱信號。我們可以從其他形式的自我監(jiān)督中汲取靈感。此外,我們還可以設計專門的預訓練任務,學習某些關系 (Joshi 等人,2019 年;Sun 等人,2019)。

總的來說,很難能從原始文本中學習某種類型的信息。最新的方法就是將結構化知識 (Zhang 等人,2019;LoganIV 等人,2019) 或多模態(tài) (Sun 等人,2019;Lu 等人,2019) 引入,作為緩解這一問題的兩種潛在方式。

via: http:///state-of-transfer-learning-in-nlp/

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多