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)算法原理解析有所介紹。html

Transformer結構的特色:算法

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

image

2. Vanilla Transformer

Vanilla Transformer是Transformer和Transformer-XL中間過分的一個算法,因此在介紹Transformer-XL以前咱們先來了解下Vanilla Transformer。網絡

Vanilla Transformer的原理圖:
image架構

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的本質不一樣是在於引入了段與段之間的循環機制,使得當前段在建模的時候可以利用以前段的信息來實現長期依賴性。以下圖所示:編碼

image

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

  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資源。
相關文章
相關標籤/搜索