李沐大佬-動手學深度學習筆記-注意力機制

Tomcat_1996發表於2024-11-19

注意力機制(顯示考慮隨意線索)
隨意線索:查詢query
每個輸入是一個value和不隨意線索key的對
透過注意力池化層偏向性選擇某些輸入

歷史演變:

  • 非參注意力池化層:60年代提的Nadaraya-Watson核迴歸,類似於knn
  • 如果使用高斯核,fx 函式類似於softmax和y(y是一個value)的乘積
  • 引數化注意力機制:在這基礎上引入可以學習的w(w是個標量),就是在softmax裡面加入w

批次矩陣乘法:torch.bmm

注意力分數(query和key的相似度)

  • 回顧:注意力分數是softmax裡面的函式a,和softmax一起整體就是注意力權重alpha(大於等於0,加起來等於1,是分數的softmax結果)
  • 討論注意力分數函式a:
    1)Additive Attention(加性注意力):等價於將key和query合併起來放入到一個隱藏大小為h輸出大小為1的單隱藏層MLP,好處是key、value、query可以是任意長度
    2) Scaled Dot-Product Attention(縮放點積注意力):query和key都是同樣長度,q和ki作內積再除以根號d,d是query的維度,d的作用是使得對引數不那麼敏感(如果下一次輸入很長,計算的注意力分數a會很大)
  • 程式碼實現時注意:
    遮蔽softmax(masked_softmax):invalid數要設定為很小:1e-6,不能是0,為了解決padding後只考慮valid的值

使用注意力機制的seq2seq

  • 加入注意力:
    1)編碼器對每次詞的輸出作為key和value(它們是一樣的,就是每次rnn最後的輸出)
    2)解碼器rnn對上一個詞的預測輸出是query
    3)注意力輸出和下一個詞的詞嵌入合併進入rnn
  • Seq2seq中透過隱狀態在編碼器和解碼器中傳遞資訊
  • 注意力機制根據解碼器rnn的輸出匹配合適的編碼器rnn輸出更有效的傳遞資訊(如何更有效的使用encode的資訊)

延伸:影像attention:會去扣patch,扣很多子圖出來,一個子圖就是一個key-value

自注意力和位置編碼
自注意力:

  • 自注意力池化層將xi當作key、value、query來對序列抽取得到y1,…,yn
  • 自注意力適合很長的序列,因為能看的比較長,最長路徑是o(1)
  • 完全並行、最長序列為1、但對長序列計算複雜度高
    位置編碼:
  • 跟CNN/RNN不同,自注意力並沒有記錄位置資訊
  • 位置編碼將位置資訊注入到輸入裡(假設序列是X,使用位置編碼矩陣P來輸出X+P作為自編碼輸入,P有點類似於計算機二進位制編碼,使用sin、cos函式,表示相對位置-類似於旋轉投影線性變換),使得自注意力能夠記憶位置資訊

self-attention就是一個layer(網路層)

Transformer
架構:

  • 基於編碼器-解碼器架構處理序列對
  • 與使用注意力的seq2seq不同,Transformer是純基於注意力(注意力是類似於self-attention)
    多頭注意力:
  • 對同一key、value、query,希望抽取不同的資訊:例如使用短距離關係和長距離關係
  • 多頭注意力使用h個獨立的注意力池化:合併各head輸出得到最終輸出
    有掩碼的多頭注意力:
  • 解碼器對序列中一個元素輸出時,不應考慮該元素之後的元素
  • 可以透過掩碼來實現,即設定valid長度
    基於位置的前饋網路:
  • 將輸入形狀由(b,n,d)變換成(bn,d)
  • 作用2個全連線層
  • 輸出形狀由(bn,d)變化回(b,n,d)
  • 等價於2層和視窗為1的1維卷積層
    殘差和層歸一化:
  • 殘差為了做很深
  • 批次歸一化對特徵/通道里元素進行歸一化:不適合序列長度會變的nlp應用
  • 層歸一化對每個樣本里的元素進行歸一化
    資訊傳遞:
  • 將編碼器中輸出y1,…,yn作為解碼器中第I個Tranformer塊中多頭注意力的key和value:它的query來自目標序列
  • 意味著編碼器和解碼器中塊的個數和輸出維度都是一樣的
    預測:
  • 預測第t+1個輸出時,解碼器中輸入前t個預測值
  • 在自注意力中,前t個預測值作為key和value,第t個預測值還作為query
    總結:
  • Tranformer是一個純使用注意力的編碼-解碼器
  • 編碼器和解碼器都有n個Transformer塊
  • 每個塊裡使用多頭(自)注意力,基於位置的前饋網路和層歸一化

相關文章