計算機視覺領域常使用在 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 創造更多可能性。蒼天已死,黃天當立!