Transformer 是一種基於注意力機制 (Attention Mechanism) 的神經網絡模型,首次由 Vaswani 等人在 2017 年的論文《Attention is All You Need》中提出。Transformer 模型被廣泛應用於自然語言處理 (NLP) 領域,特別是機器翻譯、文本生成等任務中。與傳統的遞歸神經網絡 (RNN) 和長短期記憶網絡 (LSTM) 相比,Transformer 模型的並行性更好,能夠有效處理長距離依賴問題。
Transformer 主要由兩個部分組成:
Transformer 模型的核心組件包括:
注意力機制 是 Transformer 的關鍵創新,它允許模型在計算每個單詞的表示時,同時關注輸入序列中的所有單詞。這使得模型可以捕捉到序列中任意兩個單詞之間的關係,而不是僅依賴於前後鄰近的單詞。
自注意力的計算過程如下:
查詢 (Query)、鍵 (Key) 和 值 (Value):每個輸入都會生成一個查詢向量 ( Q )、鍵向量 ( K ) 和值向量 ( V ),這些向量用於計算注意力分數。
注意力分數:對於每個查詢,計算它與所有鍵之間的點積,然後使用 Softmax 將分數轉換為概率分佈。
[
\text{Attention}(Q, K, V) = \text{Softmax}\left(\frac{Q K^T}{\sqrt{d_k}}\right) V
]
其中,( d_k ) 是鍵向量的維度,用於縮放點積的結果。
多頭注意力 (Multi-Head Attention):為了讓模型在不同子空間中學習不同的關聯,Transformer 使用多個注意力頭,每個頭進行獨立的注意力計算,然後將結果進行拼接。
Transformer 並不像 RNN 那樣依賴於序列的順序信息,為了讓模型捕捉序列的位置信息,Transformer 引入了位置編碼。這是一種加在輸入向量上的附加信息,通過正弦和餘弦函數生成。
[
PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d}}\right)
]
[
PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d}}\right)
]
每個編碼器層和解碼器層中都包含一個兩層的全連接網絡。這個前饋網絡是獨立應用於每個位置的,它可以捕捉更多的非線性關係。
Transformer 在每個子層中使用了殘差連接,即將子層的輸入直接加到輸出上,然後進行層正規化,這樣可以幫助梯度傳遞,避免梯度消失問題。
Transformer 的架構由多個編碼器和解碼器堆疊而成。
每個編碼器層包含兩個子層:
解碼器層類似於編碼器層,但它有三個子層: