學習資料中關於Attention機制和Transformer的總結
一. 學習資料
完全圖解RNN、RNN變體、Seq2Seq、Attention機制
二. Transformer
Masked multi-head self-attention
Masked multi-head self-attention指的是只會attention已經輸出的值,不會attention還沒有輸出的值。
Norm
transformer里面的Norm指的是layer normalization。Batch normalization在batch size太小或者序列(大小不確定)問題中表現不好,因為BN是將一個batch里的同一通道做歸一化,LN是將一個樣本里的不同通道做歸一化。所以LN在序列問題中表現好,無關batch size大小。
三. Attention機制
attenton機制的主要思想其實就是吃兩個向量吐出一個分數,根據一系列分數決定attention。之前的attention主要用於encoder-decoder之間,在decoder時attention encoder的值。
四. self-attention
在處理squence-to-squence問題上,RNN可以處理長距離特征關系,但是並行計算能力差;CNN也可以處理但是需要多層。self-attention可以用一層處理長距離特征關系,而且並行計算能力強!
自注意力模型可以作為神經網絡中的一層來使用,既可以用來替換卷積層和 循環層,也可以和它們一起交替使用。 自注意力模型計算的權重𝛼𝑖𝑗只依賴於𝒒𝑖和𝒌𝑗的相關性, 而忽略了輸入信息的位置信息。因此在單獨使用時,自注意力模型一般需要加入位置編碼信息來進行修正。
自注意力的一種解釋就是在編碼某個單詞時,就是將所有單詞的表示(值向量)進行加權求和,而權重是通過該詞的表示(鍵向量)與被編碼詞表示(查詢向量)的點積並通過softmax得到。
- 先將one-hot轉化為embedding
- 把整個sequence乘三個參數矩陣得到Q、K、V
- \(A = K^TQ\)->\(\hat A=A\)
每個token的q與所有k點積得到a,所有a經過softmax得到\(\hat a\) - \(O=V\hat A\) 得到最終的輸出O
self-attention里是一堆矩陣乘法,並行計算能力很強!而且輸出O里的每個值都attention了I中的每個值
五. Multi-head self-attention
多個self-attention的組合。並行地從輸入信息中選取多組信息. 每個注意力關注輸入信息的不同部分。
好處:多個attention可以關注不同的點,每個attention的作用不同。
將q、k、v分裂成k個(維度不變),然后每個a可以得到k個b,將k個b組合后再用矩陣乘法降維(取平均的過程)。最后得到的b就是經過多次attention得到的值,可以獲取到更多的特征!
六. Positional Encoding
對於self-attention來說,所有的輸入都是相同的距離,沒有距離的概念。所以需要對輸入值提前加入位置信息。這個信息是不用學習的。