Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Attentionで何が起こっているのか

 Attentionで何が起こっているのか

D731ae44245b80c37b59d588287aacd7?s=128

Masafumi Abeta

February 17, 2021
Tweet

Transcript

  1. XX University Attentionで何が起こっているのか 2020.02.07 Abeta

  2. ⾃然⾔語

  3. 3 英→和翻訳 Transformer This is a pen これ は ペン

    です Loss これ は ペン です
  4. 4 ⾃然⾔語のSource-Target-Attention Dense (d_model×d_model) Dense (d_model×d_model) Dense (d_model×d_model) value key

    query (batch_size, seq_len, d_model) Masking (batch, seq_len) (batch_size, seq_len, seq_len) Softmax Matmul Matmul Dense (d_model×d_model) (batch_size, seq_len, d_model) (batch_size, seq_len, d_model) (batch_size, seq_len, seq_len) (batch_size, seq_len, d_model)
  5. 5 ⾃然⾔語のSource-Target-Attention softmax 𝑄𝐾! 𝑉 Dense (d_model×d_model) Dense (d_model×d_model) Dense

    (d_model×d_model) value key query (batch_size, seq_len, d_model) Masking (batch, seq_len) (batch_size, seq_len, seq_len) Softmax Matmul Matmul Dense (d_model×d_model) (batch_size, seq_len, d_model) (batch_size, seq_len, d_model) (batch_size, seq_len, seq_len) (batch_size, seq_len, d_model)
  6. 6 𝑸𝑲! • クエリとキーの関連度を計算する。 これ は ペン 𝒂! 𝒃! 𝒄!

    This is a 𝒔! 𝒕! 𝒖! Matmul = = Query Key 𝒂!𝒔 𝒂!𝒕 𝒂!𝒖 𝒃!𝒔 𝒃!𝒕 𝒃!𝒖 𝒄!𝒔 𝒄!𝒕 𝒄!𝒖 ≅ 1 0.0x 0.0x 0.0x 1 0.0x 0.1 0.0x 0.0x pen 𝒗! です 𝒅! 𝒅!𝒔 𝒅!𝒕 𝒅!𝒖 𝒂!𝒗 𝒃!𝒗 𝒄!𝒗 𝒅!𝒗 0.2 0.0x 1 0.0x 0.1 0.0x 0.0x
  7. 7 softmax 𝑸𝑲! 𝑽 • クエリと関連度が⾼いキーに対応するバリューが引き出される。 Query×Key Value Matmul 1

    × 𝒔! + 0.0x × 𝒕! + 0.0x × 𝒖! + 0.2 × 𝒗! 0.0x × 𝒔! + 1 × 𝒕! + 0.0x × 𝒖! + 0.0x × 𝒗! 0.1 × 𝒔! + 0.0x × 𝒕! + 0.0x × 𝒖! + 1× 𝒗! Softmax 1 0.0x 0.0x 0.0x 1 0.0x 0.1 0.0x 0.0x 0.2 0.0x 1 0.0x 0.1 0.0x 0.0x This is a 𝒔! 𝒕! 𝒖! = pen 𝒗! 0.0x × 𝒔! + 0.1 × 𝒕! + 0.0x × 𝒖! + 0.0x × 𝒗! これ は ペン です ≅
  8. 8 (再掲) This is a pen これ は ペン です

    Loss これ は ペン です
  9. 9 英→和翻訳 This is a pen これ は ペン です

    Loss これ は ペン です
  10. 10 ⾃然⾔語のSelf-Attention Dense (d_model×d_model) Dense (d_model×d_model) Dense (d_model×d_model) value key

    query (batch_size, seq_len, d_model) Masking (batch, seq_len) (batch_size, seq_len, seq_len) Softmax Matmul Matmul Dense (d_model×d_model) (batch_size, seq_len, d_model) (batch_size, seq_len, seq_len) (batch_size, seq_len, d_model)
  11. 11 Self-Attension • ⾃⾝の系列の中の関連度を計算する。 これ は ペン 𝒂! 𝒃! 𝒄!

    Matmul = Query Key 𝒂!𝒂 𝒂!𝒃 𝒂!𝒄 𝒃!𝒂 𝒃!𝒃 𝒃!𝒄 𝒄!𝒂 𝒄!𝒃 𝒄!𝒄 ≅ 1 0.0x 0.1 0.0x 1 0.0x 0.1 0.0x 1 です 𝒅! 𝒅!𝑎 𝒅!𝒃 𝒅!𝒄 𝒂!𝒅 𝒃!𝒅 𝒄!𝒅 𝒅!𝒅 0.0x 0.0x 0.0x 0.0x 0.0x 0.0x 1 これ は ペン 𝒂! 𝒃! 𝒄! = です 𝒅!
  12. 12 • 関連度が⾼いベクトルの成分が⾜し込まれる。 Query×Key Value Matmul 1 × 𝒂! +

    0.0x × 𝒃! + 0.1 × 𝒄! + 0.0x × 𝒅! 0.0x × 𝒂! + 1 × 𝒃! + 0.0x × 𝒄! + 0.0x × 𝒅! 0.1 × 𝒂! + 0.0x × 𝒃! + 0.0x × 𝒄! + 0.0x × 𝒅! Softmax 0.0x × 𝒂! + 0.0x × 𝒃! + 0.0x × 𝒄! + 1 × 𝒅! これ + 0.1 ペン は ペン + 0.1 これ です ≅ 1 0.0x 0.1 0.0x 1 0.0x 0.1 0.0x 1 0.0x 0.0x 0.0x 0.0x 0.0x 0.0x 1 これ は ペン 𝒂! 𝒃! 𝒄! = です 𝒅! Self-Attension
  13. 13 英→和翻訳 This is a pen これ は ペン です

    Loss これ は ペン です
  14. 14 Masking • パディング部分と未来の単語のAttentionを無効化する。 Query×Key 1 0.0x 0.1 0.0x 1

    0.0x 0.1 0.0x 1 0.0x 0.0x 0.0x 0.0x 0.0x 0.0x 1 1 −inf −inf 0.0x 1 −inf 0.1 0.0x 1 −inf −inf −inf 0.0x 0.0x 0.0x 1 + 1 −inf −inf 0.0x 1 −inf 0.1 0.0x 1 −inf −inf −inf 0.0x 0.0x 0.0x 1 =
  15. 15 Masked Self−Attension Query×Key 1 −inf −inf 0.0x 1 −inf

    0.1 0.0x 1 −inf −inf −inf 0.0x 0.0x 0.0x 1 Value Matmul Softmax これ は ペン + 0.1 これ です 1 × 𝒂! 0.0x × 𝒂! + 1 × 𝒃! 0.1 × 𝒂! + 0.0x × 𝒃! + 0.0x × 𝒄! 0.0x × 𝒂! + 0.0x × 𝒃! + 0.0x × 𝒄! + 1 × 𝒅! ≅ これ は ペン 𝒂! 𝒃! 𝒄! = です 𝒅! • 未来の単語のベクトルは⾜されない。
  16. 16 埋め込みベクトルの変換 Dense (d_model×d_model) Dense (d_model×d_model) Dense (d_model×d_model) value key

    query (batch_size, seq_len, d_model) Masking (batch, seq_len) (batch_size, seq_len, seq_len) Softmax Matmul Matmul Dense (d_model×d_model) (batch_size, seq_len, d_model) (batch_size, seq_len, d_model) (batch_size, seq_len, seq_len) (batch_size, seq_len, d_model) 単語ベクトルの空間の変換
  17. 画像

  18. 18 Self-Attention Map (channel, width, height) 1列に並べる ⾃分と掛け算 (N, N)

    @ = (channel, N) (N, channel) (N, channel) @ (N, N) (N, channel) = (N, channel) (channel, width, height) Attention Map (channel, width, height) + (channel, width, height) γ×
  19. 19 𝑸𝑲! • クエリとキーの関連度を計算する 𝒂! 𝒃! 𝒄! Matmul Query Key

    ≅ 0.5 0.1 0.1 0.1 0.6 0.3 0.1 0.3 0.2 𝒅! 0.3 0.0 0.3 0.3 0.1 0.3 0.3 Channel⽅向 pixel⽅向 𝒂! 𝒃! 𝒄! 𝒅! Channel⽅向 pixel⽅向 𝒂!𝒂 𝒂!𝒃 𝒂!𝒄 𝒃!𝒂 𝒃!𝒃 𝒃!𝒄 𝒄!𝒂 𝒄!𝒃 𝒄!𝒄 𝒅!𝑎 𝒅!𝒃 𝒅!𝒄 𝒂!𝒅 𝒃!𝒅 𝒄!𝒅 𝒅!𝒅
  20. 20 softmax 𝑸𝑲! 𝑽 • 関連度が⾼いベクトルの成分が⾜し込まれる Query×Key Value Matmul 0.5

    × 𝒂! + 0.1 × 𝒃! + 0.1 × 𝒄! + 0.3 × 𝒅! 0.1 × 𝒂! + 0.6 × 𝒃! + 0.3 × 𝒄! + 0.0 × 𝒅! 0.1 × 𝒂! + 0.3 × 𝒃! + 0.2 × 𝒄! + 0.3 × 𝒅! Softmax 0.3 × 𝒂! + 0.1 × 𝒃! + 0.3 × 𝒄! + 0.3 × 𝒅! 0.5 0.1 0.1 0.1 0.6 0.3 0.1 0.3 0.2 0.3 0.0 0.3 0.3 0.1 0.3 0.3 𝒂! 𝒃! 𝒄! 𝒅! Channel⽅向 pixel⽅向 特徴のない部分は平均化?
  21. 21 Self-Attention適⽤による変化 • 𝛾 = 0.1 で8回Self-Attentionを実⾏。

  22. 22 Self-Attention適⽤による変化 R G B • 各チャンネルの分布を⾒ると、特徴のない部分(左の⼭)と特徴的な部分(右の⼭) に分かれる? ※ピクセルを0-1で規格化済み

  23. 23 参考⽂献 • ⼩川 雄太郎, 『くりながら学ぶ!PyTorchによる発展ディープラーニング』, 2019/7/29, マイナビ出版 • Samuel

    Lynn-Evans, “How to code The Transformer in Pytorch”, 2018/9/27, https://towardsdatascience.com/how-to-code-the-transformer-in-pytorch-24db27c8f9ec • アルカディア・システムズ, “Attentionの解説”, 2020/10/8, https://arc- mec.com/ailabo/2020/09/21/attention%E3%81%AE%E8%A7%A3%E8%AA%AC/ • Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin, “Attention Is All You Need”, 2017/6, arXiv:1706.03762 [cs.CL] • こしあん, “SA-GANの実装から⾒る画像のSelf attention”, https://blog.shikoan.com/sagan-self- attention/