# [Transformer] Self-Attention與Transformer ###### tags: `Literature Reading` `Self-Attention` `Transformer` `ViT` ### ViT與Transformer相關筆記 - [[Transformer_CV] Vision Transformer(ViT)重點筆記](https://hackmd.io/tMw0oZM6T860zHJ2jkmLAA) - [[Transformer] Self-Attention與Transformer](https://hackmd.io/fmJx3K4ySAO-zA0GEr0Clw)筆記 - [[Self-supervised] Self-supervised Learning 與 Vision Transformer重點筆記與近期發展](https://hackmd.io/7t35ALztT56STzItxo3UiA) - [[Explainable AI] Transformer Interpretability Beyond Attention Visualization。Transformer可解釋性與視覺化](https://hackmd.io/SdKCrj2RTySHxLevJkIrZQ) - [[Transformer_CV] Masked Autoencoders(MAE)論文筆記](https://hackmd.io/lTqNcOmQQLiwzkAwVySh8Q) ### Attention Mechanism概念與脈絡 - Attention is a core ingredient of ‘conscious’ AI (ICLR 2020 Yoshua Bengio) - [ICLR 2020 Yoshua Bengio:注意力是「有意識」AI的核心要素](https://medium.com/@andy6804tw/yoshua-bengio-%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%98%AF-%E6%9C%89%E6%84%8F%E8%AD%98-ai%E7%9A%84%E6%A0%B8%E5%BF%83%E8%A6%81%E7%B4%A0-f091a643d0fc) > 注意力機制(Attention),即人(或算法)一次專注於單個元素或多個元素的機制,是機器學習中的一種數據處理方法,廣泛應用在自然語言處理、圖像識別及語音識別等各種不同類型的機器學習任務中。 > > Bengio在其著作《Thinking, Fast and Slow》中描述了以美國心理學和經濟學家丹尼爾•卡尼曼(Daniel Kahneman)提出的認知系統。 > - 第一種是無意識的——它是直覺的和快速的,非語言和習慣性的,它只處理隱性的知識。 > - 第二種是有意識的——它是語言和算法的,它結合了推理和計劃,以及明確的知識形式。 - 人類的視覺注意力焦點 - 你可以在下面發現幾張臉? - ![](https://i.imgur.com/0Kf9Ha6.png =300x) - 注意力模型家族 ![](https://i.imgur.com/jr8Bo8l.png =500x) - from [An Attentive Survey of Attention Models](https://arxiv.org/pdf/1904.02874.pdf) - [[論文導讀] 注意力機制模型的分類](https://medium.com/ai-academy-taiwan/%E8%AB%96%E6%96%87%E5%B0%8E%E8%AE%80-%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%A9%9F%E5%88%B6%E6%A8%A1%E5%9E%8B%E7%9A%84%E5%88%86%E9%A1%9E-bb827cf5865c) ### Transformer的重要性及突破性概念 #### 第四大類深度學型模型 - Stanford大學在2021年底將transformer列為繼MLP, CNN, RNN之後的第四大類深度學型模型,把以transformer為基礎的一系列模型定義為foundation models。 - [2108.07258 On the Opportunities and Risks of Foundation Models](https://arxiv.org/abs/2108.07258) - [Foundation Models](https://blog.inten.to/foundation-models-b89e7610057) #### 與CNN、RNN對比 ![](https://i.imgur.com/vTDh4uv.png =500x) ![](https://i.imgur.com/Yc4rKT4.png =600x) - 代號註記 - n : sequence length - d : representation dimension, - k : kernel size of convolutions - 自注意力機制特色 - 可以完全平行計算 - 在最大路徑長度(最長序列為1)最低 - 抓取/查詢全局訊息越容易 - CNN的k越大,感受視野範圍越大 - 對長序列的計算複雜度高 ### 原始論文:[Attention is All you Need](https://arxiv.org/abs/1706.03762) #### Transformer模型的整體結構 - 模型架構 ![Transformer](https://i.imgur.com/ZMxXphs.png =300x) - 每個單詞同時去計算自己本身與所有單詞的相似性,來得到注意力分數 - 可理解為在所有詞庫中,建立所有單詞間的相似性分數矩陣 - ![](https://i.imgur.com/TE4WG3X.png =400x) - 所有句子中的每個單詞(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 - ![](https://i.imgur.com/56SgiL2.png =200x) - Scaled Dot-Product Attention 縮放後的點積注意力 - 點積: 反映兩個向量間的相似性 ![](https://i.imgur.com/i4yqJyW.png =300x) ![](https://i.imgur.com/XiVdAHa.png =200x) #### Multi-head Attention - 由多個Self-Attention模塊串接組成 - 提供模型彈性、多面向的注意力 - ![](https://i.imgur.com/qGzjL4P.png) #### 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)$$ - ![](https://i.imgur.com/sr9TaEn.png) ### 推薦學習資源 - [动手学深度学习在线课程](https://courses.d2l.ai/zh-v2/) - [李弘毅老師 2021ML春季班](https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.php) - [李沐_Transformer论文逐段精读](https://www.youtube.com/watch?v=nzqlFIcCSWQ&list=PLFXJ6jwg0qW-7UM8iUTj3qKqdhbQULP5I&index=7) - [The Illustrated Transformer](https://jalammar.github.io/illustrated-transformer/) - [Attention机制详解(二)——Self-Attention与Transformer](https://zhuanlan.zhihu.com/p/47282410) - [Transformer 一篇就够了(一): Self-attenstion](https://zhuanlan.zhihu.com/p/345680792) - [illustrated-self-attention-2d627e33b20a_Q(Query), K(Key), V(Value)動畫圖解](https://towardsdatascience.com/illustrated-self-attention-2d627e33b20a)(https://jalammar.github.io/illustrated-transformer/)