哈佛、賓大等多所機(jī)構(gòu)研究者聯(lián)合綜述:大規(guī)模預(yù)訓(xùn)練語言模型進(jìn)展
本文介紹了一篇基于大規(guī)模預(yù)訓(xùn)練語言模型(PLM)來做 NLP 的綜述論文。讀者將從這篇論文中找到適合不同 NLP 任務(wù)的方法。
近年來,基于大規(guī)模語言模型的方法在很多 NLP 任務(wù)上都取得了比傳統(tǒng)方法更好的性能。近日來自 Raytheon BBN、哈佛大學(xué)、賓夕法尼亞大學(xué)等學(xué)校和研究機(jī)構(gòu)的知名 NLP 學(xué)者聯(lián)合編寫了一篇綜述論文,介紹了基于大規(guī)模預(yù)訓(xùn)練語言模型的自然語言處理領(lǐng)域進(jìn)展。
論文鏈接:https://arxiv.org/abs/2111.01243
這篇論文歸納總結(jié)了3類使用大規(guī)模預(yù)處理模型來做 NLP 的方法:
方法一:對大規(guī)模預(yù)處理模型進(jìn)行任務(wù)相關(guān)的微調(diào)(pre-train then fine-tune)。這是目前最常用的一種方法。
方法二:使用 prompt 把 NLP 任務(wù)轉(zhuǎn)換成一個更接近預(yù)訓(xùn)練的任務(wù),以更好地利用大規(guī)模預(yù)處理模型里的知識做自然語言處理。這是最近日漸流行的一種新方法。
方法三:把 NLP 任務(wù)轉(zhuǎn)換成 text to text 的語言生成任務(wù)。這是目前嶄露頭角的一種新方法。
另外,該論文還介紹了利用大規(guī)模預(yù)訓(xùn)練模型來生成數(shù)據(jù),以更好地訓(xùn)練和解釋 NLP 模型。
此外,這篇論文還是一篇前瞻性的綜述文章。第 6 章指出了目前利用大規(guī)模語言模型來做 NLP 的方法存在的問題,并指出一些未來的方向。
方法一:預(yù)訓(xùn)練語言模型并對每個 NLP 任務(wù)進(jìn)行微調(diào)
這是 BERT,ELMo 和 GPT 論文中提出的方法, 也是目前為止最流行的一種方法。這種模式首先會預(yù)訓(xùn)練一個大規(guī)模語言模型, 然后對每個任務(wù)利用任務(wù)相關(guān)的標(biāo)注數(shù)據(jù)進(jìn)行模型微調(diào)(fine-tuning),從而得到一個任務(wù)相關(guān)的 PLM 來完成相關(guān)任務(wù)。
作者首先回顧了預(yù)訓(xùn)練 + 微調(diào)這種方法的歷史并解釋了幾種常見的語言模型與預(yù)訓(xùn)練方法, 然后介紹了各種微調(diào)預(yù)訓(xùn)練模型的方法。
圖1:三種常見的 Pre-Trained Language model:模型示意圖、訓(xùn)練目標(biāo)和示例。
圖1總結(jié)了幾種不同的預(yù)訓(xùn)練方法。總的來說, 有三種語言模型:autoregressive language model(例如 GPT),masked language model(例如 BERT), encoder-decoder language model(例如 T5)。
圖2:常見的 pre-train then fine-tune 的策略和模型結(jié)構(gòu)。
圖2總結(jié)了對任務(wù)進(jìn)行微調(diào)的幾種方法:
1. 使用 PLM 對輸入的句子抽取語境詞嵌入。這種方法只使用 PLM 來抽取特征而并不對 PLM 參數(shù)進(jìn)行微調(diào)。這種方法主要適用于以下幾種情況:
任務(wù)相關(guān)的標(biāo)注數(shù)據(jù)很少, 不足以用來微調(diào)整個 PLM 的參數(shù)。
很復(fù)雜的 NLP 任務(wù):例如語義/句法分析。在這種情況下,微調(diào) PLM 帶來的好處很少,所以可能更有效的方法是改進(jìn)分析(parsing)模型而不是 PLM 本身。
無監(jiān)督的學(xué)習(xí),例如詞義消歧(WSD)/詞義歸納(WSI)。例如利用 BERT 嵌入空間里的最近鄰( nearest neighbor)來進(jìn)行 WSD 或 WSI。
2. 微調(diào)整個 PLM 中的參數(shù), 然后直接利用 PLM 或者簡單的前饋層(feedforward layer)來進(jìn)行任務(wù)相關(guān)的預(yù)測。這種方式適用于文本分類、自然語言推理等不需要復(fù)雜算法的任務(wù)。
3. 調(diào)整個 PLM 中的參數(shù)和任務(wù)相關(guān)的模型(在 PLM 之上)來完成NLP任務(wù)。這種方式適用于分析,共指消解(coreference resolution)等需要在 PLM 之外加一個復(fù)雜模型或者算法的任務(wù)。
4. 高效的微調(diào)方法。因為 PLM 往往有動輒上億的參數(shù)需要微調(diào),這無疑有很高的計算復(fù)雜度。有幾種方法可以更高效地進(jìn)行微調(diào):
只微調(diào)一個小的,局部的子網(wǎng)絡(luò),例如微調(diào) adapter 模塊而不是整個 PLM,只需要微調(diào) 5% 的參數(shù);
只微調(diào)一部分參數(shù),例如 BitFit 只微調(diào)PLM 中的偏置項(bias term),只需要微調(diào) 0.1% 的參數(shù)。
方法二:基于 Prompt 的方法
這是最近一年來引起學(xué)界廣泛關(guān)注的一種新方法。前面提到的預(yù)訓(xùn)練并微調(diào)的方法有一個很大的問題:微調(diào)的訓(xùn)練目標(biāo)(training objective)跟預(yù)訓(xùn)練的訓(xùn)練目標(biāo)很不一樣,所以可能并沒有很好地利用預(yù)訓(xùn)練任務(wù)(例如掩碼語言建模)學(xué)得的知識?;?prompt 的方法的中心思想是通過設(shè)計巧妙的模板或者 prompt,來把 NLP 任務(wù)轉(zhuǎn)換成一個更接近語言模型的預(yù)訓(xùn)練任務(wù),從而更好地利用預(yù)訓(xùn)練學(xué)得的知識。圖 3 描述了三種典型的基于 prompt 的方法。
圖3:幾類常見的基于 prompt 的方法。
第一類是最簡單的方式:基于任務(wù)指令(instruction)的方法。這種方法最早出現(xiàn)于 GPT-3 和 T5 的論文中。使用這種方法的時候, 一般會使用能進(jìn)行文本生成的語言模型(例如 GPT-3,T5):輸入會提供任務(wù)的描述和一些例子,接著提供一個想要讓 PLM 來處理的輸入文本,讓 GPT-3/T5 來生成答案。這種方法也被稱為語境學(xué)習(xí)(In-context learning)或 priming。這種方式往往需要一個非常大的,類似于 GPT-3 的模型,才能有不錯的性能。因為 PLM 模型并不一定能理解任務(wù)描述或者通過例子來「理解」任務(wù)需求, 所以最近一些來自 Google 和 AI2 的工作(詳情參見論文 3.1)利用一些 NLP 任務(wù)的任務(wù)描述來微調(diào) PLM,這樣 PLM 在看到全新的任務(wù)描述時會有更好的效果。
第二類方法的基本想法是通過設(shè)計一個模板來把 NLP 任務(wù)轉(zhuǎn)換成一個語言模型的預(yù)訓(xùn)練任務(wù)(例如掩碼語言建模,下一個詞預(yù)測)。圖 3(中)給出了三個分別針對情感分類、話題分類和文本蘊(yùn)含任務(wù)設(shè)計的模板。論文的 3.2 小節(jié)介紹了設(shè)計模板和自動生成模板的方法、數(shù)值的(continuous) 或者自然語言文字的模板、使用多個模板的方法以及如何把語言模型預(yù)測的結(jié)果轉(zhuǎn)換成任務(wù)相關(guān)的標(biāo)簽等。此外,3.2 小節(jié)還給出了針對各種 NLP 任務(wù)的應(yīng)用和例子。
第三類方法的基本想法是通過設(shè)計 prompt 把 NLP 任務(wù)轉(zhuǎn)換成一個更接近 PLM 預(yù)訓(xùn)練任務(wù)的任務(wù),例如問答(QA)或 文本蘊(yùn)含(TE)。這種方式有幾個好處:(a)QA 或 TE 是更直接的自然語言理解任務(wù),因此能更好地利用 PLM 中的知識,(b)QA 和 TE 有比其他 NLP 任務(wù)更多的訓(xùn)練數(shù)據(jù),所以微調(diào)用 QA/TE 模型訓(xùn)練過的 PLM 可能會有更好的效果,(c)很多 NLP 任務(wù)的標(biāo)注數(shù)據(jù)可以被轉(zhuǎn)換成 QA/TE 的格式,這樣可以很容易地針對這些任務(wù)進(jìn)一步微調(diào) PLM。一般這一類方法在需要大量知識的任務(wù)(比如 IE)上效果會比前面的方法更好。
方法三:利用文本生成模型來解決 NLP 問題
這是一種嶄露頭角的新方法。前面提到自回歸 PLM 或者編碼器-**** PLM 可以用于生成文本,所以研究人員在嘗試另一種方法:把 NLP 任務(wù)都轉(zhuǎn)換成「text in text out」的文本轉(zhuǎn)換任務(wù)。這種方法使用的模型一般都是編碼器-**** PLM(也有少數(shù)使用自回歸 PLM)。如果想使用這種方法來做 NLP 任務(wù),就需要設(shè)計好相應(yīng)的輸入輸出的格式,從而把 NLP 任務(wù)轉(zhuǎn)換成「text in text out」的任務(wù),進(jìn)而能利用語言生成模型來解決這些 NLP 任務(wù)。
圖 4 總結(jié)了幾種常見的把 NLP 任務(wù)轉(zhuǎn)換成文本生成任務(wù)的方法和它們的應(yīng)用實(shí)例。其中把這些方法按照輸出類型來分類:
產(chǎn)生包含標(biāo)注的文本
產(chǎn)生詞的位置(索引)
產(chǎn)生答案
按照固定的模板來生成輸出(模板填充)
產(chǎn)生線性化的結(jié)構(gòu)化輸出
對輸入輸出對進(jìn)行排序
詳情請參考論文第四章。
圖4:常見的把 NLP 任務(wù)轉(zhuǎn)換成文本生成任務(wù)的方法。
利用語言模型來生成 NLP 任務(wù)相關(guān)的數(shù)據(jù)
PLM 不僅可以用來解決 NLP 問題,還可以用來生成跟任務(wù)相關(guān)的數(shù)據(jù)。論文第 5 章主要介紹了以下兩類方法:
利用 PLM 自動生成標(biāo)注數(shù)據(jù)。這些數(shù)據(jù)可以被加到現(xiàn)有的手工標(biāo)注數(shù)據(jù)集來增大訓(xùn)練數(shù)據(jù)集,從而取得更好的效果。
利用 PLM 來生成輔助數(shù)據(jù),這類數(shù)據(jù)可以被用來解釋機(jī)器學(xué)習(xí)模型的行為,步驟,生成反例,推理規(guī)則等。
該論文按照任務(wù)來組織并論述這兩類方法(對應(yīng)于論文中的 5.1 和 5.2)。
目前存在的問題和討論
雖然利用 PLM 來做 NLP 在很多任務(wù)上取得了很好的結(jié)果,但目前還存在很多有待解決的問題。論文第六章對現(xiàn)有的方法進(jìn)行了一些討論, 然后提出了一些目前尚未解決的問題和研究方向。主要有以下幾點(diǎn):
不需要拘泥于一類方法。比如很多基于 prompt 的方法和文本生成的方法也使用了微調(diào),一些基于文本生成的方法也會使用 prompt。同樣,不是所有方法都只能基于一種 PLM。例如 ACE(Wang et al., 2021c)就同時使用了 ELMo、BERT、mBERT、XLM-R 等多個 PLM。
數(shù)據(jù)量似乎在很大程度上決定了性能:到底需要多大的無標(biāo)注數(shù)據(jù)集來訓(xùn)練 PLM?同樣,需要多大的標(biāo)注數(shù)據(jù)集來微調(diào) PLM, 才能在 NLP 任務(wù)上有好的結(jié)果呢?
有沒有好的方法來減少使用 PLM 的計算量?
PLM 在理解語義方面如何,是否只是記住見過的文本?
是否需要顯式的基于語言學(xué)的標(biāo)注?
基于 prompt 的方法需要有意義的,人可讀的 prompt 嗎?
NLP 領(lǐng)域還需要更多的理論研究。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。