Deep Learning - Self-Attention

Deep Learning - Self-Attention

LAVI

延伸解說 Transformer 的 Self-Attention 機制與他的各種變型
Transformer 的連結底家:

Deep Learning - 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

學習內容與截圖來源