Attention & Transformer
seq2seq; attention; self-attention; transformer;
1 注意力機制在NLP上的發展
-
Seq2Seq,Encoder,Decoder
-
引入Attention,Decoder上對輸入的各個詞施加不同的注意力 https://wx1.sbimg.cn/2020/09/15/9FZGo.png
-
Self-attention,Transformer,完全基于自注意力機制
-
Bert,雙向Transformer,mask
-
XLNet,自回歸語言模型,自動編碼語言模型,摒棄遮蓋
2 注意力機制
以機器翻譯為例;Seq2Seq架構;
2.1 RNN + RNN
-
Encoder處理輸入序列,得到背景關系CONTEXT(一個向量,代表源文資訊);Decoder處理CONTEXT逐項生成輸出序列,
-
RNN在每個時間步接收兩個輸入
- 隱狀態:上一個時間步傳遞來的;Decoder的初始隱狀態為編碼階段的最后一個隱狀態
- 詞向量輸入:Encoder為輸入序列的對應位置的詞向量;Decoder為上一個時間步的輸出(第一個時間步的輸入為Start)
-
背景關系向量定長,模型難處理長句
2.2 RNN+RNN+Attention
-
Encoder 向 Decoder 傳遞更多的資料,不止傳遞編碼階段的最后一個隱藏狀態,而是傳遞所有隱藏狀態,
-
Decoder增加額外步驟,根據隱狀態之間的相關性對不同的隱藏狀態打分
-
為每個編碼器隱狀態打分;softmax加權;求和

-
打分后的Encoder隱狀態加權后與當前Decoder隱狀態結合,作為當前時間步的隱狀態輸入

-
Decode 程序中不同的步驟回關注于不同 Encoder 的隱狀態
-
3 Transformer
Attention Is All You Need; self-attention;
3.1 概述
- 仍然由encoder和Decoder組成,完全基于自注意力機制,不使用RNN,
- 編碼器和解碼器都是一組編碼/解碼組件組成,原論文使用了6個
3.2 Encoder 解碼器
- 編碼器由兩個子層:自注意力層(見3.3節)、全連接神經網路
- 每個編碼器組件結構相同,但不共享權重,
3.3 自注意力機制
自注意力機制全景圖

-
詞嵌入 word embedding
- 發生在最底部的編碼器;輸入資料[batch_size, word_embedding_size, seq_len];完成嵌入后作為輸入經過編碼器;每個位置的詞并行經過編碼器,速度比RNN快,
-
并行運算未考慮到順序關系,通過位置編碼(positional encoding)使詞嵌入包含位置資訊,
-
位置編碼方式:sin、cos

-
自注意力計算
-
三個引數W($W^Q$, $WK$,$WV$)與輸入的向量相乘得到:查詢向量q,鍵向量k,值向量v;新向量維度小于嵌入向量的維數
-
對于一個輸入向量,將其q向量與其他詞的k向量相乘計算分數;分數高則關系密切
-
將分數縮放(避免梯度彌散);通過softmax操作轉化為概率,
-
將每個詞的v向量用上一步的softmax概率加權求和;得到該輸入向量的 z值
-
234步驟 以矩陣的形式,對多個輸入向量并行求z,得到Z矩陣
-
-
多頭機制
-
為關注曾提供了多個表示子空間;拓展了模型專注于不同層面的能力
-
有多組qkv的權重矩陣;e.g. 使用8個關注頭則每個編碼器解碼器會得到8組Z
-
將所有的Z連接起來和一個權重矩陣$W^O$相乘,得到捕捉了所有注意力頭的Z矩陣,再將其輸入到接下來的全連接層,
-
3.4 Decoder 解碼器
-
結構:自注意力,encoder-decoder attention,全連接層
-
自注意力層:僅對輸出序列中之前的位置;在softmax之前,把將來生成的位置設定為-inf
-
encoder-decoder attention
-
在自注意力層、全連接神經網路之間加入了一個encoder和decoder之間的注意力層,類似seq2seqRNN模型中的注意力,
-
最后一個Encoder的輸出,轉換為K和V的集合,每個decoder在其encoder-decoder attention層中使用這些KV,
-
作業方式與多頭注意力類似,區別在于是從Encoder Stack的輸出中獲取KV,
-
-
經過N層decoder,最終的輸出通過線性層和softmax層得到輸出的詞
3.5 細節補充
-
殘差和歸一化 解碼器編碼器都有

-

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/48312.html
標籤:其他
上一篇:虹膜資料庫
