# HY機器學習#5:自注意力機制 (Self-attention) https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/self_v7.pdf 用途:輸入的向量長度數目都不一定 # 輸入 * 文字:一個詞彙等於一個向量(可以用one-hot encoding但可能有關聯性問題,也可以用Word Embedding,同樣類型詞彙向量會在附近) Word Ebedding https://youtu.be/X7PH3NuYW0Q * 語音(一段時間(常為25ms且往右一次移動10ms,稱為一個Frame)為一個向量) * 節點圖形(如藥物分子一個原子代表一點、人際網絡一個人代表一點,一個節點就是一個向量) # 輸出 * 一對一:輸出同樣數量的向量(數值或分類),例如文字詞性標註(POS Tagging)、Social Network決定是否個人推薦購買商品 * 多對一:只輸出一個向量,例如語句情緒判斷(Sentiment Analysis)、預測分子是否有毒性 * 輸出長度由機器決定(Sequence to Sequence),例如語音辨識或翻譯 # Self-Attention: Sequence Labeling ## Sequence Labeling: 輸出數量跟輸入一樣多的問題 若直接使用fully-connected,可能忽略了屬性的問題(例如同一個字可能有不同詞性,但一般同樣輸入會有一樣輸出),也可以將一些輸入圈起來變成一個window,但若window太大可能會因為參數太多而overfitting 將input考慮整個sequence的情況,就是self-attention,經過此機制之後可以再fully-connected得到最後答案,也可以將output再放入self-attention多層交互操作   最知名self-attention的論文 https://arxiv.org/abs/1706.03762 Transformer Module得核心就是self-attention ## 計算關聯程度 根據a1得到b1:計算a1跟其他每個input的關聯程度,並給出一個值α 計算的方法 * Dot Product(常用) 將a1跟ai各自乘上矩陣Wq及Wk之後再內積 * Addictive 將a1跟ai各自乘上矩陣Wq及Wk之後串接,再經過activation function得到 以Dot Product法來說 若要計算a1與大家的關聯 a1xWq=q1 q稱為query a2xWk=k2 k稱為key q1內積k2=α(1,2) 稱為attetion score 同理可得到α(1,3) α(1,4) ....,而q1內積k1也可以得到α(1,1)  再將α(1,1) α(1,2) .... 經過SoftMax funtion得到 α'(1,1) α'(1,2)(不一定要用SoftMax,亦可RELU)  ## 計算輸出 將原來的a1 a2....各自乘上固定的矩陣Wv得到v1 v2.... 將v1 v2...根據α'(1,1) α'(1,2)...加權即可得到b1 以此類推得到b2 b3.... 關聯性強,則α'大,加權之後就越會靠近該向量  可將輸入並排  qk串接  加上v得到b  整理:  ## Multi-head Self-attention 不只一個q,不同q負責不同的關聯 因此也需要對應數量的k以及v 會有不只一個需要調整的參數WqWkWv 得到b的時候是分開的 例如head數為2,表示各有兩個qkv 做的時候第一個head一起做,再做另一個head 所以會得到b11 b12 b21 b22.... ## Positional Encoding 有時候位置資訊也很重要(例如第一個位置不常會有動詞) 因此可以將每個a都加上獨特的一個位置向量e e通常是人設的,也可以用學習學出來,或是用某個規則(例如sin函數產生) https://arxiv.org/abs/2003.09229  # Self-attention應用 主要: Transformer https://arxiv.org/abs/2003.09229 文字處理(NLP, National Language Processing) https://arxiv.org/abs/2003.09229 ## Self-attention用於語音 https://arxiv.org/abs/2003.09229 input有時候太大,處理需要很大的資源 不用看全部句子,只要看一小部分範圍即可 稱為Trauncated self-attention ## Self-attention用於影像處理 將位置、RPG看成三維向量,一張照片就是長X寬X3 每個點的自己看成query,其他點看成key即可  ### VS CNN CNN只考慮reception field裡面的資訊 self-attention則讓機器學習哪些點是重要的 CNN可以看成self attention的特例 資料量越多,self attention結果比較好,反之CNN比較好 因為self attention彈性大,資料量少容易over fitting ### VS RNN Recurrent Neural Network (RNN)是將第一個輸入經過處理(函數+Fully Connected),和下一個輸入一起得到另一個輸出,該輸出再跟下一個輸入得到再下一個輸出 https://www.youtube.com/watch?v=xCGidAeyS4M RNN亦可雙向,也就是不一定只跟前面的輸入有關 但Self-attetion可以輕易的讓比較遠的資料做連結,不像RNN要經過很多層才能碰到,且self-attention可以平行處理  ## Self-attention用於Graph 有關聯的node稱為edge,可以只計算有關聯性(本來就已知)的即可 其他設為0 可以視為一種GNN(Graph Neural Network) https://youtu.be/eybCCtNKwzA ## 其他變形(常稱為xxformer) 主要想要解決龐大的計算量(但會損失表現)   ###### tags: `機器學習` `李宏毅`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up