天天看點

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

預訓練語言模型的發展

reference:

https://zhuanlan.zhihu.com/p/49271699

https://zhuanlan.zhihu.com/p/353054197

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT
  • 第一代PTMs:目标是學習到好的word embeddings(詞向量,例如一個詞對應到一個200次元的向量),然後模型本身就被丢棄了。例如Word2Vec,GloVe。雖然這些pre-trained embeddings可以捕捉到詞的“部分”語義資訊,它們大多數是上下文無關的,無法捕捉到文脈中的更進階别的抽象和概念,例如多義詞,文法結構,語義角色,以及指代分析。
  • 第二代PTMs:集中在學習基于文脈的詞向量表示,保留模型本身。例如,CoVe, ELMo, OpenAI GPTx以及BERT。在應用到下遊任務的時候,模型本身(例如多層Transformer’s Encoder Layers)會被繼續使用。

1. Word Embedding

1.1 語言表示學習

好的語言表示,應該能夠捕捉文本資料中的:隐含的文法規則,常識知識。例如,詞彙含義,文法結構,語義角色,甚至到語學方面(指代消解等)。

語言表示學習的主要思想為:用低維實數向量(當然也有fp32, fp16, int8等單浮點數和8-bit整數的向量)來表示一段文本,雖然每個次元的浮點數沒有具體的含義,但是向量整體表示了具體的概念。

有兩種詞嵌入(word embedding)的方法:上下文無關的(文脈無關的)和文脈相關的。其差別就在于一個詞的嵌入表示vector是否根據其所在的context而動态發生變化。

1.2 語言模型

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

語言模型是為了衡量哪個句子更像一句話,核心函數P的思想是根據句子中前面的一系列前導單詞預測跟的單詞的機率大小(理論上,可以引入單詞上下文聯合預測單詞的出現機率)、

若使用神經網絡結構去實作語言模型的任務,即要求訓練後的網絡能夠做到:輸入一句話的前面幾個單詞,網絡能夠輸出後面緊跟的單詞應該是哪個。

(1)原始的神經網絡語言模型(NNLM,2003)

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

訓練過程:學習任務是輸入某個句中單詞 Wt=“Bert” 前面句子的t-1個單詞,要求網絡正确預測單詞Bert,即最大化:P(Wt=“Bert”|W1,W2,…W(t−1);θ)

  • 前面任意單詞 Wi 用Onehot編碼(比如:0001000)作為原始單詞輸入;
  • 之後乘以矩陣Q後獲得向量 C(Wi) ;
  • 每個單詞的 C(Wi) 拼接,上接隐層,然後接softmax去預測後面應該後續接哪個單詞。

這個 C(Wi) 是什麼?這其實就是單詞對應的Word Embedding值,那個矩陣Q包含V行,V代表詞典大小,每一行内容代表對應單詞的Word embedding值。隻不過Q的内容也是網絡參數,需要學習獲得,訓練剛開始用随機值初始化矩陣Q,當這個網絡訓練好之後,矩陣Q的内容被正确指派,每一行代表一個單詞對應的Word embedding值。

是以,通過這個網絡學習語言模型任務,這個網絡不僅自己能夠根據上文預測後接單詞是什麼,同時獲得一個副産品,就是那個矩陣Q,這就是單詞的Word Embedding是被如何學會的。

1.3 用語言模型做Word Embedding的工具

1.3.1 Word2Vec (2013)

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

Word2Vec的網絡結構與NNLM基本類似,但是訓練方法有所不同(NNLM的訓練方式為:輸入一個單詞的上文,去預測這個單詞)。Word2Vec有兩種訓練方法:

  • CBOW:從一個句子裡面把一個詞摳掉,用這個詞的上文和下文去預測被摳掉的這個詞
  • Skip-gram:與CBOW相反,輸入某個單詞,要求網絡預測它的上下文單詞
Word2Vec和NNLM訓練方式不一樣的原因在于:
  • NNLM的主要任務是要學習一個解決語言模型任務的網絡結構,語言模型就是要看到上文預測下文,而word embedding隻是一個副産品;
  • Word2Vec目标單純就是要word embedding的,這是主産品。

