预训练模型的前世今生(有福利!)
近年來,在深度學習和大數據的支撐下,自然語言處理技術迅猛發展。
而預訓練語言模型把自然語言處理帶入了一個新的階段,也得到了工業界的廣泛關注。
通過大數據預訓練加小數據微調,自然語言處理任務的解決,無須再依賴大量的人工調參。
借助預訓練語言模型,自然語言處理模型進入了可以大規模復制的工業化時代。
那到底什么是預訓練?為什么需要預訓練呢?
以下內容節選自《預訓練語言模型》一書!
--正文--
01
預訓練
預訓練屬于遷移學習的范疇。
現有的神經網絡在進行訓練時,一般基于后向傳播(Back Propagation,BP)算法,先對網絡中的參數進行隨機初始化,再利用隨機梯度下降(Stochastic Gradient Descent,SGD)等優化算法不斷優化模型參數。
而預訓練的思想是,模型參數不再是隨機初始化的,而是通過一些任務進行預先訓練,得到一套模型參數,然后用這套參數對模型進行初始化,再進行訓練。
在正式探討自然語言處理的預訓練之前,回顧一下計算機視覺領域的預訓練過程。
在圖片分類任務中,常用的深度學習模型是卷積神經網絡(Convolutional Neural Network,CNN)。對于由多個層級結構組成的CNN來說,不同層學到的圖像特征是不一樣的,越淺的層學到的特征越通用,越深的層學到的特征和具體任務的關聯性越強。
在圖1中[6],對基于人臉(Faces)、汽車(Cars)、大象(Elephants)和椅子(Chairs)的任務而言,最淺層的通用特征“線條”都是一樣的。
因此,在大規模圖片數據上預先獲取“通用特征”,會對下游任務有非常大的幫助。
圖1 圖像預訓練示例
再舉個簡單的例子,假設一個《怪物獵人:世界》的游戲玩家想給游戲中的怪物(如飛雷龍、浮空龍、風漂龍、骨錘龍等)做一個多分類系統,而有標注的數據只有游戲中的若干圖片,重新訓練一個神經網絡模型顯然不太可能。
幸運的是,現有的大規模圖片數據庫ImageNet 中一共有20000多類標注好的數據集,包含超過1400 萬張圖片。
通過ImageNet 訓練出來的CNN 網絡參數,可以遷移至怪物獵人的訓練任務中。
在比較淺層的CNN網絡初始化時,可以使用已經訓練好的參數,而在模型的高層,其參數可以隨機初始化。
在訓練怪物獵人的特定任務時,既可以采用凍結(Frozen)參數的方式,也就是淺層參數一直保持不變;也可以采用微調的方式,也就是淺層參數仍然隨著任務的訓練不斷發生改變,從而更加適應怪物的分類。
將圖片轉換為計算機可以處理的表示形式(如像素點的RGB 值),就可以輸入至神經網絡進行后續處理。
對自然語言來說,如何進行表示是首先要考慮的問題。
02
自然語言表示
語言是離散的符號,自然語言的表示學習,就是將人類的語言表示成更易于計算機理解的方式。
尤其是在深度神經網絡技術興起之后,如何在網絡的輸入層使用更好的自然語言表示,成了值得關注的問題。
舉例來說,每個人的名字就是我們作為自然人的一個“表示”,名字可以是若干個漢字,也可以是英文或法文單詞。
當然,也可以通過一些方法表示成由0 和1 組成的字符串,或者轉換為一定長度的向量,讓計算機更容易處理。
自然語言的表示有很多方式,圖2 給出了自然語言表示學習的發展路徑。
圖2 自然語言表示學習的發展路徑
最早期的n-gram 模型,是基于統計的語言模型,通過前n個詞來預測第n+1個詞。
分布式理論(Distributional Hypothesis)在20世紀50年代被提出,這也是近10年,從word2vec到BERT 等一系列預訓練語言模型的自然語言表示的基礎思想。
早期的詞袋模型,雖然能夠方便計算機快速處理,卻無法衡量單詞間的語義相似度。
到了1986 年,分布式表示(Distributed Representation)被提出。雖然分布式理論和分布式表示同樣都有“分布式”這個詞,但其英文表述是不一樣的,含義也不盡相同。
分布式理論的核心思想是:上下文相似的詞,其語義也相似,是一種統計意義上的分布;而在分布式表示中,并沒有統計意義上的分布。
分布式表示是指文本的一種表示方式。相比于獨熱表示,分布式表示將文本在更低的維度進行表示。
隨著word2vec和GloVe等基于分布式表示的方法被提出,判斷語義的相似度成為可能。圖3給出了GloVe 詞向量的可視化結果。
圖3 Glove 詞向量的可視化結果
2013 年之后,基于大規模的文本數據訓練得到的分布式表示,逐漸成了自然語言表示的主流方法。
在這種方式下,每個單詞都有了一個固定的詞向量表示,語義相近的單詞,其向量也是相似的。
從圖3中可以看出,queen 和king,以及woman 和man 就是以“性別”為基準來對應的單詞。
有了自然語言的表示,就可以將表示后的詞向量送入神經網絡進行訓練。這就是第一代預訓練語言模型。
一些讀者可能已經注意到,word2vec 的提出時間是2013 年,那么為何在2018 年ELMo出現之后,預訓練語言模型才有了突飛猛進的發展呢?
最重要的原因就是,之前的詞向量表示無法很好地解決一詞多義的問題。
我們都知道,多義詞是自然語言中的常見現象,也體現了語言的靈活性和高效性。
例如,單詞play 可以表示玩游戲,可以表示播放,可以表示做某項運動,還可以表示演奏某個樂器。但在以word2vec 為代表的第一代預訓練語言模型中,一個單詞的詞向量是固定不變的,也就是說,在對單詞play 進行向量表示的過程中,不會區分單詞的不同含義,這就導致無法區分多義詞的不同語義。
美國語言學家Zellig S. Harris 在1954 年的一篇文章[10] 中提到:“在相近上下文中出現的單詞是相似的”(words are similar if they appear in similar contexts)。
英國語言學家John Rupert Firth 在1957 年的A synopsis of linguistic?theory?中提到:“你可以通過單詞的上下文知道其含義”(You shall know a word by the company it keeps)。
EMLo 論文的原始標題是Deep contextualized word representation,從“contextualized”一詞可以看出,ELMo 考慮了上下文的詞向量表示方法,以雙向LSTM 作為特征提取器,同時考慮了上下文的信息,從而較好地解決了多義詞的表示問題,后續章節會詳細介紹。
ELMo 開啟了第二代預訓練語言模型的時代,即“預訓練+ 微調”的范式。
自ELMo 后,Transformer[11] 作為更強大的特征提取器,被應用到后續的各種預訓練語言模型中(如GPT、BERT 等),不斷刷新自然語言處理領域任務的SOTA(State Of The Art,當前最優結果)表現。
Transformer 是由谷歌在2017 年提出的,其創新性地使用了Self-Attention(自注意力),更善于捕捉長距離的特征,同時其并行能力也非常強大,逐步取代了RNN,成了最主要的自然語言處理特征提取工具。
03
預訓練語言模型發展史及分類
圖4 給出了預訓練語言模型的發展史。
圖4 預訓練語言模型的發展史
可以看到,2013 年,word2vec 開啟了自然語言預訓練的序章。
隨后,Attention的出現使得模型可以關注更重要的信息,之后的幾年,基于上下文的動態詞向量表示ELMo,以及使用Self-Attention 機制的特征提取器Transformer的提出,將預訓練語言模型的效果提升到了新的高度。
隨后,BERT、RoBERTa、XLNet、T5、ALBERT、GPT-3 等模型,從自然語言理解及自然語言生成等角度,不斷刷新自然語言處理領域任務的SOTA 表現。
《預訓練語言模型》一書的后面章節會詳細介紹典型的預訓練語言模型。這里,我們簡單區分自回歸(Autoregressive)和自編碼(Autoencoder)兩種不同的模型。
簡單來講,自回歸模型可以類比為早期的統計語言模型(Statistical Language?Model),也就是根據上文預測下一個單詞,或者根據下文預測前面的單詞。例如,ELMo 是將兩個方向(從左至右和從右至左)的自回歸模型進行了拼接,實現了雙向語言模型,但本質上仍然屬于自回歸模型。
自編碼模型(如BERT),通常被稱為是降噪自編碼(Denosing Autoencoder)模型,可以在輸入中隨機掩蓋一個單詞(相當于加入噪聲),在預訓練過程中,根據上下文預測被掩碼詞,因此可以認為是一個降噪(denosing)的過程。
這種模型的好處是可以同時利用被預測單詞的上下文信息,劣勢是在下游的微調階段不會出現掩碼詞,因此[MASK] 標記會導致預訓練和微調階段不一致的問題。
BERT 的應對策略是針對掩碼詞,以80% 的概率對這個單詞進行掩碼操作,10% 的概率使用一個隨機單詞,而10% 的概率使用原始單詞(即不進行任何操作),這樣就可以增強對上下文的依賴,進而提升糾錯能力。
XLNet 改進了預訓練階段的掩碼模式,使用了自回歸的模式,因此XLNet 被看作廣義的自回歸模型。
國際計算語言學協會(The Association for Computational Linguistics)主席、微軟亞洲研究院前副院長周明曾給出了一個關于自回歸和自編碼模型的示例,如圖5所示。
圖5 自回歸模型和自編碼模型的示例
自回歸模型,就是根據句子中前面的單詞,預測下一個單詞。
例如,通過“LM is a typical task in natural language ____”預測單詞“processing”;而自編碼模型,則是通過覆蓋句中的單詞,或者對句子做結構調整,讓模型復原單詞和詞序,從而調節網絡參數。
在圖5 (a) 所示的單詞級別的例子中,句子中的“natural”被覆蓋,而在圖5 (b) 所示的句子級別的例子中,不僅有單詞的覆蓋,還有詞序的改變。
可以看出,ELMo、GPT 系列和XLNet 屬于自回歸模型,而BERT、ERINE、RoBERTa 等屬于自編碼模型。
前文提到,在利用CNN 進行圖像的預訓練時,淺層特征更加通用,深層特征更加具體。通過對BERT 的觀察,研究人員發現預訓練語言模型也有相同的表現,隨著模型由淺至深,特征也更具體。
圖6 給出了針對BERTLARGE提取語義和語法信息的結果,其中,語法信息(Syntactic Information),如詞性(Part-Of-Speech,POS)、成分(Constituents)、依存(Dependencies)更早出現在BERTLARGE 的淺層,而語義信息(Semantic Information),如共指消解(Coreference)、語義原型角色(Sementic Proto-Roles,SPR)等則出現在BERTLARGE 的深層。
圖6 BERTLARGE 提取語義和語法信息的結果
目前,預訓練語言模型的通用范式是:
(1)基于大規模文本,預訓練得出通用的語言表示。
(2)通過微調的方式,將學習到的知識傳遞到不同的下游任務中。
在微調的過程中,每種預訓練語言模型的用法不盡相同,《預訓練語言模型》一書的后面章節將對典型的模型進行詳細闡述。
這里以GPT為例,簡單介紹在預訓練之后,在下游,不同的自然語言處理任務的具體用法如圖7所示。
圖7 GPT 架構圖及下游任務
圖7的左邊,是基于Transformer 的GPT 的基本框架,而圖7的右邊則展示了如何將不同的自然語言處理任務調整至適應GPT 框架的形式。
以分類任務為例,在一段文本的開頭和結尾分別加上“Start”和“Extract”標示符對其進行改造,然后使用Transformer 進行處理,最后通過線性層(Linear)完成監督學習任務,并輸出分類結果。
類似地,對于多選(Multiple Choice)任務,需要根據上下文(Context)選擇正確答案(Answer)。
具體來說,如圖7所示,將答案“Answer”,與其上下文“Context”通過添加首尾標示符及中間分隔符的方式進行改造,對其他答案進行相同的操作,然后分別經過Transformer,再經過線性層,得到每一個選項的可能性概率值。
由于不同的預訓練語言模型的結構不同、優勢不同,在實際應用中,需要根據具體的任務選擇不同的模型。例如,BERT 系列模型更適用于理解任務,而GPT 系列模型更適用于生成任務。
預訓練語言模型在近兩年得到了蓬勃發展,復旦大學的邱錫鵬教授在Pretrained models for natural language processing: A survey這篇綜述論文中整理了一張預訓練語言模型分類體系圖,圖8為筆者翻譯后的版本。
圖8 預訓練語言模型分類體系圖
依據四種不同的分類標準,對主流預訓練語言模型進行了分類整理。
第一個標準是語言表示是否上下文相關。正如前文提到的,早期的預訓練語言模型(如word2vec、GloVe)都是上下文無關的,而ELMo 之后的大多數預訓練語言模型都是上下文相關的。
第二個標準是模型的核心結構。例如,ELMo 使用的是雙向LSTM 結構,而BERT 的核心結構是Transformer Encoder,GPT 的核心結構是Transformer Decoder。
第三個標準是任務類型,可以分為有監督模型和無監督/自監督模型兩類。例如,機器翻譯模型(訓練數據通常是句對)屬于有監督模型,如CoVe等,而大多數預訓練語言模型都屬于無監督/自監督模型,如ELMo、BERT等。
第四個標準是模型擴展。隨著預訓練語言模型的發展,出現了不同的擴展方向,如模型結構的擴展、領域的擴展、任務的擴展和模態的擴展等。
每個模型的細節,在《預訓練語言模型》一書的后面章節會有更詳細的介紹。
預訓練語言模型為自然語言處理開啟了新的篇章,模型結構和訓練方法不斷創新,從單語言到多語言,再到多模態,幾乎支持了所有自然語言處理任務,并可擴展到視覺、語音等領域,大大降低了自然語言處理研究和應用的門檻。
周明曾提到:“大數據預訓練+ 小數據微調,標志著自然語言處理進入了大工業化的時代?!钡獹PT-3 的“大力出奇跡”(有1750 億參數量)是否真正標志著人工智能從感知智能到認知智能的跨越?預訓練語言模型的缺陷在哪里?未來的發展趨勢如何?《預訓練語言模型》一書的第8章對這些問題進行了探討,感興趣的同學可以閱讀《預訓練語言模型》一書!
▼
參考文獻:
[1]?MIKOLOV T, CHEN K, CORRADO G S, et al. Efficient estimation of word?representations in vector space[C]//ICLR. 2013.
[2] PENNINGTON J, SOCHER R, MANNING C D. Glove: Global vectors for?word representation[C]//EMNLP. 2014.
[3] PETERS M E, NEUMANN M, IYYER M, et al. Deep contextualized word?representations[C]//NAACL-HLT. 2018.
[4] TENNEY I, DAS D, PAVLICK E. Bert rediscovers the classical nlp pipeline?[C]//ACL. 2019.
[5] RADFORD A. Improving language understanding by generative pretraining[C], 2018.
[6] QIU X, SUN T, XU Y, et al. Pre-trained models for natural language processing:A survey[J]. ArXiv, 2020, abs/2003.08271.
▊《預訓練語言模型》
邵浩 劉一烽 編著
梳理預訓練語言模型的發展歷史、基本概念
剖析具有代表性的預訓練語言模型的實現細節,配代碼
預訓練語言模型的評測、應用及趨勢分析
(京東限時活動,快快掃碼搶購吧!)
好書值得分享,這次我們有4本相送哦~ 各位小可愛可通過以下兩種方式參與:
方式一:本文『評論點贊』前3名;
方式二:『最走心評論』幸運兒1名;
注意活動截止時間為【6月13日(周日) 18點整】哦~
▼點擊閱讀原文,獲取本書詳情~ 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的预训练模型的前世今生(有福利!)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SIGIR2020 | 淘宝提出结合知识
- 下一篇: 不讲武德,只用标签名就能做文本分类