姓名:謝童? 學號:16020188008? 轉自微信公眾號 機器之心
自然語言處理的預訓練任務該選哪一個?語言模型真的是一種通用的預訓練方法嗎?這篇論文告訴我們,通用的 NLP 預訓練模型是我們想多了。不同的目標任務需要不同的預訓練模型,而預訓練語言模型甚至會損傷某些任務的性能。不過在沒有更好的方案前,預訓練語言模型還是最好的選擇。
用于自然語言處理任務(如翻譯、問答和解析)的最先進模型都具有旨在提取每個輸入句子含義和內容表征的組件。這些句子編碼器組件通常直接針對目標任務進行訓練。這種方法可以在數據豐富的任務上發揮作用,并在一些狹義定義的基準上達到人類水平,但它只適用于少數具有數百萬訓練數據樣本的 NLP 任務。這引起人們對預訓練句子編碼的興趣:我們有充分的理由相信,可以利用外部數據和訓練信號來有效地預訓練這些編碼器,因為它們主要用于捕獲句子含義而不是任何特定于任務的技能。并且我們已經看到了預訓練方法在詞嵌入和圖像識別相關領域中獲得的成功。
更具體地說,最近的四篇論文表明,預訓練句子編碼器可以在 NLP 任務上獲得非常強的性能。首先,McCann 等人 (2017) 表明來自神經機器翻譯系統的 BiLSTM 編碼器可以在其他地方有效地重用。Howard & Ruder (2018)、Peters 等 (2018)、 Radford 等 (2018) 表明,通過生成式語言建模(LM)以無監督方式預訓練的各種編碼器也是有效的。然而,每篇論文都使用自己的評估方法,不清楚哪個預訓練任務最有效,或者是否可以有效地組合多個預訓練任務;在句子到向量編碼的相關設置中,使用多個標注數據集的多任務學習已經產生了魯棒的當前最佳結果。
本文試圖系統地解決這些問題。研究者在 17 種不同的預訓練任務、幾個簡單的基線以及這些任務的幾種組合上訓練可重用的句子編碼器,所有這些都使用受 ELMo 擴展的單個模型架構和過程,用于預訓練和遷移。然后,研究者根據 GLUE 基準測試中的 9 個目標語言理解任務評估這些編碼器,他們共得到了 40 個句子編碼器和 360 個已訓練模型。然后,研究者測量目標任務的性能相關性,并繪制了評估訓練數據量對每個預訓練和目標任務的影響的學習曲線。
實驗結果表明語言建模是其中最有效的一個預訓練任務,預訓練期間的多任務學習可以提供進一步的增益,并在固定句子編碼器上得到新的當前最佳結果。然而,ELMo 式的預訓練也有令人擔憂的地方,研究者預訓練模型并將其用于目標任務時沒有進一步微調,這是脆弱的并且存在嚴重限制: (i) 一般的基線表征和最好的預訓練編碼器幾乎能達到相同的表現,不同的預訓練任務之間的差別可能非常小。(ii) 不同的目標任務在它們受益最多的預訓練方面存在顯著差異,并且多任務預訓練不足以避免這個問題并提供通用的預訓練編碼器。
圖 1:本研究的通用模型設計:在預訓練期間,為每個預訓練任務訓練共享編碼器和任務特定模型。然后,固定共享編碼器,并為每個目標評估任務重新訓練任務特定模型。任務可能涉及多個句子。
論文:Looking for ELMo's friends: Sentence-Level Pretraining Beyond Language Modeling
論文鏈接:https://arxiv.org/abs/1812.10860
摘要:關于語境化詞表征問題的研究(用于句子理解的可重用神經網絡組件的開發),近期最近出現了一系列進展,主要是使用 ELMo 等方法進行語言建模的無監督預訓練任務。本文提供了第一個大規模系統研究,比較了在這種背景下不同的預訓練任務,既作為語言建模的補充,也作為潛在的替代方案。該研究的主要結果支持使用語言建模作為預訓練任務,并在使用語言模型進行多任務學習的可比模型中得到了新的當前最佳結果。然而,仔細觀察這些結果可以發現跨目標任務中的模型性能出現了令人擔憂的變化,這表明廣泛使用的預訓練和凍結句子編碼器的范式可能不是進一步研究的理想基礎。
表 1 展示了我們所有預訓練編碼器在 GLUE 開發集上的結果,每個編碼器有或者沒有使用預訓練的 ELMo BiLSTM 層(上標 E)。N/A 基線是具有隨機初始化的未經訓練的編碼器。Single-Task 基線是來自 9 個 GLUE 的結果的聚合:給定 GLUE 任務的該行中的結果使用僅在該任務上預訓練的編碼器。為了與其他結果保持一致,我們將預訓練任務和目標任務視為所有情況下的兩個單獨任務(包括此處),并為它們提供獨立的任務特定參數,盡管它們使用相同的數據。我們使用上標 S 和 C 分別表示 Reddit 任務的 Seq2Seq 和分類兩個變體。
表 1:GLUE 基準測試結果,除非另有說明,否則它都是使用的開發集。其中 E 表示 ELMo 用作輸入層,C 和 S 分別為兩種 Reddit 任務的變體。加粗的結果在總體上是最好的,加下劃線的結果表示在沒有 ELMo 的情況下是最好的。
觀察其它目標任務,和語法相關的 CoLA 任務從 ELMo 預訓練中受益明顯:沒有語言建模預訓練的最佳結果不到有預訓練結果的一半。相比之下,含義導向的文本相似性基準 STS 在多種預訓練方法上取得了很好的結果,但并沒有從 ELMo 的使用中獲得顯著收益。
單獨對比沒有使用 ELMo 的預訓練任務,語言建模的性能最佳,然后是 MNLI。剩余的預訓練任務只能得到和隨機基線相當的結果。即使只直接在每個目標任務上進行訓練(Single-Task),也只能得到相對于簡單基線的很少提升。添加 ELMo 可以在所有預訓練任務上取得性能改善。MNLI 和英-德翻譯在此設置下性能最佳,SkipThought、Reddit 分類和 DisSent 也超越了 ELMo-增強的隨機基線。
使用 ELMo,一個多任務模型表現最佳,但如果沒有它,所有三個多任務模型都會被其中一個組成任務的模型追平或超越,這表明我們的多任務學習方法無法可靠地得到很好地利用每個訓練任務教的知識的模型。但是,兩個非 ELMo 模型在開發集上表現最佳,在測試數據上多任務模型比單任務模型更好地泛化了 STS 等任務,其中測試集包含新的域外數據。
跨任務相關性:表 2 展示了主要實驗結果(表 1)的另一種視角,它顯示了預訓練編碼器空間中任務對之間的相關性。這些相關性反映了在使用某種編碼器且知道在特定任務上的性能后,我們能預測相同編碼器在另一種目標任務上的性能。
很多相關性都非常低,這表明不同任務在很大程度上都受益于不同形式的預訓練,且不會觀察到一個預訓練任務能在所有目標任務上都能表現出很好的性能。如上所述,總體上表現最好的模型在 WNLI 訓練集上過擬合最嚴重,因此 WNLI 和整體 GLUE 分數之間的相關性為負。STS 同樣也有一些負的相關性,也許是因為它并沒有受益于 ELMo 的預訓練。相比之下,CoLA 與整體 GLUE 分數顯示出很強的相關性:0.93,但與其它任務有弱的或負的相關性,這表示使用 ELMo 或語言模型可顯著提升 CoLA 的性能,但其它類型的預訓練任務幫助不大。
表 2:不同目標任務性能間的皮爾森相關性,它們都是基于表 1 中的所有實驗而進行度量的。Avg 列為各種獨立任務上的預訓練模型與整體 GLUE 分數的相關性。對于有多種度量的任務,我們會在每一行的抬頭中注明使用的度量方法。負的相關性會使用下劃線標注出來。
學習曲線圖 2 展示了兩種類型的學習曲線,第一組度量了整體 GLUE 指標的性能,其中編碼器在每一個預訓練任務中使用不同的樣本數而獲得收斂。第二組重點關注三個預訓練編碼器,并獨立地在每一個 GLUE 目標任務上使用不同的數據量而度量性能。
若只看預訓練任務(左上),大多數任務都會隨著預訓練數據的增加而緩慢地提升性能,LM 和 MT 任務是最大化性能最具潛力的組合。通過 ELMo(右上)結合這些預訓練任務,產生了難以解釋的結果:訓練數據量和性能之間的相關性變弱,因此本文描述的最佳結果都是預訓練 ELMo 模型結合其它預訓練任務(例如 MNLI 和 QQP)的受限數據的版本而實現的。
觀察隨著訓練數據量改變時目標任務的性能變化,我們發現所有的任務都從數據量增加中獲益,沒有明顯的收益遞減,并且大多數任務都從預訓練中獲得了常量的性能提升,無論是使用了 ELMo(中)還是多任務學習(右)。
圖 2:頂部:沒有使用 ELMo(左)和使用了 ELMo(右)的 GLUE 分數的預訓練學習曲線。底部:每個 GLUE 任務上 3 個編碼器的目標任務訓練的學習曲線。沒有使用 ELMo 的隨機編碼器(左),使用了 ELMo 的隨機編碼器(中),和沒有使用 ELMo 的 Outside MTL。
在 GLUE Diagnostic Set 上的結果:從 GLUE 的輔助診斷分析數據集中,我們發現 ELMo 和其它形式的無監督預訓練可以幫助提升涉及世界知識和詞匯-語義知識的任務,但對于強調復雜句子結構的任務改善很少。參見表 6 查看更多細節。
表 6:GLUE 診斷集結果,以 R_3 關聯系數(x100)表示,其將由不知情模型(uninformed model)的隨機猜測標準化為 0。人類性能在總體診斷集上大約為 80。粗體表示總體最佳結果,加下劃線的結果表示在沒有 ELMo 的情況下是最好的。