1.3.2 Glove

1.4 Word Embedding是一個标準的預訓練過程

如何在下遊任務中使用Word Embedding?

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

以QA下遊任務為例,即:給定一個問題X,給定另一個句子Y,要判斷句子Y是否是問題X的正确答案。假設所設計的網絡如上圖所示,擷取Word Embedding 的方法與NNLM是一樣的,學習到的網絡參數矩陣Q的作用等價于将網絡Onehot層映射到embedding層,是以Word Embedding等價于把Onehot層到embedding層的網絡用預訓練好的參數矩陣Q初始化了。下遊NLP任務在使用Word Embedding的時候有兩種做法:①Frozen:就是Word Embedding那層網絡參數固定不動;②Fine-Tuning:就是Word Embedding這層參數使用新的訓練集合訓練也需要跟着訓練過程更新掉。

1.5 Word Embedding存在的問題——多義詞問題

Word Embedding其實對于很多下遊NLP任務是有幫助的,但是效果其實沒有那麼好,問題在于Word Embedding存在的多義詞問題。

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

對于多義詞,Word Embedding是無法進行區分的。以上圖為例,不論什麼上下文句子經過word2vec,都是預測相同的單詞bank,而同一個單詞占用一行的參數空間,這就導緻了兩種不同的上下文資訊被編碼到相同的word embedding空間中去。

ELMO提供了一種簡潔優雅的解決方案。

2. 從Word Embedding到ELMO

ELMO即“Embedding from Language Models”,是一種基于特征融合的預訓練方法。

  • 之前的Word Embedding方法本質上是靜态的方式,也就是訓練好之後每個單詞的表達就固定住了,以後使用的時候,不論新句子上下文單詞是什麼,這個單詞的Word Embedding不會跟着上下文場景的變化而改變(是以對于比如Bank這個詞,它事先學好的Word Embedding中混合了幾種語義 ,在應用中來了個新句子,即使從上下文中(比如句子包含money等詞)明顯可以看出它代表的是“銀行”的含義,但是對應的Word Embedding内容也不會變,它還是混合了多種語義。)
  • ELMO的本質思想是:事先用語言模型學好一個單詞的Word Embedding,此時多義詞無法區分;在實際使用Word Embedding的時候,單詞已經具備了特定的上下文了,這個時候根據上下文單詞的語義去調整單詞的Word Embedding表示,這樣經過調整後的Word Embedding更能表達在這個上下文中的具體含義,自然也就解決了多義詞的問題了。是以ELMO本身是個根據目前上下文對Word Embedding動态調整的思路。

ELMO采用了典型的兩階段訓練過程:

  • 第一階段:利用語言模型進行預訓練。
    預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT
    如上圖所示,網絡結構采用雙層LSTM,目前語言模型訓練的任務目标是根據單詞 Wi 的上下文去正确預測單詞 Wi , Wi 之前的單詞序列Context-before稱為上文,之後的單詞序列Context-after稱為下文。圖中左端的前向雙層LSTM代表正方向編碼器,輸入的是從左到右順序的除了預測單詞外 Wi 的上文Context-before;右端的逆向雙層LSTM代表反方向編碼器,輸入的是從右到左的逆序的句子下文Context-after;每個編碼器的深度都是兩層LSTM疊加(這個網絡結構其實在NLP中是很常用的)。使用這個網絡結構利用大量語料做語言模型任務就能預先訓練好這個網絡,如果訓練好這個網絡後,輸入一個新句子 Snew ,句子中每個單詞都能得到對應的三個Embedding:最底層是單詞的Word Embedding,往上走是第一層雙向LSTM中對應單詞位置的Embedding,這層編碼單詞的句法資訊更多一些;再往上走是第二層LSTM中對應單詞位置的Embedding,這層編碼單詞的語義資訊更多一些。也就是說,ELMO的預訓練過程不僅僅學會單詞的Word Embedding,還學會了一個雙層雙向的LSTM網絡結構,而這兩者後面都有用。
  • 第二階段:在做下遊任務時,從預訓練網絡中提取對應單詞的網絡各層的Word Embedding作為新特征補充到下遊任務中
    預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT
    以QA下遊任務為例,此時對于問句X,可以先将句子X作為預訓練好的ELMO網絡的輸入,這樣句子X中每個單詞在ELMO網絡中都能獲得對應的三個Embedding,之後給予這三個Embedding中的每一個Embedding一個權重a,根據各自權重累加求和,将三個Embedding整合成一個,然後将整合後的這個Embedding作為X句在自己任務的那個網絡結構中對應單詞的輸入,以此作為補充的新特征給下遊任務使用。對于QA的回答句子Y也是如此處理。因為ELMO給下遊提供的是每個單詞的特征形式,是以這一類預訓練的方法被稱為“Feature-based Pre-Training”。
  • TagLM采用類似ELMO的思路做命名實體識别任務的過程:
