自然語言處理中的遷移學習(下)

AIBigbull2050發表於2019-10-23
2019-10-21 21:29:35

作者:哈工大SCIR 徐嘯

賽爾筆記 | 自然語言處理中的遷移學習(下)

本文小結:本文為教程的第二篇,包含教程的 3-6 部分。

相關連結:賽爾筆記 | 自然語言處理中的遷移學習(上)

提綱

賽爾筆記 | 自然語言處理中的遷移學習(下)
  1. 介紹:本節將介紹本教程的主題:遷移學習當前在自然語言處理中的應用。在不同的遷移學習領域中,我們主要定位於順序遷移學習 sequential transfer learning 。

  2. 預訓練:我們將討論無監督、監督和遠端監督的預訓練方法。

  3. 表示捕獲了什麼:在討論如何在下游任務中使用預訓練的表示之前,我們將討論分析表示的方法,以及觀察到它們捕獲了哪些內容。

  4. 調整:在這個部分,我們將介紹幾種調整這些表示的方法,包括特徵提取和微調。我們將討論諸如學習率安排、架構修改等的實際考慮。

  5. 下游應用程式:本節,我們將重點介紹預訓練的表示是如何被用在不同的下游任務中的,例如文字分類、自然語言生成、結構化預測等等。

  6. 開放問題和方向:在最後一節中,我們將提出對未來的展望。我們將突出待解決的問題以及未來的研究方向。

3. 表示捕獲了什麼

為什麼要關心表示捕獲了什麼?

Swayamdipta, 2019

  • 在下游任務進行的外部評估

    • 複雜多樣,隨特定任務而不同

  • Language-aware representations 語言感知表示

    • 泛化到其他任務的新的輸入

    • 作為可能改進預訓練工作的中間步驟

  • 可解釋!

    • 我們得到結果的原因是否正確?

    • 發現偏見……

分析什麼?

賽爾筆記 | 自然語言處理中的遷移學習(下)
  • 嵌入

    • 單詞

    • 上下文的

  • 網路啟用

  • 變化

    • 結構 (RNN / Transformer)

    • 預訓練目標

分析方法 1:視覺化

保持嵌入/網路啟用靜態或凍結

視覺化嵌入

賽爾筆記 | 自然語言處理中的遷移學習(下)
  • 在低維(2D/3D)空間內繪製嵌入

    • t-SNE (van der Maaten & Hinton, 2008)

    • PCA projections

賽爾筆記 | 自然語言處理中的遷移學習(下)

視覺化單詞類比 (Mikolov et al. 2013)

空間關聯

賽爾筆記 | 自然語言處理中的遷移學習(下)

詞彙語義的高階檢視

只有有限的例子

與其他任務的連線尚不清楚 (Goldberg, 2017)

賽爾筆記 | 自然語言處理中的遷移學習(下)

Radford et al., 2017

  • 神經元啟用值與特徵/標籤相關

賽爾筆記 | 自然語言處理中的遷移學習(下)

Karpathy et al., 2016

  • 標識學習可識別的功能

    • 如何選擇某個神經元?難以擴充套件!

    • 可解釋 != 重要(Morcos et al., 2018)

賽爾筆記 | 自然語言處理中的遷移學習(下)
  • 流行於機器翻譯,或其他seq2seq架構:

    • 源字與目標字之間的對齊。

    • 長距離詞與詞之間的依賴(句內注意)

  • 結構上的亮點

    • 擁有複雜的注意力機制可能是一件好事!

    • 分層的

  • 解釋可能很棘手

    • 只有幾個例子?

    • Robust corpus-wide trends? Next !

Attention is not explanation | Attention is not not explanation

分析方法 2: 行為探測器

賽爾筆記 | 自然語言處理中的遷移學習(下)
  • RNN-based 語言模型

    • 主謂關係中的數字一致性 number agreement in subject-verb dependencies

    • 自然的、不自然的或不合語法的句子

    • 對輸出困惑度進行評估

  • RNNs優於其他非神經方法的 Baseline

賽爾筆記 | 自然語言處理中的遷移學習(下)
  • 當顯式地使用語法訓練時,效能會提高(Kuncoro et al. 2018)

