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

全日本CV勉強会発表資料 Learning Transformer in 40 Minutes

全日本CV勉強会発表資料 Learning Transformer in 40 Minutes

cvpaper.challengeのメンバーとして全日本コンピュータビジョン勉強会で発表を行った時の発表資料(前編)です。

第六回全日本コンピュータビジョン勉強会(2021.04.18 )
https://kantocv.connpass.com/event/205271/

山本さんによる後編はこちら
https://drive.google.com/file/d/1dwvc2yNi66iuz9Z63j_2cTic2qmNIOyP/view

Seitaro Shinagawa

April 18, 2021
Tweet

More Decks by Seitaro Shinagawa

Other Decks in Technology

Transcript

  1. Vision and Language group @ cvpaper.challenge 2 研究機関横断で全国各地から研究者が集まって 研究を進めているコミュニティです 実はVision&Languageのグループもあります

    片岡(産総研) 本発表はこのグループが主導 で行っているメタサーベイ企画 の一部です 鈴木(産総研) 品川(NAIST)山本(早稲田大) 就活中 アドバイザー陣とHQ
  2. CVにもTransformerの波が・・・ 6 1 Transformerの 躍進 2020/12/23 A Survey on Visual

    Transformer (2020) https://arxiv.org/abs/2012.12556 2021/01/04 Transformers in Vision: A Survey https://arxiv.org/abs/2101.01169 2021/03/06 Perspectives and Prospects on Transformer Architecture for Cross-Modal Tasks with Language and Vision https://arxiv.org/abs/2103.04037 Computer Vision界隈でもTransformerが流行りだしてる サーベイ論文もここ最近たて続けに出てきた 知っとかないといけない・・・でも分量が多い・・・ 詳しく調べて勘所を提供したい←我々の動機
  3. Transformerは何を可能にしたのか? 7 1 Transformer の躍進 NLP界隈の悩み:時系列をRNNで扱うのは時間がかかる RNN 𝑥0 embedding RNN

    𝑥1 embedding RNN 𝑥2 embedding ℎ0 ℎ1 ℎ2 逐次的に更新される隠れ層ℎ𝑡−1 が入力なので遅い 並列化して一度に処理できないか・・・? ℎ0 ℎ1
  4. Transformerの登場 8 1 Transformer の躍進 Self-attentionで時系列データを一度に処理(学習時) RNN 𝑥0 embedding RNN

    𝑥1 embedding RNN 𝑥2 embedding ℎ0 ℎ1 ℎ2 学習の高速化により大規模データでの学習が可能に →NLP分野での大規模学習時代の到来 ℎ0 ℎ1 Transformer block
  5. Self-attentionの適用事例 10 1 Transformer の躍進 Self-Attention Generative Adversarial Networks [Zhang+,

    2018] • GANによる画像生成にSelf-attentionを適用した例 • 点が示す領域をクエリとしたとき、画像のどの領域が強く対応 しているかを可視化 • 各クエリ点が近くの領域や遠くの領域を見ていることがわかる
  6. Transformerは最強? 11 1 Transformer の躍進 Transformerの強み • RNNより処理が速い→大規模学習向き • CNNより大域な特徴も見られる→性能が高くなりそう

    Transformerの弱み? • ぶっちゃけよくわからんことが多い点 • ゆえに世界中がいま分析や応用に躍起 この構造がベストなのか? 精度を上げるには学習にどういう工夫がいるのか? データセットのサイズはどのくらいの規模が必要か? これらの疑問を解消するため、 我々はArXivの奥地へと進んだ・・・
  7. 基本構成はそんなに難しくない 14 2 Transformer 解体新書 Transformer block Transformer block Transformer

    block classification head positional encoding embedding 入力 入力をトークンごとにベクトル化 Self-attentionを中心とした メインの処理 分類の予測を行う 位置情報の付与
  8. 基本構成はそんなに難しくない 15 2 Transformer 解体新書 Transformer block Transformer block Transformer

    block classification head positional encoding embedding 入力 入力をトークンごとにベクトル化 位置情報の付与 Self-attentionを中心とした メインの処理 分類の予測を行う
  9. positional encoding 16 2 Transformer 解体新書 self-attentionには各トークンの位置を考慮する機構がない →明示的に位置embeddingを与えることで性能が向上 大きく分けると3種類? a)

    sin関数とcos関数で明示的に与える(学習不要) b) 学習可能なパラメータとして適当に初期化して学習する c) 位相部分のみを学習可能なパラメータとする positional encoding 𝑓 𝒙 = 𝒙 + 𝒑𝒐𝒔𝒆𝒎𝒃 入力 𝒙 出力 𝑓 𝒙 単純に足し合わせることが多い
  10. positional encoding 17 2 Transformer 解体新書 a) sin関数とcos関数で明示的に与える(学習不要) • Sinusoidal

    positional embeddings (SPEs) [Vaswani+, NIPS2017] • Transformerの元論文をはじめとしてよく使われている 𝑃𝐸 𝑝𝑜𝑠,2𝑖 = sin 𝑤𝑖 ⋅ 𝑝𝑜𝑠 = sin 1 100002𝑖/𝑑𝑚𝑜𝑑𝑒𝑙 ⋅ 𝑝𝑜𝑠 𝑃𝐸 𝑝𝑜𝑠,2𝑖+1 = cos 𝑤𝑖 ⋅ 𝑝𝑜𝑠 = sin 1 100002𝑖/𝑑𝑚𝑜𝑑𝑒𝑙 ⋅ 𝑝𝑜𝑠 𝑆𝑃𝐸 = 𝑃𝐸 𝑝𝑜𝑠,0 , 𝑃𝐸 𝑝𝑜𝑠,1 , 𝑃𝐸 𝑝𝑜𝑠,2 , 𝑃𝐸 𝑝𝑜𝑠,3 , ⋯ , 𝑃𝐸 𝑝𝑜𝑠,2𝑛 , 𝑃𝐸 𝑝𝑜𝑠,2𝑛+1 = sin 𝑤0 𝑡 , cos 𝑤0 𝑡 , sin 𝑤1 𝑡 , cos 𝑤1 𝑡 , ⋯ , sin 𝑤𝑛 𝑡 , cos 𝑤𝑛 𝑡 つまり、SPEは𝑤𝑖 ごとにsinとcosの組を並べて得られるベクトル
  11. SPEsの気持ちは時計型embedding? 18 2 Transformer 解体新書 from:https://github.com/jalammar/jalammar.github.io/blob/master/noteboo kes/transformer/transformer_positional_encoding_graph.ipynb sin 𝑤0 𝑡

    , cos 𝑤0 𝑡 長針 周期短い 短針 周期長い sin 𝑤𝑛 𝑡 , cos 𝑤𝑛 𝑡 ⋯ sinとcosの組を時計の針とみると、位置𝑡は時刻で𝑤𝑖 は針の動く速さ 次元を2nとすると、sinとcosはn組→n個の針がある時計 “私” “は” “元気” “です” “。”
  12. 位置embeddingは足すべきか? 19 2 Transformer 解体新書 from:https://github.com/jalammar/jalammar.github.io/blob/master/noteboo kes/transformer/transformer_positional_encoding_graph.ipynb 位置embeddingは入力に足す実装が多い best practiceは不明。concatする方が良い可能性もある

    Sinusoidal positional embeddingsの場合 • ベクトルの最初の数十次元が位置情報に よって汚染される(学習済みembedding を使うときは注意が必要?) • これはソフトにconcatしているともいえる Learnable positional embeddingsの場合 • すべての次元が位置情報によって汚染さ れ得る • が、良い性能が出ているのでたぶん学習 でうまく住みわけがなされている模様
  13. positional encoding 20 2 Transformer 解体新書 b) 学習可能なパラメータとして適当に初期化して学習する • Learnable

    positional embeddings [Gehring+, ICML2017] • BERTやGPT、ViTなどよく使われている https://huggingface.co/transformers/_modules/transfo rmers/models/vit/modeling_vit.html#ViTModel 初期化の方法は様々 HuggingfaceのViTだとゼ ロベクトルで初期化 他にも一様分布や 正規分布などの場合がある (実装による)
  14. positional encoding 21 2 Transformer 解体新書 c) SPEsの𝑤𝑖 部分を学習可能なパラメータとする •

    Learnable sinusoidal positional embeddings [Wang+, ICLR2021] • Sinusoidalの形だと2つの位置の内積がcosの和で表される 𝑃𝐸 𝑝𝑜𝑠,2𝑖 = sin 𝑤𝑖 ⋅ 𝑝𝑜𝑠 𝑃𝐸 𝑝𝑜𝑠,2𝑖+1 = cos 𝑤𝑖 ⋅ 𝑝𝑜𝑠 𝑃𝐸(𝑝1) ⋅ 𝑃𝐸 𝑝2 = sin 𝑤1 ⋅ 𝑝1 ⋅ sin 𝑤1 ⋅ 𝑝2 + cos 𝑤1 ⋅ 𝑝1 ⋅ cos 𝑤1 ⋅ 𝑝2 ⋯ sin 𝑤𝑛 ⋅ 𝑝1 ⋅ sin 𝑤𝑛 ⋅ 𝑝2 + cos 𝑤𝑛 ⋅ 𝑝1 ⋅ cos 𝑤𝑛 ⋅ 𝑝2 = Σ𝑖 𝑛 cos 𝑤𝑖 𝑝1 − 𝑝2 距離が遠いほど類似度が小さい(単調性)が成り立つのは 𝑤𝑖 の大きさによる→学習で求めることを提案
  15. Transformer blockについて 22 2 Transformer 解体新書 Transformer block Transformer block

    Transformer block classification head positional encoding embedding 入力 入力をトークンごとにベクトル化 Self-attentionを中心とした メインの処理 分類の予測を行う 位置情報の付与
  16. Transformer block 23 2 Transformer 解体新書 Transformer block 学習方法やタスクに非依存のTransfomerの基本処理単位 ෝ

    𝒙 = 𝑇𝑟𝑎𝑛𝑠𝑓𝑜𝑟𝑚𝑒𝑟 𝒙 ベクトルの配列 𝒙 (トークン数×次元)を入力として 同じサイズの出力ෝ 𝒙を返す
  17. Transformerブロックの中身 24 2 Transformer 解体新書 Transformerブロックの中心的要素はたった3要素 1. Multi-head attention (次元分割型Self-attention)

    2. 残差接続(Residual connection) 3. Layer Normalizationによる正規化 (あとはFeedforwardとドロップアウトがある) ややこしい図(前述)でいうところのこの部分
  18. Self-attention 26 2 Transformer 解体新書 𝑊𝑄 𝑊𝐾 𝑊𝑉 𝑛, 𝑑

    + = ⋅ このクエリについて みると・・・ • 他のクエリについても同様に求められる • 内積はノルム正規化なしなので注意 • 次元の大きさに応じてスケーリング 𝑑して類似度的に扱っている • 正規化して正確にcos類似度にしても良いはずだが速度優先? 𝑛, 𝑑 𝑠𝑜𝑓𝑡𝑚𝑎𝑥 𝑄 ⋅ 𝐾𝑇 𝑑 ⋅ 𝑉 ベースの料理(Query)に関係する周りの料理を選び(Key) その材料(Value)で新しい料理(ベクトル)をつくる attention map
  19. Multi-head attentionへの拡張 27 2 Transformer 解体新書 次元分割型Self-attention(Multi-head attention) = ⋅

    Self-attentionの内積はベクトルの各要素にわたって大域 的な類似度を取っている 高次元にすると、 次元ごとの小さな特徴が無視されやすい ⋅ ⋅ ⋅ attention map • 小さなベクトルに切り分け計算 • トークン間の多様な類似性を 発見できる • 多様性を上げる損失関数を加 えると性能向上[Li+, EMNLP2018], [Huang+, EMNLP2019]
  20. 残差接続(Residual connection) 28 2 Transformer 解体新書 • 入力からの差分を学習する • 入力からの差分の学習が不要の場合

    sublayer部分が0になるように学習が進む • 学習の安定化、性能向上に寄与 𝑅𝑒𝑠𝑖𝑑𝑢𝑎𝑙 𝑥, 𝑠𝑢𝑏𝑙𝑎𝑦𝑒𝑟 = 𝑥 + 𝑠𝑢𝑏𝑙𝑎𝑦𝑒𝑟(𝑥) 多層での学習性能を上げる工夫
  21. Layer normalization 29 2 Transformer 解体新書 𝐿𝑎𝑦𝑒𝑟𝑛𝑜𝑟𝑚 𝑥 = 𝑥

    − 𝐸 𝑥 𝑉𝑎𝑟 𝑥 + 𝜖 ∗ 𝛾 + 𝛽 入力系列をトークンごとに正規化する操作 𝑛, 𝑑 Layernorm Layernorm Layernorm Layernorm 𝑛, 𝑑 嬉しい特徴 Large batch訓練がbatch accumulationで安心してできる ※batch normalizationだと統計量が変わってしまう 𝛾, 𝛽は学習パラメータ
  22. NLPにおけるTransformerの類型 31 3 Transformerの学習 と推論 大きく分けて2種類のタイプがある • 【Seq2seq】 Attention is

    all you need [Vaswani+, NIPS2017] • 【BERT】 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding [Devlin+, ACL2019]
  23. 自己回帰型と非自己回帰型 34 3 Transformerの学習 と推論 自己回帰型のSeq2seq • 時系列を時々刻々と順番に予測していく • 訓練時に未来の系列がリークしないようにAttention

    mapにマスクする(−∞で置き換える)工夫が必要 −∞ −∞ −∞ −∞ −∞ −∞ 「私 は 元気 です」をデコーダで出力するように学習する場合 私 は 元気 です Query Key 「私」に対応するQueryは、未来 の情報である「は」「元気」「です」 のKeyを考慮しない (ちなみに推論時も同様にマスク されている)
  24. 非自己回帰型のSeq2seq 35 3 Transformerの学習 と推論 全系列を一度に予測する Levenshtein Transformer [Gu+, NeurIPS2019]が有名

    トークン の消去 トークン用 穴の作成 穴埋め トークンの消去、トークン穴の作成、穴埋め の操作を通して全系列を段階的に編集する