預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

2.1 ELMO解決多義詞問題

靜态Word Embedding無法解決多義詞的問題,那麼ELMO引入上下文動态調整單詞的embedding後多義詞問題解決了嗎?

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

​ 如上圖所示:對于Glove訓練出的Word Embedding來說,多義詞比如play,根據它的embedding 找出的最接近的其它單詞大多數集中在體育領域,這很明顯是因為訓練資料中包含play的句子中體 育領域的數量明顯占優導緻;而使用ELMO,根據上下文動态調整後的embedding不僅能夠找出對 應的“演出”的相同語義的句子,而且還可以保證找出的句子中的play對應的詞性也是相同的,這是 超出期待之處。之是以會這樣,是因為第一層LSTM編碼了很多句法資訊,這在 這裡起到了重要作用。

2.2 ELMO的缺點(與BERT/GPT對比)

  • LSTM抽取特征的能力遠弱于Transformer:在特征抽取器選擇方面,ELMO使用了LSTM而不是Transformer,Transformer是谷歌在17年做機器翻譯任務的“Attention is all you need”的論文中提出的,引起了相當大的反響,很多研究已經證明了Transformer提取特征的能力是要遠強于LSTM的。如果ELMO采取Transformer作為特征提取器,那麼估計Bert的反響遠不如現在的這種火爆場面。
  • 拼接方式雙向融合特征融合能力偏弱:ELMO采取雙向拼接這種融合特征的能力可能比Bert一體化的融合特征方式弱,但是,這隻是一種從道理推斷産生的懷疑,目前并沒有具體實驗說明這一點。

如果把ELMO這種預訓練方法和圖像領域的預訓練方法對比,發現兩者模式看上去還是有很大差異的。除了以ELMO為代表的這種基于特征融合的預訓練方法外,NLP裡還有一種典型做法,這種做法和圖像領域的方式就是看上去一緻的了,一般将這種方法稱為“基于Fine-tuning的模式”,而GPT就是這一模式的典型開創者。

3. 對比總結

3.1 無上下文的詞嵌入與上下文相關的詞嵌入對比:

  • 無上下文的詞嵌入

    對于詞x和詞表v: x∈v,将x映射到一個向量ex∈RDe ,使用一個查詢表:D矩陣(每一列對應到一個詞),De為超參數,代表了詞向量的次元(50/100/200……)

    存在的問題:

    • 詞嵌入為靜态的,每個token固定一個embedding(即使表示不同的意思)
    • OOV(未登入詞)問題,即一個詞不在預先定義好的詞表裡面的時候,就無法查詢到其詞向量。為了解決這個問題,有類似CharCNN, FastText,以及BERT中使用的Byte-Pair Encoding (BPE)等方案。主要思想即拆字,例如英文的單詞被拆成類似prefix+stem+suffix這樣的,中文就是按照字來模組化(把中文字當成一個image,使用一個CNN model進行學習,得到embedding),等等。
  • 上下文相關的詞嵌入

    為了解決多義詞問題,以及基于單詞天然和語境相關的考量,需要區分不同語境下的詞的語義。

    給定一個文本序列: x1,x2,…,xT ;每個token xt∈V 可以是一個word或者sub-word,則該序列對應的上下文相關表示可以表示為:[h1, h2,…,hT] = fenc(x1,x2,…,xT),其中,fenc為神經編碼器,ht為xt對應的語境嵌入(ht與全體x1,x2,…,xT都相關)。

