天天看點

7. Transformer-XL原理介紹

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結構的特點:

  1. 全部用self-attention的自注意力機制。
  2. 在self-attention的基礎上改進了Multi-Attention和Mask Multi-Attention兩種多頭注意力機制。
  3. 網絡由多個層組成,每個層都由多頭注意力機制和前饋網絡構成。
  4. 由于在全局進行注意力機制的計算,忽略了序列中最重要的位置資訊,添加了位置編碼(Position Encoding),使用正弦函數完成,為每個部分的位置生成位置向量。
7. Transformer-XL原理介紹

2. Vanilla Transformer

Vanilla Transformer是Transformer和Transformer-XL中間過度的一個算法,是以在介紹Transformer-XL之前我們先來了解下Vanilla Transformer。

Vanilla Transformer的原理圖:

7. Transformer-XL原理介紹

Vanilla Transformer論文中使用64層模型,并僅限于處理 512個字元這種相對較短的輸入,是以它将輸入分成段,并分别從每個段中進行學習,如下圖所示。 在測試階段如需處理較長的輸入,該模型會在每一步中将輸入向右移動一個字元,以此實作對單個字元的預測。

Vanilla Transformer的三個缺點:

  • 上下文長度受限:字元之間的最大依賴距離受輸入長度的限制,模型看不到出現在幾個句子之前的單詞。
  • 上下文碎片:對于長度超過512個字元的文本,都是從頭開始單獨訓練的。段與段之間沒有上下文依賴性,會讓訓練效率低下,也會影響模型的性能。
  • 推理速度慢:在測試階段,每次預測下一個單詞,都需要重新建構一遍上下文,并從頭開始計算,這樣的計算速度非常慢。

3. Transformer-XL

Transformer-XL架構在vanilla Transformer的基礎上引入了兩點創新:

  1. 循環機制(Recurrence Mechanism)
  2. 相對位置編碼(Relative Positional Encoding)。

以克服Vanilla Transformer的缺點。與Vanilla Transformer相比,Transformer-XL的另一個優勢是它可以被用于單詞級和字元級的語言模組化。

3.1 循環機制(Recurrence Mechanism)

Transformer-XL仍然是使用分段的方式進行模組化,但其與Vanilla Transformer的本質不同是在于引入了段與段之間的循環機制,使得目前段在模組化的時候能夠利用之前段的資訊來實作長期依賴性。如下圖所示:

7. Transformer-XL原理介紹

在訓練階段,處理後面的段時,每個隐藏層都會接收兩個輸入:

  1. 該段的前面節點的輸出,與Vanilla Transformer相同(上圖的灰色線)。
  2. 前面段的節點的輸出(上圖的綠色線),可以使模型建立長期依賴關系。這部分輸出市通過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的計算分為如下四個部分:

  1. 基于内容的“尋址”,即沒有添加原始位置編碼的原始分數。
  2. 基于内容的位置偏置,即相對于目前内容的位置偏差。
  3. 全局的内容偏置,用于衡量key的重要性。
  4. 全局的位置偏置,根據query和key之間的距離調整重要性

4. 總結

4.1 優點

  1. 在幾種不同的資料集(大/小,字元級别/單詞級别等)均實作了最先進的語言模組化結果。
  2. 結合了深度學習的兩個重要概念——循環機制和注意力機制,允許模型學習長期依賴性,且可能可以擴充到需要該能力的其他深度學習領域,例如音頻分析(如每秒16k樣本的語音資料)等。
  3. 在inference階段非常快,比之前最先進的利用Transformer模型進行語言模組化的方法快300~1800倍。

4.2 不足

  1. 尚未在具體的NLP任務如情感分析、QA等上應用。

    沒有給出與其他的基于Transformer的模型,如BERT等,對比有何優勢。

  2. 訓練模型需要用到大量的TPU資源。

繼續閱讀