Linzen et al., 2016; Gulordava et al. 2018; Marvin et al., 2018

  • 這種 probe 可能易受共現偏差的影響

    • “dogs in the neighborhood bark(s)”

    • 以前的句子可能和原來的太不一樣了…

分析方法 3: Classifier Probes

保持嵌入/網路啟用並在頂部訓練一個簡單的監督模型

探測表層特徵

  • 給定一個句子,預測屬性如

    • 長度

    • 這個句子裡有一個單詞嗎?

  • 給出句子中的單詞的預測屬性,例如:

    • 以前見過的詞,與語言模型形成對比

    • 詞在句子中的位置

  • 檢查記憶的能力

    • 訓練有素的、更豐富的體系結構往往執行得更好

    • 在語言資料上訓練能記憶的更好

Zhang et al. 2018; Liu et al., 2018; Conneau et al., 2018

探測詞法,句法,語義

賽爾筆記 | 自然語言處理中的遷移學習(下)
  • 詞法學

  • 詞級別的語法

    • POS tags, CCG supertags

    • Constituent parent, grandparent

  • 部分語法

    • 依賴關係

  • 部分語義

    • 實體關係

    • 共指

    • 角色

Adi et al., 2017; Conneau et al., 2018; Belinkov et al., 2017; Zhang et al., 2018; Blevins et al., 2018; Tenney et al. 2019; Liu et al., 2019

探測分類結果

  • Contextualized > non-contextualized

    • 尤其是在句法任務上

    • 更緊密的語義任務表現

    • 雙向上下文很重要

  • BERT (large) 幾乎總是獲得最佳效果

    • Grain of salt: 不同的上下文表示在不同的資料上訓練,使用不同的架構……

探測網路各層

賽爾筆記 | 自然語言處理中的遷移學習(下)

Fig. from Liu et al. (NAACL 2019)

李如 對該篇文章做了簡潔的總結

  • CWRs(上下文詞表徵)編碼了語言的哪些特徵?

    • 在各類任務中,BERT>ELMo>GPT,發現“bidirectional”是這類上下文編碼器的必備要素

    • 相比於其他任務,編碼器們在NER和糾錯任務表現較差 => 沒有捕獲到這方面資訊

    • 在獲得CWRs編碼後,再針對任務增加MLP(relu)或者LSTM會提升效果

    • 引出了問題:什麼時候直接fine-tune編碼器?什麼時候freeze編碼器,增加task-specific layer?

  • 編碼器中不同層的遷移性是怎樣變化的?

    • 對於ELMo(LSTM)來說,靠前的層更 transferable,靠後的層更 task-specific

    • 對於 Transformer 來說,靠中間的層更 transferable ,但是把各個層加權起來的效果會更好

    • 模型需要進行 trade off ,在任務上表現越好,遷移性越差

  • 預訓練任務會對任務和遷移性有怎樣的影響?

    • 雙向語言模型預訓練出來平均效果越好

    • 預訓練任務越接近特定任務,在特定任務的表現越好

    • 預訓練資料越多,表現越好

以上引用其總結的三點並稍作修改

  • RNN 的各層:通用語言屬性

    • 最低層:形態學

    • 中間層:語法

    • 最高層次:特定於任務的語義

  • Transformer 的各層

    • 不同任務的不同趨勢;mi ddle-heavy

    • 參見Tenney et. al., 2019

探測預訓練目標

賽爾筆記 | 自然語言處理中的遷移學習(下)

Zhang et al., 2018; Blevins et al., 2018; Liu et al., 2019;

  • 語言建模優於其他非監督和監督目標。

    • 機器翻譯

    • 依存分析

    • Skip-thought 預測上下文的句子

  • 低資源時(訓練資料的大小)可能導致相反的趨勢。

迄今為止我們學到了什麼?

  • 表徵是對某些語言現象的預測:

    • 翻譯中的對齊,句法層次結構

  • 有語法和沒有語法的預訓練:

    • 有語法的預訓練具有更好的效能

    • 但是如果沒有語法,至少還是會學到些語法概念 (Williams et al. 2018)

  • 網路架構決定了表示中的內容

    • 句法與Bert Transformer (Tenney et al., 2019; Goldberg, 2019)

    • 跨架構的不同的逐層趨勢

