owned this note changed 7 months ago
Published Linked with GitHub

[Transformer] Self-Attention與Transformer

tags: Literature Reading Self-Attention Transformer ViT

ViT與Transformer相關筆記

Attention Mechanism概念與脈絡

  • Attention is a core ingredient of ‘conscious’ AI (ICLR 2020 Yoshua Bengio)

    注意力機制(Attention),即人(或算法)一次專注於單個元素或多個元素的機制,是機器學習中的一種數據處理方法,廣泛應用在自然語言處理、圖像識別及語音識別等各種不同類型的機器學習任務中。

    Bengio在其著作《Thinking, Fast and Slow》中描述了以美國心理學和經濟學家丹尼爾•卡尼曼(Daniel Kahneman)提出的認知系統。

    • 第一種是無意識的——它是直覺的和快速的,非語言和習慣性的,它只處理隱性的知識。
    • 第二種是有意識的——它是語言和算法的,它結合了推理和計劃,以及明確的知識形式。
  • 人類的視覺注意力焦點

    • 你可以在下面發現幾張臉?
    • Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
  • 注意力模型家族

Transformer的重要性及突破性概念

第四大類深度學型模型

與CNN、RNN對比


  • 代號註記

    • n : sequence length
    • d : representation dimension,
    • k : kernel size of convolutions
  • 自注意力機制特色

    • 可以完全平行計算
    • 在最大路徑長度(最長序列為1)最低
      • 抓取/查詢全局訊息越容易
      • CNN的k越大,感受視野範圍越大
    • 對長序列的計算複雜度高

原始論文:Attention is All you Need

Transformer模型的整體結構

  • 模型架構
    Transformer

  • 每個單詞同時去計算自己本身與所有單詞的相似性,來得到注意力分數

    • 可理解為在所有詞庫中,建立所有單詞間的相似性分數矩陣

    • 所有句子中的每個單詞(token/sequence)本身同時作為Query與Key,Value

      • Q,K,V是可學習的權重
    • 注意力分數

      • 即該embedding vector的V(Value) x 關注力權重
    • 關注力權重 = Q x K

      • 即得到該單詞與全部單詞的相關性矩陣
      • 透過縮放及Softmax轉為(0,1)間的機率分布
  • encoder :

    • 根據全局(全文)訊息,計算每個embedding vector(在NLP領域即每個單詞)對所有詞庫的相關性,獲得該單詞對(embedding vector)所有單詞的注意力分數
  • decoder :

    • 以當前embedding vector作為Q,在encoder所學習到的注意力矩陣中進行查詢

      • 例如,在主詞後面,接續動詞的機會比較大;在出現下雨時,後面文字出現雨傘的機會就會增加
    • 在推論時,

      • decoder同時考慮1. 當前的embedding vector(當前訊息),與2. encoder(全局/文訊息)
      • 後面的embedding vector是被遮住的(masked)

Self-Attention

  • Scaled Dot-Product Attention 縮放後的點積注意力

    • 點積: 反映兩個向量間的相似性

Multi-head Attention

  • 由多個Self-Attention模塊串接組成
    • 提供模型彈性、多面向的注意力

Position encoding

  • CNN與RNN帶有位置訊息,但自注意力機制本身沒有
  • 鑲嵌在每個單詞(X)上,讓每個單詞帶有位置資訊
    • 使模型在學習/推論時考量位置訊息
  • 位置編碼
    • X + P
    • P ∈ ℝn×d :
    • P : \[ p_{i,2j} = sin\left(\frac{i}{10000^{2j/d}}\right),\; p_{i,2j+1} = con\left(\frac{i}{10000^{2j/d}}\right)\]

推薦學習資源

Select a repo