riogarfield
我們這裡聚焦於自然語言處理的遷移學習進展。計算機視覺領域常使用在 ImageNet 上預訓練的模型,它們可以進一步用於目標檢測、語義分割等不同的 CV 任務。而在自然語言處理領域中,我們通常只會使用預訓練詞嵌入向量編碼詞彙間的關係,因此也就沒有一個能用於整體模型的預訓練方法。Sebastian Ruder 表示語言模型有作為整體預訓練模型的潛質,它能由淺到深抽取語言的各種特徵,並用於機器翻譯、問答系統和自動摘要等廣泛的 NLP 任務。Ruder 同樣展示了用語言模型做預訓練模型的效果,並表示 NLP 領域中的「ImageNet」終要到來。
自然語言處理(NLP)領域正在發生鉅變。
長期以來,詞向量一直是自然語言處理的核心表徵技術。然而,其統治地位正在被一系列令人振奮的新挑戰所動搖,如:ELMo、ULMFiT 及 OpenAI transformer。這些方法因證明預訓練的語言模型可以在一大批 NLP 任務中達到當前最優水平而吸引了很多目光。這些方法預示著一個分水嶺:它們在 NLP 中擁有的影響,可能和預訓練的 ImageNet 模型在計算機視覺中的作用一樣廣泛。
由淺入深的預訓練
預訓練的詞向量給 NLP 帶來了很大的提高。2013 年提出的語言建模近似——word2vec 憑藉其效率和易用性在硬件速度慢得多且深度學習模型沒有得到廣泛支持的時代得到採用。此後,進行 NLP 項目的標準方式基本保持不變:通過 word2vec 和 GloVe 等算法對大量未標記數據進行預處理的詞嵌入被用於初始化神經網絡的第一層,其它層隨後在特定任務的數據上進行訓練。在大多數訓練數據有限的任務中,這種方法幫助提高了兩到三個百分點。儘管這些預訓練的詞嵌入頗具影響力,但它們也有侷限:它們僅包含模型第一層的先驗知識——網絡的其餘部分還需要從頭開始訓練。
word2vec 捕捉到的關係。(來源:TensorFlow tutorial)
word2vec 及其它相關方法是為了實現效率而犧牲表達性的淺層方法。使用詞嵌入就像利用僅編碼圖像邊緣信息的預訓練表徵初始化計算機視覺模型:它們在許多任務中都能發揮作用,但是卻無法捕捉到可能發揮更大作用的高層次信息。利用詞向量初始化的模型需要從頭開始學習,不僅是學習消除歧義,還要學習從詞組成的句子中提取意義。這是語言理解的核心,需要建模語義組合、一詞多義、首語重複、長期依賴、一致性、否定等許多複雜的語言現象。因此,用這些淺層表示初始化的 NLP 模型仍然需要大量的示例才能獲得良好的性能也就不足為奇了。
ULMFiT、ELMo 和 OpenAI transformer 最新進展的核心是一個關鍵的範式轉變:從僅僅初始化模型的第一層到用分層表示對整個模型進行預處理。如果學習詞向量就像僅學習圖像的邊,那麼這些方法就像學習特徵的完整層次,從邊到形狀,再到高級語義概念。
有趣的是,預訓練整個模型以獲得初級和高級特徵在計算機視覺社區中已經採用好幾年了。大多數情況下,預訓練模型都是在 ImageNet 大型數據集上學習分類圖像而訓練出來的。ULMFiT、ELMo 和 OpenAI transformer 已經為 NLP 社區帶來了自然語言中的「ImageNet」,這種任務能允許模型學習語言的高級細微差別。這就類似於 ImageNet 允許預訓練 CV 模型以學習普遍意義的圖像特徵。在本文後面的部分中,我們將語言建模與 ImageNet 計算機視覺建模做類比,並展示為什麼這種方法看起來會如此有前景。
ImageNet
ImageNet 大規模視覺識別挑戰賽。(來源:Xavier Giro-o-Nieto)
ImageNet 對機器學習研究具有重要影響。該數據集最初發佈於 2009 年,並迅速演變為 ImageNet 大規模視覺識別挑戰賽(ILSVRC)。2012 年,Alex Krizhevsky、Ilya Sutskever 和 Geoffrey Hinton 提交的深度神經網絡超過第二名 41 %,表明深度學習是一種可行的機器學習策略,該深度神經網絡可以說是引發了機器學習研究中深度學習的爆發。
ImageNet 的成功凸顯了在深度學習時代,數據至少和算法一樣重要。ImageNet 數據集不僅使 2012 年非常重要的深度學習能力展示成為可能,而且在遷移學習中也取得了同樣重要的突破:研究人員很快意識到,在 ImageNet 現有模型中學習的權重可用於完全初始化其它數據集的模型,並顯著提高性能。這種「微調」方法允許在每個類別只有一個正面示例的情況下實現良好性能(Donahue et al., 2014)。
在 ILSVRC-2012 上訓練的特徵泛化到 SUN-397 數據集上。(來源:Donahue et al., 2014)
在目標識別、語義分割、人體姿態估計和視頻識別等任務上,預處理的 ImageNet 模型已用來實現最優水平。與此同時,它們還使得 CV 得以應用於訓練示例數量少、註釋成本高的領域。在 CV 中,在 ImageNet 上通過預處理進行遷移學習實際上非常有效,以至於現在不使用它會被認為是蠻幹(Mahajan et al., 2018)。
ImageNet 中有什麼?
為了確定用於語言處理的 ImageNet 可能是什麼樣子,我們首先要確定什麼使 ImageNet 有利於遷移學習。以往的研究只揭示了這個問題的一部分:減少每個類的示例數或類別數只會導致性能下降,而細粒度類和更多數據並非總意味著更好的結果。
與其直接查看數據,更謹慎的做法是探究在數據上訓練的模型學到了什麼。眾所周知,在 ImageNet 上訓練的深層神經網絡的特徵遷移順序為從第一層到最後一層、從一般任務到特定任務:較低層學習建模低級特徵,如邊緣,而較高層學習建模高級概念,如圖案和整個部分或對象,如下圖所示。重要的是,關於物體邊緣、結構和視覺組成的知識與許多 CV 任務相關,這就揭示了為什麼這些層會被遷移。因此,類似 ImageNet 的數據集的一個關鍵屬性是鼓勵模型學習可以泛化到問題域中新任務的特徵。
在 ImageNet 上訓練的 GoogLeNet 中不同層特徵捕獲的信息可視化。(來源:Distill)
除此之外,很難對 ImageNet 上遷移做得如此出色的原因作出進一步的概括。例如,ImageNet 數據集的另一個優點可能是數據的質量。ImageNet 的創建者盡力確保註釋的可靠性和一致性。然而,遠程監管的工作是一個對比,這表明大量弱標記數據通常是足夠的。事實上,Facebook 的研究人員最近顯示,他們可以通過預測數十億個社交媒體圖像上的 hashtags 到 ImageNet 上最新的準確性來預先訓練模型。
沒有任何更具體的見解,但我們有兩個關鍵的需求:
像 ImageNet 一樣的數據集要足夠大,即大約有數百萬個訓練示例。
它應該代表學科的問題空間。
用於語言任務的 ImageNet
相比於 CV,NLP 的模型通常淺得多。因此對特徵的分析大部分聚焦於第一個嵌入層,很少有人研究遷移學習的高層性質。我們考慮規模足夠大的數據集。在當前的 NLP 形勢下,有以下幾個常見任務,它們都有可能用於 NLP 的預訓練模型。
閱讀理解是回答關於一個段落自然語言問題的任務。該任務最流行的數據集是 Stanford Question Answering Dataset (SQuAD),其中包含了超過 10 萬個問答對,並通過突出顯示段落中的幾個單詞來讓模型回答一個問題,如下圖所示:
在 ImageNet 上訓練的 GoogLeNet 的不同層特徵捕捉到的信息的可視化(Rajpurkar et al., 2016,《SQuAD: 100,000+ Questions for Machine Comprehension of Text》)。
自然語言推理是識別一段文本和一個假設之間關係(蘊涵、矛盾和中性等)的任務。該任務最流行的數據集是 Stanford Natural Language Inference (SNLI) Corpus,包含 57 萬個人類寫的英語句子對。該數據集的示例如下圖所示。
SNLI:https://nlp.stanford.edu/projects/snli/
SNLI 數據集的示例。(Bowman et al., 2015,A large annotated corpus for learning natural language inference)
機器翻譯,即將文本從一種語言轉換到另一種語言,是 NLP 中研究最充分的任務之一。並且多年來,人們為常用的語言對累積了大量的訓練數據,例如 WMT2014 的 4 千萬個英語法語句子對。下圖是兩個示例翻譯對。
來自 newstest2014 的法語到英語翻譯(Artetxe et al., 2018,Unsupervised Neural Machine Translation)
選區解析(Constituency parsing)以(線性化)解析樹的形式提取句子的句法結構,如下圖所示。在過去,人們在該任務中使用數百萬個弱標記解析來訓練序列到序列的模型(參見《Grammar as a Foreign Language》)。
解析樹和其線性化處理(Vinyals et al., 2015,Grammar as a Foreign Language)
語言建模(LM)在給定前一個單詞的情況下嘗試預測下一個單詞。已有的基準數據集由大約 10 億個單詞構成,但由於該任務是無監督的,因此可以使用任意數量的單詞來訓練。下圖是由維基百科文章構成的常用 WikiText-2 數據集的示例。
WikiText-2 語言建模數據集的示例。(來源: Salesforce)
WikiText-2:https://einstein.ai/research/the-wikitext-long-term-dependency-language-modeling-dataset
所有這些任務提供或允許收集足夠數量的示例來訓練。實際上,以上任務(以及很多其它任務例如情感分析、skip-thoughts 和自編碼等)都曾在近幾個月被用於預訓練表徵。
雖然任何的數據都包含某些偏差,人類標註可能無意間引入額外信息,而模型也將會利用這些信息。近期研究表明在諸如閱讀理解和自然語言推理這樣的任務中的當前最優模型實際上並沒有形成深度的自然語言理解,而是注意某些線索以執行粗淺的模式匹配。例如,Gururangan 等人 (2018) 在《Annotation Artifacts in Natural Language Inference Data》中表明,標註者傾向於通過移除性別或數量信息生成蘊涵示例,以及通過引入否定詞生成矛盾。只需使用這些線索,模型就可以在未查看前提的情況下在 SNLI 數據集上以 67% 的準確率分類假設。
因此,更困難的問題應該是:哪個任務在 NLP 中最具代表性?換種說法,哪個任務使我們能學到最多關於自然語言理解的知識或關係?
語言建模
為了預測句子中最可能出現的下一個詞,模型不僅需要能表達語法,即模型預測下一個詞的語法形式必須與其修飾語或動詞匹配。同時模型還需要理解語義,此外那些最準確的模型必須包含世界知識或常識等內容。若思考一條不完整的語句「The service was poor, but the food was」,為了預測「yummy」或「delicious」等後續單詞,模型不僅需要記住用於描述食物的屬性,還需要識別連詞「but」以引入相反的語義,因此新的屬性應該是與情感詞「poor」相對的。
語言建模是最後提到的一種方法,它已經被證明能為下游任務捕獲很多與語言相關的屬性,例如長期依賴性關係、層級關係和情感語義等。相比於自編碼器等無監督學習任務,語言建模即使只有少量訓練數據也能在句法任務上有非常好的表現。
語言建模最大的優勢在於,訓練數據可以免費從任何文本語料庫獲取,因此幾乎能獲得無限的訓練數據。這非常重要,因為 NLP 並不只限於英語,有超過 1000 人使用的語言有 4500 種。作為預訓練任務的語言建模為以前語言服務支持不好的語種打開了大門,我們可以直接使用文本數據無監督地訓練語言模型,並應用到翻譯、信息抽取等任務中。而對於那些無標註數據都不足的稀有語言,多語語言建模能先在多個相關語種上訓練,例如跨語言詞嵌入等。
ULMFiT 不同的階段(Howard and Ruder, 2018)
到目前為止,我們將語言建模作為預訓練任務的論點純粹是概念性的。但是在最近幾個月,我們也獲得了一些實驗性證明:語言模型的詞嵌入(ELMo)、普遍語言模型精調(ULMiT)和 OpenAI Transformer 已經實驗性地證明了語言模型能用於預訓練任務,正如上圖所示的 ULMFiT。這三種方法都使用預訓練語言模型來實現當前最優的自然語言處理任務,例如文本分類、問答系統、自然語言推斷、指代消歧和序列標註等問題。
在如下所示的 ELMo 等很多情況中,使用預訓練語言模型作為核心的算法在廣泛研究的基準上,要比當前最優的結果高 10% 到 20%。ELMo 同時也獲得了 NLP 頂會 NAACL-HLT 2018 的最佳論文。最後,這些模型表現出非常高的樣本效率,達到最優性能只需要數百樣本,甚至可以實現 zero-shot 學習。
ELMo 在一系列 NLP 任務中取得的進步。(來源:Matthew Peters)
鑑於這一步取得的變化,NLP 實踐者很可能在一年後下載預處理的語言模型,而不是預處理的詞嵌入,來用於他們自己的模型中,就像現在大多數 CV 項目的起點是如何預處理 ImageNet 模型一樣。
然而,和 word2vec 相似,語言建模的任務有其天然的侷限性:它只是作為真正的語言理解的一個代理,並且單體模型並不足以為特定的下游任務捕捉需要的信息。例如,為了回答關於或跟隨故事中人物軌跡的問題,模型需要學習執行指代或消解。此外,語言模型僅能捕捉它們所見過的東西。特定類型的信息,例如大部分常識,很難僅從文本中學習到,並需要整合外部信息。
一個突出的問題是如何從一個預訓練語言模型將信息遷移到下游任務中。有兩個主要的範式,一是是否將預訓練語言模型作為固定的特徵提取器,並將其表徵作為特徵整合到隨機初始化的模型(正如 ELMo 所做的)中;二是是否微調完整的語言模型(如 ULMFiT 所做的)。後者在計算機視覺中很常用,其中訓練時會調整模型的最高層或最高的幾層。雖然 NLP 模型通常更淺,因此相比對應的視覺模型需要不同的微調技術,但近期的的預訓練模型變得更深了。我在下一月將展示 NLP 遷移學習的每個核心組件的作用:包括表達性很強的語言模型編碼器(如深度 BiLSTM 或 Transformer),用於預訓練的數據的量和本質,以及微調預訓練模型使用的方法。
但理論依據何在?
到目前為止,我們的分析主要是概念和經驗上的,我們仍然難以理解為什麼模型先在 ImageNet 上進行訓練就能在語言建模上遷移得如此之好。一種更為正式的、考慮預訓練模型泛化能力的方式是基於「偏置學習」(bias learning)模型(Baxter, 2000)。假設我們的問題域覆蓋特定學科中任務的所有排列,例如計算機視覺——它構成了環境。我們對此提供了許多數據集,允許我們誘導一系列假設空間 H=H'。我們在偏置學習中的目標是找到偏置,即假設空間 H'∈H,它可以在整個(可能是無限的)環境中最大化性能。
多任務學習中的經驗和理論結果(Caruana,1997; Baxter,2000)表明,在足夠多的任務中學習到的偏置或許可以推廣到在同樣環境中未見過的任務上。通過多任務學習,在 ImageNet 上訓練的模型可以學習大量的二進制分類任務(每個類一個)。這些任務都來自自然、真實世界的圖像空間,可能對許多其他 CV 任務也有代表性。同樣,語言模型通過學習大量分類任務(每個詞一個)可能誘導出有助於自然語言領域許多其他任務的表徵。然而,要想從理論上更好地理解為什麼語言建模似乎在遷移學習中如此有效,還需要進行更多的研究。
NLP 的 ImageNet 時代
NLP 真正轉向遷移學習的時機已經成熟。鑑於 ELMo、ULMFiT 和 OpenAI 令人印象深刻的實驗結果,這種發展似乎只是一個時間問題,預訓練的詞嵌入將逐漸落伍,取而代之的是每個 NLP 從業者工具箱裡的預訓練語言模型。這可能會在標註數據數量不足時為 NLP 創造更多可能性。