一、文字特徵編碼
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這種兩階段解決思路,而且效果應該會有明顯提升。