關於探測器的開放問題

  • 一個好的探測器應該尋找什麼資訊?

    • Probing a probe!

  • 探測效能告訴我們什麼?

    • 很難綜合各種基線的結果…

  • 它本身會帶來一些複雜性嗎

    • 線性或非線性分類

    • 行為:輸入句子的設計

  • 我們應該使用 probe 作為評估指標嗎?

    • 可能會破壞目的…

分析方法 4:改變模型

賽爾筆記 | 自然語言處理中的遷移學習(下)

Li et al., 2016

  • 逐步刪除或遮蔽網路元件

    • 詞嵌入維度

    • 隱藏單位

    • 輸入——單詞/短語

表示捕捉到了什麼?

  • 這要看你怎麼看了!

    • 視覺化:

      • 鳥瞰

      • 很少的樣本——可能會讓人想起 cherry-picking (最佳選擇)

    • 調查:

      • 發現語料層面的特定屬性

      • 可能會引入自己的偏見…

    • 網路修改:

      • 對改進建模很有幫助

      • 可以是特定於任務的

  • 分析方法作為輔助模型開發的工具!

可解釋性和可遷移性對下游任務而言是重要的。

4. 調整

如何調整預訓練模型

我們可以在幾個方向上做決定:

  • 結構的修改?

    • 為了適應,需要對預訓練的模型體系結構進行多大的更改

  • 最佳化方案?

    • 在適應過程中需要訓練哪些權重以及遵循什麼時間表

  • 更多訊號:弱監督、多工和整合

    • 如何為目標任務獲取更多的監督訊號

4.1 結構

兩個通用選項:

  • 保持預訓練模型內部不變

    • 在頂部新增分類器,在底部新增嵌入,將輸出作為特徵

  • 修改預訓練模型的內部架構

    • 初始化編碼器-解碼器、特定於任務的修改、介面卡

4.1.1 – 結構:保持模型不變

賽爾筆記 | 自然語言處理中的遷移學習(下)

常規工作流:

  • 如果對目標任務無效,則刪除預訓練的任務頭

    • 示例:從預訓練語言模型中刪除softmax分類器

    • 不總是需要:一些調整方案重用了預訓練的目標/任務,例如用於多工學習

  • 在預訓練模型的頂部/底部新增特定於任務的目標層


賽爾筆記 | 自然語言處理中的遷移學習(下)
  • 簡單:在預訓練的模型上新增線性層

賽爾筆記 | 自然語言處理中的遷移學習(下)
  • 更復雜的:將模型輸出作為單獨模型的輸入

  • 當目標任務需要預訓練嵌入中所沒有的互動時,通常是有益的

4.1.2 – 結構:修改模型內部

各種各樣的原因:

賽爾筆記 | 自然語言處理中的遷移學習(下)
  • 適應結構上不同的目標任務

    • 例如:使用單個輸入序列(例如:語言建模)進行預訓練,但是適應多個輸入序列的任務(例如:翻譯、條件生成……)

    • 使用預訓練的模型權重儘可能初始化結構不同的目標任務模型

    • 例如:使用單語語言模型初始化機器翻譯的編碼器和解碼器引數 (Ramachandran et al., EMNLP 2017; Lample & Conneau, 2019)

賽爾筆記 | 自然語言處理中的遷移學習(下)
  • 特定於任務的修改

    • 提供對目標任務有用的預訓練模型

    • 例如:新增跳過/殘差連線,注意力(Ramachandran et al., EMNLP 2017)

賽爾筆記 | 自然語言處理中的遷移學習(下)
  • 使用較少的引數進行調整:

    • 更少的引數進行微調

    • 在模型引數不斷增大的情況下,非常有用

    • 例如:在預訓練模型的層之間新增瓶頸模組(“介面卡”) (Rebuffi et al., NIPS 2017;CVPR 2018)

