Deep Learning - Self-Attention
延伸解說 Transformer 的 Self-Attention 機制與他的各種變型
Transformer 的連結底家:
Self-Attention 的各種變型
在做 self-attention 時候,更多時候是小孩子才做選擇,我全都要,不同的 heads 可能用不同的 attention 來做
Local Attention/Truncated Attention
只要看左右鄰居,也只看到左右鄰居
其實跟 CNN 沒什麼區別
可以加快 self-attention,但不一定可以有比較好的結果
Stride Attention
根據自訂的 stride 來看多遠距離外的其他鄰居
Global Attention
在原來的 sequence 加入一個特殊 token
- Attend to every token
collect global information - Attended by every token
it knows global information
global token 就像里長伯
每個人彼此之間不一定認識彼此,不會交流資訊,但都會認識里長伯,跟里長伯交流資訊
Can we only focus on Critical Parts ?
把 small value 直接設成 0,讓其影響較小
方法如下:
Clustering
把 query 和 key 拉出來,透過 clustering 把相近的分類在一起
只計算同類,其他都設成 0
Sinkhorn Sorting Network
把 input sequence 的每一個 position 通過一個 neural network 產生一個 vector(這個 vector 的長度要和 input sequence 的長度相同)
詳細作法
Do we need full attention matrix ?
不需要計算所有 matrix,只計算重要的
把 N 個 key 挑出代表性的 K 個 key,縮小 matrix
為甚麼只選有代表性的 key,而非有代表性的 query ?
也可以,但 output sequence length 會減少,對某些問題可能會有影響
如何選出有代表性的 key ?
Compressed Attention 詳細作法
概而化之:用 CNN
Linformer 詳細作法
概而化之:將原 d x N 的 matrix 乘上 N x K 的 matrix,使其變成 d x K 的 matrix
Attention Mechanism is three matrix Multiplication
Transformer 是一連串的計算,是否有方法加速 ?
先
再 會比先 再 快很多!
原理跟線性代數有關,因為計算量不同
跳過了很多數學計算筆記,詳細內容可以直接看李宏毅老師的教學影片,老師很詳細的說明了過程:【機器學習 2022】各式各樣神奇的自注意力機制 (Self-attention) 變型
Summary
問就是多讀文獻,多讀 paper…
讀得越多,你就越強
Reference
學習內容與截圖來源