3.2 神經語境編碼器分類

3.2.1 序列模型

  • 基于CNN,設定視窗,然後對視窗内的若幹詞進行卷積操作,得到這個視窗内的詞的嵌入表示;
  • 基于LSTM/GRU的,基于單向(從左向右)或者雙向的RNN模型,對整個序列進行模組化,得到每個詞的語境下的嵌入表示

3.2.2 非序列模型

  • 例如樹結構,圖結構等等,例如Recursive NN (例如,建立在文法樹上的對葉節點的單詞和非葉節點的短語類别的嵌入表示),TreeLSTM, GCN等新型神經網絡結構。很多都依賴于文法樹,例如PCFG, dependency parsers’ trees等。
  • 全連接配接自注意力模型:使用全連接配接圖,來建立任意兩個詞之間的關系,并通過大規模無标注資料,讓模型自動學習結構化資訊。通常,兩個詞之間的”連接配接權重“會被自注意力機制動态計算。典型的代表就是Transformer中的multi-head self-attention網絡結構。

3.3.3 分析

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

如上圖所示,(a)為卷積網絡(視窗=3),h2由x1,x2,x3決定;(b)為循環神經網絡(LSTM/GRU……),h2由h1,h3和x2決定;©為全連接配接自注意力結構。

  • 序列模型:局部性偏見,難以捕捉長距離互動;但是容易訓練,并在若幹NLP任務上取得了不錯的結果
  • 非序列模型(代表為Transformer):更強大,使用的參數更多,可以更好地覆寫長距離以來問題;但是需要大規模訓練預料,容易在中小規模資料上過拟合。

3.4 為什麼要預訓練

對于NLP任務,缺乏大規模人工标注的資料,但是有超大規模的文本庫

  • 基于大規模文本庫的預訓練可以很好的學習到通用的語言表示,有助于下遊應用任務;
  • 提供更好的模型初始化方法,進而得到具有更好泛化能力的模型,并且加速目标任務的收斂速度;
  • 可以被看成一種正則化的方法,防止模型在中小規模标注資料上過拟合。

4. 從Word Embedding到GPT

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

GPT即“Generative Pre-Training”,指生成式的預訓練。

GPT也采用兩階段過程,第一個階段是利用語言模型進行預訓練,第二階段通過Fine-tuning的模式解決下遊任務。

  • 第一階段:預訓練過程,與ELMO類似,主要不同在于兩點:①特征抽取器不是用的RNN,而是用的Transformer,其特征抽取能力要強于RNN;②GPT的預訓練雖然仍然是以語言模型作為目标任務,但是采用的是單向的語言模型,即:語言模型訓練的任務目标是根據 Wi 單詞的上下文去正确預測單詞 Wi , Wi 之前的單詞序列Context-before稱為上文,之後的單詞序列Context-after稱為下文。ELMO在做語言模型預訓練的時候,預測單詞 Wi 同時使用了上文和下文,而GPT則隻采用Context-before這個單詞的上文來進行預測,而抛開了下文。這個選擇現在看不是個太好的選擇,原因很簡單,它沒有把單詞的下文融合進來,這限制了其在更多應用場景的效果,比如閱讀了解這種任務,在做任務的時候是可以允許同時看到上文和下文一起做決策的。
    • transformer學習:

      Jay Alammar可視化介紹Transformer:https://jalammar.github.io/illustrated-transformer/

      哈佛大學NLP研究組:http://nlp.seas.harvard.edu/2018/04/03/attention.html

  • 第二階段:Fine-tuning過程
    預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT
    對于各種NLP下遊任務,如何進行改造?
    預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT
    • 對于分類問題,不用怎麼動,加上一個起始和終結符号即可;
    • 對于句子關系判斷問題,比如Entailment,兩個句子中間再加個分隔符即可;
    • 對文本相似性判斷問題,把兩個句子順序颠倒下做出兩個輸入即可,這是為了告訴模型句子順序不重要;
    • 對于多項選擇問題,則多路輸入,每一路把文章和答案選項拼接作為輸入即可。