Adapters

  • 通常使用剩餘連線與現有層並行的層相連

  • 每層之間都放置時效果最佳(底層效果較小)

  • 不同的操作(卷積,自我注意)是可能的

  • 特別適合 Transformer 等模組化架構 (Houlsby et al., ICML 2019; Stickland and Murray, ICML 2019

賽爾筆記 | 自然語言處理中的遷移學習(下)

Adapters (Stickland & Murray, ICML 2019)

  • 多頭的 關注(MH;跨層共享)與BERT的 self-attention (SA)層並行使用

  • 兩者都被加在一起,並輸入到 Layer-norm (LN)中

4.2 最佳化

涉及到最佳化本身的幾個方向:

  • 選擇我們應該更新的權重

    • Feature extraction, fine-tuning, adapters

  • 選擇如何以及何時更新權重

    • From top to bottom, gradual unfreezing, discriminative fine-tuning

  • 考慮實事求是的權衡

    • Space and time comple xity, performance

4.2.1 – 最佳化: 什麼權重?

主要問題:調整還是不調整(預先訓練好的重量)?

  • 不改變預先訓練的重量

    • Feature extraction

      • (預訓練的)權重被凍結

賽爾筆記 | 自然語言處理中的遷移學習(下)
    • 線性分類器是在預訓練的表示上進行訓練的

賽爾筆記 | 自然語言處理中的遷移學習(下)
    • 不要只使用頂層的特性!

    • 學習層的線性組合 (Peters et al., NAACL 2018, Ruder et al., AAAI 2019)

賽爾筆記 | 自然語言處理中的遷移學習(下)
      • 或者,在下游模型中使用預先訓練的表示作為特性

    • Adapters

賽爾筆記 | 自然語言處理中的遷移學習(下)
    • 在現有層之間新增的特定於任務的模組

    • 只有 adapters 被訓練

  • 改變預訓練權重

    • fine-tuning

      • 採用預訓練的權重作為下游模型引數的初始化

      • 整個預訓練的體系結構在適應階段進行訓練

4.2.2 – 最佳化:什麼方式?

賽爾筆記 | 自然語言處理中的遷移學習(下)

我們已經決定要更新哪些權重,但是以什麼順序以及如何更新它們?

動機:我們希望避免覆蓋有用的預訓練資訊,並最大化積極的知識遷移

相關概念:災難遺忘 (McCloskey&Cohen,  1989; French,  1999) :一個模型忘記了它最初受過訓練的任務

指導原則:從上到下更新

  • 時間上逐步更新:凍結

  • 強度上逐步更新:改變學習速度

  • Progressively vs. the pretrained model 逐步更新 vs 預訓練模型:正則化

最佳化:凍結

  • 主要直覺:在不同分佈和任務的資料上同時訓練所有層可能導致不穩定的不良解決方案

  • 解決方案:單獨訓練每一層,使他們有時間適應新的任務和資料。

  • 回到早期深度神經網路的分層訓練(Hinton et al., 2006; Bengio et al., 2007)

相關例項

  • 凍結頂層以外的所有層 (Long et al., ICML 2015)

  • Chain-thaw (Felbo et al., EMNLP 2017):每次訓練一層

    • 先訓練新增的層

    • 再自底向上,每次訓練一層(不再訓練新增的那一層,其餘層以會在不訓練時被同時凍結)

    • 訓練所有層(包括新增層)

  • Gradually unfreezing (Howard & Ruder, ACL 2018): 逐層解凍(自頂向下)

  • Sequential unfreezing (Chronopoulou et al., NAACL 2019): 超引數控制微調輪數

    • 微調 n 輪次新增引數(凍結除了新增層以外的層)

    • 微調 k 輪次嵌入層以外的預訓練層

    • 訓練所有層直到收斂

4.2.2 – 最佳化:學習率

主要想法:使用更低的學習率來避免覆蓋掉有用的資訊

在哪裡以及在什麼時候?

  • 低層(捕獲一般資訊)

  • 訓練初期(模型仍需適應目標分佈)

  • 訓練後期(模型接近收斂)

相關例項 (Howard & Ruder, ACL 2018)

較低層捕獲一般資訊 → 對較低層使用較低的學習速率

Discriminative fine-tuning

較低的層捕獲一般資訊對較低的層次使用較低的學習率

賽爾筆記 | 自然語言處理中的遷移學習(下)

Triangular learning rates

快速移動到一個合適的區域,然後隨著時間慢慢收斂

賽爾筆記 | 自然語言處理中的遷移學習(下)
    • 也被稱為 “learning rate warm-up”

    • 用於 Transformer (Vaswani et al., NIPS 2017) 和 Transformer-based methods (BERT, GPT) 等

    • 有利於最佳化;更容易擺脫次優區域性極小值

4.2.2 – 最佳化:正則化

主要思想:透過使用正則化項 ,鼓勵目標模型引數接近預先訓練的模型引數,將災難性遺忘最小化。

簡單的方法:將新引數正則化,不要與預訓練的引數偏離太多 (Wiese et al., CoNLL 2017)

賽爾筆記 | 自然語言處理中的遷移學習(下) 賽爾筆記 | 自然語言處理中的遷移學習(下)

更高階(elastic weight consolidation; EWC)(Kirkpatrick et al., PNAS 2017)

基於 Fisher 資訊矩陣 F , 關注對預訓練任務重要的引數

賽爾筆記 | 自然語言處理中的遷移學習(下) 賽爾筆記 | 自然語言處理中的遷移學習(下)

EWC在持續學習方面有缺點:

可能過度約束引數

計算成本與任務數量成線性關係(Schwarz et al., ICML 2018)

如果任務相似,我們也可以鼓勵基於交叉熵的源和目標預測接近,類似於蒸餾:

賽爾筆記 | 自然語言處理中的遷移學習(下)

4.2.3 – 最佳化:權衡

在選擇更新哪些權重時,需要權衡以下幾個方面:

A. 空間複雜度

  • 特定於任務的修改、附加引數、引數重用

賽爾筆記 | 自然語言處理中的遷移學習(下)

B. 時間複雜度

  • 訓練時間

賽爾筆記 | 自然語言處理中的遷移學習(下)

C. 效能

  • 經驗法則:如果任務源和目標任務不相似*,使用特徵提取 (Peters et al., 2019)

  • 否則,特徵提取和微調常常效果類似(此時用微調更好)

  • 在文字相似性任務上對 BERT 進行微調,效果明顯更好

  • 介面卡實現了與微調相比具有競爭力的效能

  • 有趣的是,Transformer 比 LSTMs 更容易微調(對超引數不那麼敏感)

*不相似:某些能力(例如句子間關係建模)對目標任務是有益的,但預訓練的模型缺乏這些能力能(參見後面的更多內容)

4.3 – 獲得更多訊號

目標任務通常是低資源任務。我們經常可以透過組合不同的訊號,提高遷移學習的效果:

  • 在單個適應任務上微調單個模型

    • 基本原理:用一個簡單的分類目標對模型進行微調

  • 其他資料集和相關任務中收集訊號

    • 微調與弱監督,多工和順序調整

  • 整合模型

    • 結合幾個微調模型的預測

4.3.1 – 獲得更多訊號:基本的 fine-tuning

微調文字分類任務的簡單例子:

  • 從模型中提取單個定長向量

    • 第一個/最後一個令牌的隱藏狀態,或者是隱藏狀態的平均值/最大值

  • 使用附加的分類器投影到分類空間

  • 用分類目標函式訓練

4.3.2 – 獲得更多訊號:相關資料集/任務

  • 順序調整 Sequential adaptation

    • 對相關資料集和任務進行中間微調

  • 與相關任務進行多工微調

    • 如 GLUE 中的 NLI 任務

  • 資料集分割

    • 當模型在特定的資料片上始終表現不佳時

  • 半監督學習

    • 使用未標記的資料來提高模型的一致性

4.3.2 – 獲得更多訊號:順序調整

在相關高資源資料集進行微調

  1. 在擁有更多的資料的相關任務對模型進行微調

  2. 在目標任務上微調資料集

  • 對於資料有限並且有類似任務的任務尤其有用(Phang et al., 2018)

  • 提高目標任務的樣本複雜度(Yogatama et al., 2019)

4.3.2 – 獲得更多訊號:多工 fine-tuning

在相關任務上共同微調模型

賽爾筆記 | 自然語言處理中的遷移學習(下)
  • 對於每個最佳化步驟,取樣一個任務和一批資料進行訓練

  • 透過多工學習訓練多輪

  • 只在最後幾個階段對目標任務進行微調

使用無監督的輔助任務微調模型

賽爾筆記 | 自然語言處理中的遷移學習(下)

語言建模是一個相關的任務!

微調語言模型有助於將預訓練的引數調整到目標資料集

即使沒有預訓練,也會起到幫助 (Rei et al., ACL 2017)

可選退火比

賽爾筆記 | 自然語言處理中的遷移學習(下)

(Chronopoulou et al., NAACL 2019)

作為 ULMFiT 中的一個單獨步驟使用

4.3.2 – 獲得更多訊號:資料集切分

使用僅在資料的特定子集上訓練的輔助頭

  • 分析模型誤差

  • 使用啟發式方法自動識別訓練資料的挑戰性子集

  • 與主頭一起聯合訓練輔助頭

See also Massive Multi-task Learning with Snorkel MeTaL

4.3.2 – 獲得更多訊號:半監督學習

使用未標記的資料可以使模型預測更加一致

賽爾筆記 | 自然語言處理中的遷移學習(下)
  • 主要思想:使對原始輸入 x 和擾動輸入 x' 的預測之間的距離最小化

  • 擾動可以是噪聲、掩蔽(Clark et al., EMNLP 2018)、資料增強,例如 back-translation (Xie et al., 2019)

4.3.3 – 獲得更多訊號:整合

透過整合獨立的微調模型達到最先進水平

  • 整合模型:使用各種超引數微調模型預測的組合

賽爾筆記 | 自然語言處理中的遷移學習(下)
    • 在不同的任務

    • 在不同的資料集分塊

    • 使用不同的引數(dropout, initializations…)

    • 來自預訓練模型的變體(例如 cased/uncased )

  • 知識蒸餾:在一個更小的模型中提取一組調優模型

賽爾筆記 | 自然語言處理中的遷移學習(下)
    • 知識蒸餾:在教師(整合模型)製作的軟目標上訓練學生模型

    • 教師標籤的相對機率包含教師如何概括的資訊

5. 下游應用程式

在本節中,我們將沿兩個方向探索下游的應用和實際考慮:

  • 遷移學習在自然語言處理中的各種應用是什麼

    • 文件/句子分類、令牌級分類、結構化預測和語言生成

  • 如何利用多個框架和庫來實現實際應用

    • Tensorflow、PyTorch、Keras和第三方庫,例如 fast.ai, HuggingFace……

賽爾筆記 | 自然語言處理中的遷移學習(下)
  • 句子和文件級分類

    • 動手實踐:文件級分類(fast.ai)

  • 令牌分類

    • 實踐:問答(谷歌BERT & Tensorflow/TF Hub)

  • 語言生成

    • 實踐:對話生成(OpenAI GPT & HuggingFace/PyTorch Hub)

本部分內容偏向程式設計實踐,將在本教程的第三篇中進行補充

5.1 – 句子和文件級別分類

使用 fast.ai 庫完成文件分類的遷移學習

  • 目標任務

    • IMDB:一個二元情緒分類資料集,包含用於訓練的25k個高度極性的電影評論,用於測試的25k個,以及其他未標記的資料。~amaas/data/sentiment/

    • Fast.ai 特別提供了:

      • 一個預先訓練的英文模型可供下載

      • 一個標準化的資料塊API

      • 易於訪問標準資料集,如IMDB

    • fast.ai 基於 PyTorch

fast.ai 為視覺、文字、表格資料和協同過濾提供了許多開箱即用的高階API

庫的設計是為了加快實驗的速度,例如在互動計算環境中一次匯入所有必需的模組,例如:

賽爾筆記 | 自然語言處理中的遷移學習(下)

Fast.ai 包含快速設定遷移學習實驗所需的所有高階模組。

賽爾筆記 | 自然語言處理中的遷移學習(下)
  • 載入資料集

  • 使用語言模型和分類器的 DataBunch

  • 使用語言模型損失函式,在 WikiText-103 上預訓練的 AWD-LSTM 並在 IMDB 資料集上微調

一旦我們有了微調的語言模型(AWD-LSTM),我們可以建立一個文字分類器,新增一個分類頭:

  • 將RNN的最終輸出的最大值與所有中間輸出(沿著序列長度)的平均值連線起來的層

  • Two blocks of nn.BatchNorm1d ⇨ nn.Dropout ⇨ nn.Linear ⇨ nn.ReLU 的隱藏維度為50

  • 分兩步微調

    • 只訓練分類頭,同時保持語言模型不變

    • 微調整個結構

  • Colab: tiny.cc/NAACLTransferFastAiColab

賽爾筆記 | 自然語言處理中的遷移學習(下)

5.2 – Token 級別分類: BERT & Tensorflow

用於令牌級分類的遷移學習:谷歌的 BERT in TensorFlow

  • 目標任務:

    • SQuAD: 回答問題的資料集

  • 在本例中,我們將直接使用 Tensorflow checkpoint

    • 例如: .com/google-research/bert/

    • 我們使用通常的Tensorflow工作流:建立包含核心模型和新增/修改元素的模型圖

    • 載入檢查點時要注意變數分配

賽爾筆記 | 自然語言處理中的遷移學習(下) 賽爾筆記 | 自然語言處理中的遷移學習(下) 賽爾筆記 | 自然語言處理中的遷移學習(下) 賽爾筆記 | 自然語言處理中的遷移學習(下)

語言生成遷移學習:OpenAI GPT 和 HuggingFace 庫

  • 目標任務

    • ConvAI2 -第二屆會話智慧挑戰,用於訓練和評估非目標導向對話系統的模型,例如閒聊

  • 預訓練模型的 HuggingFace 倉庫

    • 大型預先訓練模型 BERT, GPT, GPT-2, Transformer-XL 的倉庫

    • 提供一個簡單的方法來下載、例項化和訓練PyTorch中預先訓練好的模型

  • HuggingFace的模型現在也可以透過PyTorch Hub訪問

賽爾筆記 | 自然語言處理中的遷移學習(下)

語言生成任務接近語言建模訓練前的目標,但是:

  • 語言建模前的訓練只需要一個輸入:一系列單詞

  • 在對話方塊設定中:提供了幾種型別的上下文來生成輸出序列

    • 知識庫:角色句

    • 對話的歷史:至少是使用者的最後一句話

    • 已生成的輸出序列的標記

我們應該如何適應這種模式?

賽爾筆記 | 自然語言處理中的遷移學習(下) 賽爾筆記 | 自然語言處理中的遷移學習(下) 賽爾筆記 | 自然語言處理中的遷移學習(下)

6. 開放問題和方向

預訓練的語言模型的缺點

  • 概述:語言模型可視為一般的預訓練任務;有了足夠的資料、計算和容量,LM可以學到很多東西

  • 在實踐中,許多在文字中表示較少的東西更難學習

  • 預先訓練好的語言模型並不擅長

    • 細粒度語言任務 (Liu et al., NAACL 2019)

    • 常識(當你真的讓它變得困難 Zellers et al., ACL 2019);自然語言生成(維護長期依賴、關係、一致性等)

    • 當微調時,傾向於過度適應表面形成的資訊;‘rapid surface learners’

大型的、預訓練的語言模型很難最佳化。

  • 微調通常是不穩定的,並且有很高的方差,特別是在目標資料集非常小的情況下

  • Devlin et al. (NAACL 2019) 指出,BERT的大版本(24層)特別容易導致效能退化;多次隨機重啟有時是必要的,這在(Phang et al., 2018)中也有詳細的研究

當前的預訓練語言模型非常大

  • 我們真的需要所有這些引數嗎?

  • 最近的研究表明,BERT中只需要幾個注意力頭(Voita et al., ACL 2019)

  • 需要做更多的工作來理解模型引數

  • 修剪和蒸餾是兩種處理方法

  • 參見:彩 票假說(Frankle et al., ICLR 2019)

預訓練任務

語言建模目標的不足

  • 並不適用於所有模型

    • 如果我們需要更多的輸入,就需要對這些部件進行預培訓

    • 例如序列到序列學習中的解碼器(Song et al., ICML 2019)

  • 從左到右的偏見並不總是最好的

    • 考慮更多上下文(如遮蔽)的目標似乎有用(取樣效率較低)

    • 可能組合不同LM變種(Dong et al., 2019)

  • 語義和長期上下文的弱訊號與語法和短期單詞共存的強訊號

    • 需要激勵機制來促進我們所關心的編碼,例如語義

更加多樣化的自我監督目標

  • 從計算機視覺中獲得靈感

  • 語言中的自我監督主要基於詞的共現(Ando and Zhang, 2005)

  • 不同層次意義上的監督

    • 論述、檔案、句子等

    • 使用其他訊號,例如後設資料

  • 強調語言的不同性質

賽爾筆記 | 自然語言處理中的遷移學習(下)

抽樣一個補丁和一個鄰居,並預測它們的空間配置(Doersch et al., ICCV 2015)

賽爾筆記 | 自然語言處理中的遷移學習(下)

圖片著色 (Zhang et al., ECCV 2016)

專門的預訓練任務來教我們的模型缺少的東西

  • 制定專門的預訓練任務,明確學習這些關係

    • 獲取背景知識的單詞對關係 (Joshi et al., NAACL 2019)

    • 範圍級表示(Swayamdipta et al., EMNLP 2018)

    • 不同的預訓練詞嵌入是有用的(Kiela et al., EMNLP 2018)

  • 其他預訓練的任務可以明確地學習推理或理解

    • 算術、時間、因果等;話語、敘述、談話等。

  • 預訓練的表示可以以稀疏和模組化的方式連線

    • 基於語言子結構(Andreas et al., NAACL 2016) 或專家 (Shazeer et al., ICLR 2017)

需要更加合理的表示

  • 分散式假設的侷限性——很難從原始文字中學習特定型別的資訊

    • 人類報告偏見:不陳述顯而易見的(Gordon and Van Durme, AKBC 2013)

    • 常識不是寫下來的

    • 關於命名實體的事實

    • 沒有其他模式的基礎

  • 可能的解決方式:

    • 吸收其他結構化知識(e.g. knowledge bases like ERNIE, Zhang et al 2019)

    • 多模態學習(e.g. with visual representations like VideoBERT, Sun et al. 2019)

    • 互動式/human-in-the-loop 的方法(e.g. dialog, Hancock et al. 2018)

任務和任務的相似性

許多工可以表示為語言建模的變體

  • 語言本身可以直接用於指定任務、輸入和輸出,例如,透過構建QA (McCann et al., 2018)

  • 基於對話的學習,不受正向預測的監督 (Weston, NIPS 2016)

  • 將NLP任務制定為完形填空預測目標 (Children Book Test, LAMBADA, Winograd, ...)

  • 透過提示觸發任務行為,例如翻譯提示 (Radford, Wu et al. 2019); 使zero-shot適應

  • 質疑NLP中的“任務”概念

  • 預訓練和目標任務(NLI,分類)的直覺相似性與較好的下游效能相關

  • 不清楚兩個任務在什麼時候以及如何相似和相關

  • 獲得更多理解的方法之一:大規模的遷移實證研究,如 Taskonomy (Zamir et al., CVPR 2018)

  • 是否有助於設計更好和更專業的預訓練任務

持續和元學習

  • 當前遷移學習只進行一次適應。

  • 最終,我們希望擁有能夠在許多工中持續保留和積累知識的模型(Yogatama et al., 2019)

  • 預訓練和適應之間沒有區別;只有一個任務流

  • 主要的挑戰是:災難性的遺忘

  • 不同的研究方法:

    • 記憶、正則化、任務特定權重等

  • 遷移學習的目的:學習一種對許多工都通用且有用的表示方法

  • 客觀因素不會刺激適應的易用性(通常不穩定);沒有學會如何適應它

  • 元學習與遷移學習相結合可以使這一方法更加可行

  • 然而,大多數現有的方法都侷限於few-shot場景,並且只學習了幾個適應步驟

偏見

  • 偏見已經被證明普遍存在於單詞嵌入和一般的神經模型中

  • 大型預訓練的模型必然有自己的一套偏見

  • 常識和偏見之間的界限很模糊

  • 我們需要在適應過程中消除這種偏見

  • 一個小的微調模型應該更不易被誤用

結論

  • 主題:語境中的詞彙,語言模型預培訓,深度模型

  • 預訓練具有較好的 sample-efficiency ,可按比例放大

  • 對某些特性的預測——取決於您如何看待它

  • 效能權衡,自頂向下

  • 遷移學習易於實現,實用性強

  • 仍然存在許多不足和尚未解決的問題

本期責任編輯:崔一鳴

本期編輯:顧宇軒


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2661132/,如需轉載,請註明出處,否則將追究法律責任。

相關文章