這是我個人的總結,參考了張俊林這篇很好的文章,請感興趣看以下鏈接~

張俊林:放棄幻想,全面擁抱Transformer:自然語言處理三大特徵抽取器(CNN/RNN/TF)比較?

zhuanlan.zhihu.com圖標

一、簡介

自然語言處理中的預訓練技術發展歷程——從Word Embedding到Bert

  • Neural language models
  • Word Embedding
  • Pretrained language models

什麼是語言模型?

為了能夠量化地衡量哪個句子更合理,可以通過如圖所示的函數,核心函數P的思想是根據句子裡面前面的一系列前導單詞預測後面跟哪個單詞的概率大小(理論上除了上文之外,也可以引入單詞的下文聯合起來預測單詞出現概率)。

句子裡面每個單詞都有個根據上文預測自己的過程,把所有這些單詞的產生概率乘起來,數值越大代表這句話越合理。

二、Neural language models

神經網路語言模型(NNLM):

最早的神經網路語言模型: 根據前n個單詞,通過前饋神經網路預測下一個單詞

[Bengio et al., NIPS 』01; Bengio et al., JMLR 』03]
  • 前面的單詞 W_i 用One-hot編碼(比如:0001000)作為原始單詞輸入,之後乘以矩陣Q後獲得向量 C(W_i ) ,每個單詞的 C( W_i ) 拼接
  • 上接隱層tanh,然後送入softmax去預測後面應該後續為哪個單詞。

三、Word Embedding

經典的Word2Vec有兩種訓練方法:

  • CBOW: 從一個句子裡面把一個詞mask去,用這個詞的上下文去預測被mask的這個詞
  • Skip-gram: 輸入某個單詞,要求網路預測它的上下文單詞
  • 與one-hot(比如:0001000)作為原始單詞編碼,word embeddings 可以表達單詞間的關係及相似度

Word Embedding 存在什麼問題?

四、Pretrained language models

1. ELMO:基於上下?的Embedding

2018 NAACL 最佳論文《Deep Contextualized Word Representations》

  • 雙層雙向LSTM預訓練
  • 語?模型作為訓練目標:根據前(後)幾個單詞預測下一個詞

ELMO:訓練好之後如何使??

ELMO採用了兩階段過程:

  • 利用語言模型進行預訓練;
  • 從預訓練網路中在線抽取對應單詞的特徵送入至下游任務中

ELMO:解決了多義詞問題

ELMO:效果如何?

在六個NLP任務上,提升5%~25%

ELMO:有什麼缺陷?(與GPT、Bert相比較)

LSTM抽取文本特徵的能力遠弱於Transformer

  • 在特徵抽取器選擇方面,ELMO使用了LSTM而不是Transformer(谷歌於17 年做機器翻譯任務的「Attention is all you need」的論文中提出)

雙向LSTM特徵拼接的方式可能弱於一體化的雙向Transformer結構

2. OpenAI GPT: Pretrain+Finetune兩階段過程

預訓練的過程

OpenAI GPT: 訓練好之後如何使用?

  • 對於分類問題,不用怎麼動,加上一個起始和終結符號即可;
  • 對於句子關係判斷問題,比如Entailment,兩個句子中間再加個分隔符即可;
  • 對文本相似性判斷問題,把兩個句子順序顛倒下做出兩個輸入即可,這是為了告訴模型句子順序不重要;
  • 對於多項選擇問題,則多路輸入,每一路把文章和答案選項拼接作為輸入即可。

1)文本蘊含 :將前提 p 和假設 h 序列拼接,中間用($)符號來分隔兩個序列。

2)文本相似度:分別將兩個序列輸入,通過模型輸出兩個序列的特徵向量,再逐元素相加輸入線性層。3)問答和常識推理:給定上下文文本 z ,問題 q ,一組可能的候選答案,將上下文文本、問題以及每個候選答案拼接起來,得到這樣一個序列,再將該序列輸入預訓練模型,經softmax層得到候選答案的概率分布。

OpenAI GPT: 效果如何?

在12個NLP任務上,9個達到最佳效果

OpenAI GPT: 有什麼缺點?

  • GPT採用了Transformer Encoder結構作為特徵提取器,但區別在於OpenAI GPT為單向語言模型,僅通過上文單詞來預測當前單詞。(對比Bert)

3. Bert: NLP領域裡程碑式的突破

  • Transformer特徵抽取器
  • 語言模型作為訓練任務(雙向)

Bert: 模型的輸?如何處理?

輸入為三個embedding的求和,分別是:

1)Token embedding:詞向量2)Segment Embedding:區分不同句子的標誌(預訓練中需要預測B句子是否為A句子的下一個句子)3)Position Embedding :單詞的位置編碼

Bert: 如何構造雙向語言模型?

  • Task #1: Masked LM
  • Task #2: Next Sentence Prediction

GPT 2.0

推薦閱讀:

相关文章