先前的序列轉換模型是基於複雜的RNN與CNN,其中包含編碼器與解碼器的組合,而作者發現通過注意力機制連接編碼器與解碼器的模型表現較佳。因此,此研究提出一簡單的網路架構Transformer,僅僅基於注意力機制而不使用RNN或CNN架構,使模型單純且訓練時間縮短、泛化能力佳。主要用於翻譯或句法分析等語言相關的任務上,近年來也發展多種應用。其主要優點如下:
在Transformer中,encoder和decoder由自注意力機制與逐點全連接層堆疊而成。encoder負責將輸入序列作為特徵表示symbol representations( \(x_1, ..., x_n\) )與連續表示continuous representations( \(z_1, ..., z_n\) )進行匹配。而decoder則一次性地生成一輸出序列( \(y_z, ..., y_n\) ),每次模型皆會進行回歸,利用前次所生成的表示(symbols)作為額外輸入。
逐點(point-wise)指對輸入的每個數據點皆進行相同計算。例如計算兩向量之相似度或將每一詞嵌入向量相加以獲得一句子的表示(symbols)。
Add
(殘差連接)與layer normalization
(層標準化)。殘差連接有助於模型關注差異特徵。層標準化則穩定隱藏層,例如避免梯度消失或爆炸。Masked Multi-Head Attention
用以避免序列之不同位置共享位置資訊,即 \(position_i\) 僅會利用 \(position_i\) 以前(含)的資訊。透過防止當前位置的訊息向後流動,以保持其自回歸的能力,確保生成目標序列的正確性。自注意力機制會對序列中的不同位置進行關注,計算該位置的表示(representation)。
Dot-Product (multiplicative) Attention的延伸,再加上了縮放因子(scaling factor) \(\dfrac{1}{\sqrt{d_k}}\) 。 \(d_k\) 為query和key的維度時,點積的值會極大,因此利用縮放因子以避免softmax的輸入過大,導致梯度變得極小,而造成模型難以學習或輸出數值不穩定。該縮放因子的作用也能提升模型效率。
\(Attention(Q, K, V) = softmax(\dfrac{QK^T}{\sqrt{d_k}})V\)
公式的實際運算可以參考李宏毅老師的影片介紹
使用單個注意力機制時,模型僅能關注單一子空間的表示,而無法充分捕捉不同子空間之間的交互資訊。而多頭注意力機制使每一注意力頭擁有自己的權重,使模型以不同角度捕捉特徵資訊,進而提高模型表現與泛化能力。多頭注意力機制運作如下:
Query向量 \(Q_i\) 和Key向量 \(K_i\) 的點積意即兩者是否相似、相關;經過softmax則是兩者的cosine相似度,即視為「相關性」。
Query、Key和Value是怎麼來的? 我們的輸入序列為一矩陣,這個輸入序列各乘上三種不同的權重矩陣 \(W^Q\) 、 \(W^K\) 、 \(W^V\) ,就得到 \(Q\) 、 \(K\) 和 \(V\) 這三個向量了。這些權重矩陣是經過線性轉換訓練來的。而這些權重會有 \(i\) 組,如本篇論文所述有8 layers的話就是 \(i=8\) 。
本論文的注意力機制有以下特色:
FFN為由兩層全連接層組成,它會對每個位置的隱藏層獨立進行非線性轉換。第一層線性轉換,其隱藏層維度為2048,並且通過激活函數ReLU以捕捉序列中的非線性關係與局部特徵;而第二層則不使用激活函數,直接將維度映射回原本的維度,因此FFN的輸入與輸出維度相同。
\(FFN(x) = max(0, xW_1 + b_1)W_2 + b_2\)
嵌入層將輸入和輸出序列中的token轉換為向量表示,它使用學習到的嵌入矩陣將每個token映射到一個 \(d_{model}\) 維的向量空間中。這個向量空間的維度通常是512(此為hyper-parameter)。其將離散的token轉換為連續的向量表示,使模型能夠更好處理輸入和輸出序列中的語義信息和上下文關係。
白話就是,假設我們的輸入是個句子,我們將每個單詞都向量化(Word Embedding)作為Transformer的輸入,向量化的方法有很多,如word2vec就是一種。
位置編碼與嵌入層的維度相同,因此兩者可相加。
\(PE_{(pos, 2i)} = sin(pos/10000^{2i}/d_{model})\)
\(PE_{(pos, 2i+1)} = cos(pos/10000^{2i}/d_{model})\)
作者實驗過使用以上公式和使用訓練位置嵌入層以獲得位置編碼,但得到的結果相近,因此採用了泛化性較高的正弦公式。如此,要是遇到比訓練資料中更長的序列資料時,會較好進行處理。
標籤平滑:將訓練數據中的one-hot標籤向量進行平滑化,即將標籤向量中的1分配到正確的標籤上,將剩餘的概率分配給其他標籤。這樣做的目的是使得模型在訓練過程中不會過於自信地預測某個標籤,而是對其他標籤也有一定的預測概率,從而減少模型對訓練數據中噪聲和不確定性的過擬合。
備註:實驗結果主要是翻譯任務,這邊不再深入探討。
Attention Is All You Need Transformer模型详解(图解最完整版) Transformer(上) Transformer(下) Self-attention https://zhuanlan.zhihu.com/p/148737297 https://blog.csdn.net/qq_43210957/article/details/121843999 https://ithelp.ithome.com.tw/m/articles/10270016
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Syncing