Transformer 在《Attention is All You Need》 提出的新模型. 改善了RNN訓練慢的缺點, 能有效提升模型精確率.
一. Transformer組成
Transformer是由一系列的 encoder 和 decoder 所組成, 當然decoder的數量是和decoder相等的, 在論文中都是6.
1.1. 輸入單詞預處理
- 通過embedding方法將句子中的一系列單詞轉換爲一系列詞向量
- 對上一步驟得到的一系列詞向量進行Positional Embedding處理, 引入位置信息,得到輸入 Encoder 的詞向量
1.2. Encoder
由兩個主要功能層組成:
- Self-Attention layer / Multi-Head Attention layer
- Feed Forward Neural Network
爲了使網絡具有一定的深度(DNN), 故引入 Residuals 模塊——即分別在兩個主要功能層後加入一個 Add & Normalize 層, 示意圖如下:
作爲 Encoder 的輸出, 是兩個向量:
此小部分詳見 Multi-Headed-Attention 模塊
- Key Vector
- Value Vector
1.3. Decoder
由三個主要功能層組成:
- Self-Attention layer / Multi-Head Attention layer
- Encoder-Decoder Attention layer
- Feed Forward Neural Network
與Encoder中 Self-Attention 不同的是, Decoder中的 Self-Attention只關注當前t時刻時(從0開始計時), 已經生成得到的前t個單詞, 即指被允許處理輸出序列中更靠前的那些位置. 在進行softmax步驟前, 其會把之後的位置設爲-inf
來表示隱藏.
同樣, 爲了增加網絡的深度, 也引入 Residuals, 即同樣增加 Add & Normalize 層, 示意圖如下:
1.4. 總體流程
二. Transformer 部分機制詳解
2.1. Positional Embedding
該方法能夠擴展到看不見的序列長度處!!!
2.1.1. Positional Embedding原理
爲了使模型能夠理解輸入語句中單詞的順序, 故提出Positional Embedding, 爲每個單詞生成一個對應的位置向量, 然後將得到的詞嵌入向量加上對應的位置向量, 得到基於時間步的詞嵌入向量.
2.1.2. 位置向量生成原理
2.1.3. 效果圖
可以看到在中心位置分成了兩半,因爲左半部分的值由一個正弦函數生成,右半部分由余弦函數生成,然後將它們連接起來形成了每個位置的編碼向量
2.2. Multi-Headed-Attention
2.3. Encoder-Decoder Attention
工作原理類似Multi-Headed Attention機制, 但是隻會從之前層生成 Query Vector, 而Key Vector和Value Vector都是從Encoder的輸出中獲取.