1. 語言模型
2. Attention Is All You Need(Transformer)算法原理解析
3. ELMo算法原理解析
4. OpenAI GPT算法原理解析
5. BERT算法原理解析
6. 從Encoder-Decoder(Seq2Seq)理解Attention的本質
7. Transformer-XL原理介紹
1. 前言
2017年6月,Google Brain在論文《Attention Is All You Need》中提出的Transformer架構,完全摒棄了RNN的循環機制,采用一種self-attention的方式進行全局處理。我也在博客Attention Is All You Need(Transformer)算法原理解析有所介紹。
Transformer結構的特點:
- 全部用self-attention的自注意力機制。
- 在self-attention的基礎上改進了Multi-Attention和Mask Multi-Attention兩種多頭注意力機制。
- 網絡由多個層組成,每個層都由多頭注意力機制和前饋網絡構成。
- 由於在全局進行注意力機制的計算,忽略了序列中最重要的位置信息,添加了位置編碼(Position Encoding),使用正弦函數完成,為每個部分的位置生成位置向量。
2. Vanilla Transformer
Vanilla Transformer是Transformer和Transformer-XL中間過度的一個算法,所以在介紹Transformer-XL之前我們先來了解下Vanilla Transformer。
Vanilla Transformer的原理圖:
Vanilla Transformer論文中使用64層模型,並僅限於處理 512個字符這種相對較短的輸入,因此它將輸入分成段,並分別從每個段中進行學習,如下圖所示。 在測試階段如需處理較長的輸入,該模型會在每一步中將輸入向右移動一個字符,以此實現對單個字符的預測。
Vanilla Transformer的三個缺點:
- 上下文長度受限:字符之間的最大依賴距離受輸入長度的限制,模型看不到出現在幾個句子之前的單詞。
- 上下文碎片:對於長度超過512個字符的文本,都是從頭開始單獨訓練的。段與段之間沒有上下文依賴性,會讓訓練效率低下,也會影響模型的性能。
- 推理速度慢:在測試階段,每次預測下一個單詞,都需要重新構建一遍上下文,並從頭開始計算,這樣的計算速度非常慢。
3. Transformer-XL
Transformer-XL架構在vanilla Transformer的基礎上引入了兩點創新:
- 循環機制(Recurrence Mechanism)
- 相對位置編碼(Relative Positional Encoding)。
以克服Vanilla Transformer的缺點。與Vanilla Transformer相比,Transformer-XL的另一個優勢是它可以被用於單詞級和字符級的語言建模。
3.1 循環機制(Recurrence Mechanism)
Transformer-XL仍然是使用分段的方式進行建模,但其與Vanilla Transformer的本質不同是在於引入了段與段之間的循環機制,使得當前段在建模的時候能夠利用之前段的信息來實現長期依賴性。如下圖所示:
在訓練階段,處理后面的段時,每個隱藏層都會接收兩個輸入:
- 該段的前面節點的輸出,與Vanilla Transformer相同(上圖的灰色線)。
- 前面段的節點的輸出(上圖的綠色線),可以使模型創建長期依賴關系。這部分輸出市通過cache的機制傳導過來,所以不會參與梯度的計算。原則上只要GPU內存允許,該方法可以利用前面更多段的信息。
在預測階段:
如果預測\(x_{11}\)我們只要拿之前預測好的[\(x_1\),\(x_2\)...\(x_{10}\)]的結果拿過來,直接預測。同理在預測\(x_{12}\)的時候,直接在[\(x_1\),\(x_2\)...\(x_{10}\),\(x_{11}\)]的基礎上計算,不用像Vanilla Transformer一樣每次預測一個字就要重新計算前面固定個數的詞。
3.2 相對位置編碼
在Transformer中,一個重要的地方在於其考慮了序列的位置信息。在分段的情況下,如果僅僅對於每個段仍直接使用Transformer中的位置編碼,即每個不同段在同一個位置上的表示使用相同的位置編碼,就會出現問題。比如,第\(i_2\)段和第\(i_1\)段的第一個位置將具有相同的位置編碼,但它們對於第\(i\)段的建模重要性顯然並不相同(例如第\(i_2\)段中的第一個位置重要性可能要低一些)。因此,需要對這種位置進行區分。
可以將Transformer-XL中的attention的計算分為如下四個部分:
- 基於內容的“尋址”,即沒有添加原始位置編碼的原始分數。
- 基於內容的位置偏置,即相對於當前內容的位置偏差。
- 全局的內容偏置,用於衡量key的重要性。
- 全局的位置偏置,根據query和key之間的距離調整重要性
4. 總結
4.1 優點
- 在幾種不同的數據集(大/小,字符級別/單詞級別等)均實現了最先進的語言建模結果。
- 結合了深度學習的兩個重要概念——循環機制和注意力機制,允許模型學習長期依賴性,且可能可以擴展到需要該能力的其他深度學習領域,例如音頻分析(如每秒16k樣本的語音數據)等。
- 在inference階段非常快,比之前最先進的利用Transformer模型進行語言建模的方法快300~1800倍。
4.2 不足
- 尚未在具體的NLP任務如情感分析、QA等上應用。
沒有給出與其他的基於Transformer的模型,如BERT等,對比有何優勢。 - 訓練模型需要用到大量的TPU資源。