4.1 GPT的缺點(與BERT對比)

  • 如果把語言模型改造成雙向效果可能會更好

5. 從Word2Vec/ELMO/GPT到BERT

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

Bert采用和GPT完全相同的兩階段模型,首先是語言模型預訓練;其次是使用Fine-Tuning模式解決下遊任務。和GPT的最主要不同在于在預訓練階段采用了類似ELMO的雙向語言模型,當然另外一點是語言模型的資料規模要比GPT大。

  • 第一階段:預訓練階段,與GPT相同;
  • 第二階段:Fine-Tuning階段,與GPT類似。
    預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

5.1 NLP的幾類問題

  • 序列标注(句子中每個單詞要求模型根據上下文都要給出一個分類類别):分詞/POS Tag/NER/語義标注……
  • 分類任務(不管文章有多長,總體給出一個分類類别即可):文本分類/情感計算……
  • 句子關系判斷(給定兩個句子,模型判斷出兩個句子是否具備某種語義關系):Entailment/QA//語義改寫/自然語言推理……
  • 生成式任務(輸入文本内容後,需要自主生成另外一段文字):機器翻譯/文本摘要……

5.2 BERT如何改造下遊任務

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT
  • 對于句子關系類任務,很簡單,和GPT類似,加上一個起始和終結符号,句子之間加個分隔符即可。對于輸出來說,把第一個起始符号對應的Transformer最後一層位置上面串接一個softmax分類層即可。
  • 對于分類問題,與GPT一樣,隻需要增加起始和終結符号,輸出部分和句子關系判斷任務類似改造;
  • 對于序列标注問題,輸入部分和單句分類是一樣的,隻需要輸出部分Transformer最後一層每個單詞對應位置都進行分類即可。
  • 對于機器翻譯或者文本摘要,聊天機器人這種生成式任務,同樣可以稍作改造即可引入Bert的預訓練成果。隻需要附着在S2S結構上,encoder部分是個深度Transformer結構,decoder部分也是個深度Transformer結構。根據任務選擇不同的預訓練資料初始化encoder和decoder即可。這是相當直覺的一種改造方法。當然,也可以更簡單一點,比如直接在單個Transformer結構上加裝隐層産生輸出也是可以的。

不論如何,從這裡可以看出,NLP四大類任務都可以比較友善地改造成Bert能夠接受的方式。這其實是Bert的非常大的優點,這意味着它幾乎可以做任何NLP的下遊任務,具備普适性,這是很強的。

5.3 Word2Vec、ELMO、GPT、BERT四者的關系

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

從上圖可見,如果我們把GPT預訓練階段換成雙向語言模型,那麼就得到了Bert;而如果我們把ELMO的特征抽取器換成Transformer,那麼我們也會得到Bert。是以Bert最關鍵兩點在于:①特征抽取器采用Transformer;②預訓練的時候采用雙向語言模型。

5.4 如何使用transformer做雙向語言模型任務

  • 直覺的思路:參考ELMO網絡結構,将兩個LSTM替換為兩個transformer,一個負責正向,一個負責反向特征提取。
  • BERT的做法:與CBOW方法類似,在做語言模型任務的時候,把要預測的單詞摳掉,然後根據它的上文Context-Before和下文Context-after去預測單詞。
預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

5.4.1 BERT模型

BERT模型本身的創新點在于:①Masked 雙向語言模型;②Next Sentence Prediction

  • Masked 雙向語言模型:本質思想與CBOW相似,細節上有所改進。
    預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT
随機選擇語料中15%的單詞,把它摳掉,也就是用[Mask]掩碼代替原始單詞,然後要求模型去正确預測被摳掉的單詞。但是這裡有個問題:訓練過程大量看到[mask]标記,但是真正後面用的時候是不會有這個标記的,這會引導模型認為輸出是針對[mask]這個标記的,但是實際使用又見不到這個标記,這自然會有問題。為了避免這個問題,Bert改造了一下,15%的被選中要執行[mask]任務的單詞中,隻有80%真正被替換成[mask]标記,10%被随機替換成另外一個單詞,10%情況這個單詞還待在原地不做改動。
  • Next Senctence Prediction:指的是做語言模型預訓練的時候,分兩種情況選擇兩個句子,一種是選擇語料中真正順序相連的兩個句子;另外一種是第二個句子從語料庫中随機選擇一個拼到第一個句子後面。要求模型除了做上述的Masked語言模型任務外,附帶再做個句子關系預測,判斷第二個句子是不是真的是第一個句子的後續句子。之是以這麼做,是考慮到很多NLP任務是句子關系判斷任務,單詞預測粒度的訓練到不了句子關系這個層級,增加這個任務有助于下遊句子關系判斷任務。是以可以看到,它的預訓練是個多任務過程。
    預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

5.4.2 BERT模型的輸入輸出

BERT的輸入:

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT
BERT的輸入部分是個線性序列,兩個句子通過分隔符[SEP]分割,最前面和最後增加兩個辨別符号。每個單詞有三個embedding:
  • 位置資訊embedding:這是因為NLP中單詞順序是很重要的特征,需要在這裡對位置資訊進行編碼;
  • 單詞embedding:這個就是之前一直提到的單詞embedding;
  • 句子embedding,因為前面提到訓練資料都是由兩個句子構成的,那麼每個句子有個句子整體的embedding項對應給每個單詞。
把單詞對應的三個embedding疊加,就形成了Bert的輸入。

BERT的輸出:

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

5.4.3 BERT的評價與意義

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

Bert借鑒了ELMO,GPT及CBOW,主要提出了Masked 語言模型及Next Sentence Prediction,但是這裡Next Sentence Prediction基本不影響大局,而Masked LM明顯借鑒了CBOW的思想。是以說Bert的模型沒什麼大的創新,更像最近幾年NLP重要進展的集大成者。

如果歸納一下這些進展就是:首先是兩階段模型,第一階段雙向語言模型預訓練,這裡注意要用雙向而不是單向,第二階段采用具體任務Fine-tuning或者做特征內建;第二是特征抽取要用Transformer作為特征提取器而不是RNN或者CNN;第三,雙向語言模型可以采取CBOW的方法去做(細節問題,不算太關鍵,前兩個因素比較關鍵)。

Bert最大的亮點在于效果好及普适性強,幾乎所有NLP任務都可以套用Bert這種兩階段解決思路,而且效果應該會有明顯提升。

6. BERT的變體

7. GPT-X

8. 預訓練過程的本質

預訓練語言模型的發展——從原始神經網絡語言模型到GPT/BERT

上圖給出了NLP在PTMs思想下的一般性神經網絡架構,例如BERT,從從word sequence出發,經過上下文相關編碼器之後,得到H=[h1, …, hn]張量。然後H再扔給具體任務相關的模型,進行下一步fine-tuning。

​ 預訓練過程本質上預訓練是通過設計好一個網絡結構來做語言模型任務,然後把大量甚至是無窮盡的無标注的自然語言文本利用起來,預訓練任務把大量語言學知識抽取出來編碼到網絡結構中,當手頭任務帶有标注資訊的資料有限時,這些先驗的語言學特征當然會對手頭任務有極大的特征補充作用,因為當資料有限的時候,很多語言學現象是覆寫不到的,泛化能力就弱,內建盡量通用的語言學知識自然會加強模型的泛化能力。如何引入先驗的語言學知識其實一直是NLP尤其是深度學習場景下的NLP的主要目标之一,不過一直沒有太好的解決辦法,而ELMO/GPT/Bert的這種兩階段模式看起來無疑是解決這個問題自然又簡潔的方法,這也是這些方法的主要價值所在。

對于NLP的發展:

  • 需要更強的特征抽取器,嘗試超越transformer
  • 如何優雅(簡潔)地引入大量無監督資料中包含的語言學知識

繼續閱讀