文章目錄
Self Attention(Transformer)
- 在17年被提出於《Attention Is All You Need, Ashish Vaswani》,也稱爲 Transformer結構;
- 內部包含Multi-Head Attention以及Rest殘差結構。
- Transformer是Bert網絡結構的基礎。
Transformer
1>Tr-ansformer解決的問題是,由於循環神經網絡它的執行一定是按照時間順序一個一個來計算的這個問題。而Transformer是並行化的是把所有時刻的信息一起計算,內部是沒有循環神經網絡的,它的內部是全連接,速度快,訓練快。
2>在循環神經網絡中輸入是多少個時刻是沒有限制的,但是在Transformer由於內部是全連接,所以輸入的大小必須是固定的。
- 傳統缺點:seq2seq使用循環網絡固有的順序特性阻礙樣本訓練的並行化, 這在更長的序列長度上變得至關重要,因爲有限的內存限制樣本的批次 大小。
- 新結構:Transformer,這種模型架構避免循環並完全依賴於attention機制 來繪製輸入和輸出之間的全局依賴關係。 Transformer允許進行更多的並行化。
- Self-attention:有時稱爲intra-attention(內部Attetion),是一種attention機制,它關聯單個序列的不同位置以計算序列的表示。 Self-attention已成功用於各種任務, 包括閱讀理解、摘要概括、文本蘊涵和學習與任務無關的句子表徵。
Transformer整體結構
Encoder-Decoder結構
self-Attention的計算
計算Attention的時候,我們最需要的一共有三個值分別爲Q,K,V。在self-Attention中每一個輸入就對應的一個輸出,說明每一個時刻就對應的有Q,K,V這三個值。如下圖:
Q-K-V的計算
V代表當前時刻Value值,但是我們不知道當前時刻具體是什麼,但是我們知道當前時刻輸入是一個向量,所以我們可以做一個轉換。假設當前時刻輸入爲1*4的向量V,使用當前的向量V乘上一個係數,的向量,那麼現在的就可以表示爲當前時刻數據的高階特徵向量。Q,K同理如下圖:
Attention的計算
單個樣本矩陣乘法的形式
帶批次樣本矩陣乘法的形式:
Multi-Headed-Attention的計算
Multi-Headed-Attention就是多頭的Attention。因爲Transformer中編碼器的每一層都是一樣的,所以輸入和輸出都是一致的,輸入形狀爲[2,4],所以在下一的輸入大小也是[2,4],但是在計算多頭後拼接時,如果=[2,3],那麼一共8個頭,那麼得到的=[2,24]。所以最後得到的輸出需要做一個轉換,如下圖:
矩陣形式計算如下圖:
效果圖如下:
左邊是計算一個普通的Attention,右邊則是計算多頭的Attention(倆個頭)
Positional Encoding
- 因爲Transformer中是全連接,沒有循環神經網絡。所以爲了讓模型具有序列特徵信息在輸入的時候加入了位置編碼。
- 模型還沒有描述詞之間的順序關係,也就是如果將一個句子打亂其中的位置,也應該獲得相同的注意力
- 爲了解決這個問題,論 文加入了自定義位置編碼,位置編碼和word embedding長度相同的特徵向量,然後和word embedding進行求和操作。
LayerNorm&Residuals
Decoder結構
Decoder中的self-Attention
- 和編碼部分的multi-head attention類似, 但是多了一 次masked,因爲在解碼部分, 解碼的時候時從左到右依次解碼的,當解 出第一個字的時候,第一個字只能與第一 個字計算相關性,當解出第二個字的時候, 只能計算出第二個字與第一個字和第二個 字的相關性。;
- 因此這裏引入Mask的概念進行掩碼操作。
- Transformer在翻譯中應用的流程圖
- 可以看出,初始的詞向量經過Encoder後生成高階向量R,而這個高階向量R也作爲Key和Value,Decoder中經過歸一化(Add&Normalize)後的Z向量作爲Query, 在Decoder中的Encoder-Decoder Attention這一步進行Attention value的計算(可以在上文中找到含有Encoder-Decoder Attention的詳細流程圖幫助你理解)。完整的步驟見下圖,直到Decoder 中輸入最後一個單詞student的時候輸出,標誌着Decoder輸出結束爲止。
Final Linear and Softmax Layer
Transformer Training
小結
多頭注意力(Multi-headed attention)機制 Transformer
- 由編碼器和解碼器組成,在編碼器的一個 網絡塊中,由一個多頭attention子層和一個前 饋神經網絡子層組成,整個編碼器棧式搭建了 N個塊。類似於編碼器,只是解碼器的一個網 絡塊中多了一個多頭attention層。爲了更好的 優化深度網絡整個網絡使用了殘差連接和對層 進行了規範化(Add&Norm)。
放縮點積attention(scaled dot-Product attention)。
- 對比我在前面背景知識裏提到的attention的 一般形式,其實scaled dot-Product attention就是我們常用的使用點積進行相似度計算的attention, 只是多除了一個(爲K的維度)起到調節作用,使得內積不至於太大。
多頭attention的Q,K,V
- 多頭attention的Query,Key,Value首先進過一個線性變換,然後輸入到放縮點積attention注意這裏要做h次,其實也就是所謂的多頭,每一次算一個頭。而且每次Q,K,V進行線性變換的參 數W是不一樣的。然後將h次的放縮點積attention結果進行拼接,再進行一次線性變換得到的值作 爲多頭attention的結果。