從RNN到BERT

Bo_hemian發表於2020-07-29

一、文字特徵編碼

1. 標量編碼

美國:1 中國:2 印度:3 … 朝鮮:197

標量編碼問題:美國 + 中國 = 3 = 印度

2. One-hot編碼

美國:[1,0,0,0,…,0]
中國:[0,1,0,0,…,0]
印度:[0,0,1,0,…,0]

美國 + 中國 = [1,1,0,0,…,0],代表擁有美國和中國雙重國籍

3. Embedding編碼

二、文字序列化表示

1、Tokenization

2、Build Dictionary

3、One-hot encoding

 

4、Align Sequences

三、RNN模型

 

整個RNN只有一個引數矩陣A。RNN 在大規模的資料集上已經過時,不如Transformer模型,但在小規模資料集上,RNN還是很有用的。

3.1 RNN模型結構

3.2 為什麼用雙曲正切?是否可去掉?

3.3 RNN的模型引數

引數矩陣A的行: shape(h)

引數矩陣A的列: shape(h)+shape(x)

總引數數量: shape(h)× [shape(h)+shape(x)] (未考慮偏移量bias)

輸入x 的維度(詞嵌入向量)應該通過交叉驗證的方式選擇 輸出狀態向量h的維度也應該通過交叉驗證的方式選擇。

3.4 基於RNN的分類任務

可以使用多個狀態向量進行下游任務:

3.4.1 只使用最後一個狀態向量

  • Training Accuracy: 89.2%
  • Validation Accuracy: 84.3%
  • Test Accuracy: 84.4%

3.4.2 使用所有狀態向量

  • Training Accuracy: 96.3%
  • Validation Accuracy: 85.4%
  • Test Accuracy: 84.7%

3.5 RNN的侷限

RNN 在狀態向量ht中積累xt及之前的所有資訊,ht可以看作整個輸入序列中抽取的特徵向量

RNN 記憶比較短,會遺忘很久之前的輸入x 。

四、LSTM模型

4.1 RNN與LSTM網路結構比較

 

4.2 LSTM傳送帶

過去的資訊直接流向未來。 LSTM使用“傳送帶”C 來獲得比RNN更長的記憶。

 4.3 LSTM 門

4.4 Bi-LSTM

 

可以使用RNN或LSTM進行更為複雜的任務,例如機器翻譯,下面會介紹機器翻譯模型Seq2Seq。

五、Seq2Seq模型

Seq2Seq模型用來進行句子翻譯,Seq2Seq包括Encoder編碼器以及Decoder 解碼器 兩部分,最早的Seq2Seq模型由兩個RNN模型組成,如下圖所示。

Attention對Seq2Seq網路的提升十分明顯,如下圖所示(BLEU:機器翻譯評價指標,“雙語評估替補”)

5.1 基於Attention的Seq2Seq模型

5.2 基於Attention的Seq2Seq模型引數計算

5.3 Attention的可解釋性

無論輸入多長,Attention都可以獲得所有輸入資訊,且由於計算每個輸出與所有輸入的狀態向量的相關性,所以會對相關的輸入產生較高相關性,也就具備了一定的可解釋性

六、Attention模型

6.1 基於RNN的Self-Attention

Attention可以用來做句子翻譯。 而Self-Attention可以用來代替RNN。 Self-Attention是Attention的特殊形式。Self-Attention模型其實就是在序列內部做Attention,尋找序列內部的聯絡。

例如輸入一個句子,那麼裡面的每個詞都要和該句子中的所有詞進行attention計算。目的是學習句子內部的詞依賴關係,捕獲句子的內部結構。

Self-Attention和RNN最大的區別是不使用狀態向量h,而是採用狀態向量c 去更新下一個狀態h。

 

6.2 基於RNN的Self-Attention引數計算

七、Transformer模型

  • Transformer完全基於Self- Attention 和Attention Transformer 是一個 Seq2Seq 模型
  • 不是 RNN
  • 僅包含Self-Attention層 、Attention層 和全連線層
  • Transformer完爆最好的RNN+Attention模型

7.1 Transformer中的Attention

Transformer中的Attention剔除了RNN,即沒有迴圈部分。

Attention層接收兩個輸入序列,分別為輸入序列:?_? , ?_? , ?_? ,…, ?_(?,)
輸出序列:?’_? , ?‘_? , ?’_? ,…, ?′_?

使用引數矩陣Wq生成q1,具體計算方式如下:

C1 依賴於所有的輸入x1,x2,…,xm 以及當前的輸入x’_1,具體計算方式如下:

7.2 Transformer中的Self-Attention

7.3 Transformer Multi-Head

 

7.4 Transformer Encoder

Self-Attention Layer + Dense Layer 構造Transformer模型的Encoder

 

7.5 Transformer Encoder Block

 

7.6 Transformer Decoder Block

7.7 Transformer模型

 

 

八、BERT

Bidirectional Encoder Representations from Transformers (BERT)

BERT 用來預訓練Transformer模型的Encoder網路 兩個基本任務: 1、預測被遮擋的單詞: 隨機遮擋單/多個單詞,根據上下文預測被遮擋的單詞。 2、預測兩句話是否在原文裡真實相鄰。

8.1 BERT任務

8.1.1 任務一: 預測被遮擋的單詞

8.1.2 任務二: 預測兩句話是否在原文裡真實相鄰

兩句子拼接 訓練資料構造 50%為真實相鄰的句子,label=True(1); 50%為隨機選擇的句子,label=False(0)

8.2 BERT如何改造下游任務

Bert具備廣泛的通用性,就是說絕大部分NLP任務都可以採用類似的兩階段模式直接去提升效果。

 

8.3 BERT效果

從模型創新角度看一般,創新不算大。但效果太好了,基本重新整理了很多NLP的任務的最好效能。 Bert最大的亮點在於效果好及普適性強,幾乎所有NLP任務都可以套用Bert這種兩階段解決思路,而且效果應該會有明顯提升。

 

相關文章