【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)

797 Views

March 12, 21

スライド概要

2021/03/12
Deep Learning JP:
http://deeplearning.jp/seminar-2/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

DEEP LEARNING JP 言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc) [DL Papers] 発表者:岩澤有祐 http://deeplearning.jp/

2.

発表概要 • 言語で主に使われてきたSelf Attention(Transformer)が,様々 な領域で使われつつある • 画像における利用 – SASA(NeurIPS2019),SANs(CPVR2020),ViT(ICLR2021)など – ViTの後継論文としてDeIT,T2Tなど • より汎用なモジュールとしての可能性についての論文も – Perceiver:様々なモダリティで汎用に使えるモデル – Frozen Pretrained Transformer:言語 -> ほかモダリティへの転移 • 主に言語以外でのTransformerの活用についてのまとめ 2

3.

目次 • 前提知識:Self Attention • 画像におけるSelf Attention • モダリティに汎用な(Self) Attention – Perceiver – Frozen Pretrained Transformer 3

4.

前提知識:SELF ATTENTION 4

5.

前提の前提:単語埋め込み 入力 “Attention is all you need” Embedding size 𝐷 = 𝑋𝑇 Token size 𝐿 5

6.

Self Attention 𝑄 = 𝐾 = 𝑉 = 𝑋の場合がSelf Attention 6

7.

行列サイズの可視化 7

8.

Multi Head Self Attention 各ヘッドの処理(h個) • Q, K, Vを適当な重みWで埋め込む • Wは(トークンサイズ,ヘッドサイズ)の重み 全体をまとめる処理 • Concat + Linear • 通常は入力と同じサイズになるようにする 8

9.

Positional Encoding • Self AttentionはPermutation Invariant (位置情報が入らない) • 明示的に埋め込んだものがPE • PEの次元は入力と同じ "Visual Guide to Transformer Neural Networks - (Episode 1) Position Embeddings" (Youtube)より抜粋 9

10.

Positional Encoding(縦が位置,横が埋め込みの長さ) "Transformer Architecture: The Positional Encoding" (Blog)より抜粋 10

11.

Transformer Encoder Multi Head Self Attention • 前述の通り Residual Connection + Layer Norm • 入力を足す(MHSAの出力は入力と同じ大きさ) • LayerNormなどによる正規化 (Position-wise) Feed Forward • 各トークンごとにFeed Forwardに入力 • FFN(x) = σ(xW1 _ b1)W2 + b2 • W1の次元は(トークン長,隠れ層サイズ) • Σは活性化関数(GELUなどがよく使われる) • 最終的な出力は入力と同じサイズ 11

12.

補足(余談) • Feed Forward層は何をしているのか? – Key-Valueのニューラルメモリ機構になっている – “Transformer Feed-Forward Layers Are Key-Value Memories”, 2020 (arXiv) • ResidualとFeed Forwardは必須 – “Attention is Not All You Need: Pure Attention Loses Rank Doubly Exponentially with Depth”, 2021 (arXiv) • 細かい部分は重要か?(活性化関数とか) – “Do Transformer Modifications Transfer Across Implementations and Applications?” 2021 (arXiv) 12

13.

本題1:画像におけるSELF ATTENTION 13

14.

画像におけるSelf Attentionの大別 基本的に Attentionのみ ConvとAttentionを 組み合わせ 本資料のメイン “Bottleneck Transformers for Visual Recognition”より抜粋 14

15.

画像における単語(トークン)とは? テキストの場合 画像の場合 ?? • 単語1つが1単位として文章を表す • 画像の場合は??? 15

16.

主な方法1:ピクセルをトークンとみなす • 全体を見ると計算量が爆発 16

17.

Local Attention • 𝐾, 𝑉を空間的に 近い部分のみに • 計算量を削減 • SASAやSANsなど “Stand-Alone Self Attention in Vision Models”より抜粋 17

18.

畳み込みとLocal Attention 畳み込み 観測値に依存しない重みをかける Local Attention 観測値に依存した重みをかける ※理論的な関係は”On the Relationship between Self-Attention and Convolution Layers”など (相対的PEを使う場合任意の畳込みをSelf Attentionは近似出来る) 18

19.

その他の計算量削減方法:Axial Attention [Wang+2020] Self Attentionを縦方向と横方向に分けることで計算量削減 19

20.

主な方法2:パッチをトークンとみなす iGPT ViT ※図はそれぞれの論文より抜粋 20

21.

ViTの全体像 21

22.

ViTの補足 • PEには1次元の学習可能なパラメータを利用 – その他に2次元の学習可能パラメータ,相対的な座標を使う, 使わないなどを検証(Appendix D参照) • クラス分類はTransformer出力後のCLS tokenを利用する – CLS tokenの初期値も学習可能パラメータ – iGPTは最終層を空間方向に平均化して入力 • 若干Transformerの構造が元と違う – 具体的にはNormalizationの位置 22

23.

Self Attention vs. CNN 超巨大データを使うと畳み込みを凌駕 “A Survey on Visual Transformer”より抜粋 24

24.

ここまでのまとめ • 画像におけるPure Attention Baseな研究について説明 • 特に最近提案されたViTは大量データ大量パラメータだと 畳み込みを凌駕することも – 基本的にはパッチで分けてTransformerに突っ込む • データ効率を上げる研究もいくつかある – DeiT[Hugo+ 2021],Tokens-to-Tokens [Li+ 2021] • なおこの辺の手法はViT-pytorchという個人のリポで再現実装有 – 正しく検証できているのかは不明 25

25.

モダリティに汎用な(SELF) ATTENTION 26

26.

書誌情報 • “Perceiver: General Perception with Iterative Attention” • 著者:Andrew Jaegle, Felix Gimeno, Andrew Brock, Andrew Zisserman, Oriol Vinyals, Joao Carreira • 所属:DeepMind • 投稿日:2021/03/04 (arXiv) • 概要 – 様々なモダリティに汎用に使えるモデル,Perceiverの提案 – データ構造を仮定せずに高次元の入力をなるべくそのまま扱う – 画像,音声,動画,点群などのデータでSoTAに近しい性能を達成 – (詳細があまり書いてないので若干解釈入ってます) 27

27.

お気持ち • 畳み込みのような構造を仮定することは正しいのか? • なるべく自由度を上げてデータが自分自身を語るようにする べきなのか?(本論文の立場) • 構造を仮定する具体的な問題:ドメインごとに異なるアーキ テクチャを設定しなければならない – 手間がかかる.データを集めればOKという問題にしたい. 28

28.

提案:Perceiver (=Transformer + Cross Attention) 新しい部分 既存 繰り返し Transformerは超柔軟だが,高次元(長い系列)の扱いに難 => 潜在コードとのCross Attentionを導入(あとはTransformer) 29

29.

Cross Attention 前のページの図の拡大 • Latent Arrayは,適当なサイズの 学習可能なパラメタ • Byte Arrayは入力(画像など) • N <<< M – 例えば224×224の場合M>50000 – Nはハイパラ(実験では512など • O(NN) => O(MN) – 実際は繰り返すのでかなり軽量化30

30.

全体像(再掲) 新しい部分 既存 繰り返し • Cross Attention -> 潜在変数上でのTransformerを繰り返し • パラメータ共有しても良い(C.F. Universal Transformer) 31

31.

Perceiverの補足(推測) • ViTは固定グリッドで圧縮,Perceiverは類似度で圧縮 • Latent Arrayは1024 * 512とか • Byte ArrayとLatent Arrayはサイズが違うので内積取れない – 多分MHSAと同様適当なサイズに次元変換(=線形層1層かます) • Byte ArrayのPositional EncodingはSinusoidをConcat – 普通のTransformerはAdd – 任意の数のPEを用意出来る(次元揃える必要ないので) • Latent ArrayのPEは1次元の学習可能パラメタ(多分) 32

32.

実験:扱っているデータ 汎用にPerceiverが利用出来ることを検証 (ほぼ変更なしでSoTAと同等程度であることを確認) 33

33.

実験設定:ImageNet • 224×224にクロップしてRandAugmentでデータ拡張 – なので全くドメイン知識使ってないわけではない • PEはクロップした画像を[-1, 1]としてつける – クロップする前でやると過学習したとのこと • 最適化はLamb Optimizer + Scheduling – “Large Batch Optimization for Deep Learning: Training BERT in 76 minutes” • (Cross Attention + Lattent×6)×8 (合計44Mのパラメタ) – Cross Attentionは1ヘッドのみ – Latent Arrayは1024個(それぞれ512次元) – 最初のCross Attention + Latent以外は重み共有 34

34.

結果:ImageNet 元論文 同じPE 構造仮定なし • 青がデータ構造をほぼ仮定してない手法 • Transformerは64×64にリサイズした画像を利用 • ResNet-50やViT(ImageNetで学習)と同程度 35

35.

結果:Permuted ImageNet • ImageNetをPermutationしたものでテスト – Fixedは全データ共通のPermutation – Randomは全データで違うPermutation • Perceiverは構造が無い入力でもうまくいく(ほかはダメ) 36

36.

AudioSetとPoint Cloud AudioSet • 音声は61,440次元,動画は65,536次元 • PerceiverがSoTA • データ拡張も音声特有のものは未使用 Point Cloud • 2000個の座標が入力 • 構造仮定なしでは提案が 良い 37

37.

Perceiverまとめ • 柔軟なTransformerで高次元入力をうまく扱う方法の提案 – Self Attentionではなく潜在変数とのCross Attentionを使う • 様々なモダリティでSoTAに近い性能 • GANsformerでも似た方法が取られている • ViT系の実装と同じ人が実装を公開している – 更に余談としてこの人はGLOM [Hinton, 2021]も実装を公開 – 動いているのかは不明 38

38.

PRETRAINED TRANSFORMERS AS UNIVERSAL COMPUTATION ENGINE 39

39.

書誌情報 • “Pretrained Transformers as Universal Computation Engines” • 著者:Kevin Lu, Aditya Grover, Pieter Abbeel, Igor Mordatch • 所属:UC Berkeley, FAIR, Google Brain • 投稿日:2021/03/09 (arXiv) • 概要 – 言語で訓練したTransformerは別のモダリティにも転移可能(!!!?) – 実験論文 40

40.

Frozen Pretrained Transformer(FPT) • 言語でTransformer全体を訓練(構造はGPT2を利用) • Self AttentionとFeed Forwardを固定 • 入力層の埋め込み,位置埋め込み,出力層,Layer Normは再学習 • 別のモダリティに転移して性能を検証 41

41.

検証している後続タスク • Bit Memory • Bit XOR • List Ops([MAX 4 3 2 1] -> 4) • MNIST(画像 -> カテゴリ) • CIRFAR-10(画像 -> カテゴリ) • CIFAR-10 LRA(画像をグレースケールにしてFlatten) • Remote homology detection(アミノ酸配列 -> 折りたたみ構造) 42

42.

実験1:FPT vs. Full vs. LSTM • FPTでFull Transformer(全学習)と同程度の性能が出る • (というものの,そんなに精度が高くない気はする. 43

43.

実験2:言語以外のモダリティで事前学習 • Randomは単に初期化した状態 • BitはBit Memoryタスクで事前学習 • ViTはViTの重みを利用 • 総合的には言語がよい(のでは)という主張(例えばHomologyでVitは 44

44.

実験3:Transformer vs LSTM • どちらもランダムに初期化したものの比較 • Transformerが大幅に良い 45

45.

実験8:初期化の工夫 • 学習済みとランダムだと様々な統計量が大きく異なる • 統計量だけ合わせて初期化するとよくなるか? • Yes(だがそれだけでもない. 46

46.

実験7:モデルサイズに応じて性能上がるか • 大きいと良い • (実験はもっと大量にあるので興味ある方は論文参照 47

47.

FPTまとめ・感想 • Transformerが学習しているのは,関数というより処理 • どういう処理をするべきかは,抽象的な空間では同じ (なのかもしれない...) • 汎化にはグラフ構造が必要という話とも関係するかもしれない • 割と小規模なデータでしか試してないので,もっと大きい 規模だと変わる気もする • Global Workspaceとの関係が書かれてたがよくわからなかった 48

48.

あまり話せなかった話題(文献末尾につけてます) • GANsformer – 画像分類だけでなく,画像生成などでも使われている – GANsformer自体はPure Attentionではない • DeiT,Tokens-to-Tokens – ViTの改良手法 – 主にデータ効率が良くなる • GLOM – ViT+Top-Down Attention + Consensus (- Multi Head) – 画像をパース木で表すようなモデル 49

49.

全体まとめ・感想 • 言語以外でのTransformerの活用が進んでいる – 画像:ViTなど – 汎用:Perceiver,Frozen Pretrained Transformerなど • なるべく仮定をへらす方向に進むのはおそらくそうなる • Transformerは結局何をしているのか – 単なる関数と捉えると見誤るような気もする • 若干解釈が入ってます(誤りあったらごめんなさい m(_ _)m 50

50.

主な文献等:Self Attention, Transformer一般 • “Attention is All You Need”, NeurIPS2017 • “Attention is Not All You Need: Pure Attention Loses Rank Doubly Exponentially with Depth”, 2021 (arXiv) • “Do Transformer Modifications Transfer Across Implementations and Applications?” 2021 (arXiv) • “Transformer Architecture: The Positional Encoding”, Blog • “Visual Guide to Transformer Neural Networks - (Episode 1) Position Embeddings”, Youtube 51

51.

主な文献等:画像に関するSelf Attention Pure Attention系 (SASA) “Stand-Alone Self-Attention in Vision Models”, NeurIPS2019 (SANs) “Exploring Self-attention for Image Recognition”, CPVR2020 (axial attention) “Axial-DeepLab: Stand-Alone Axial-Attention for Panoptic Segmentation”, ECCV2020 (iGPT) “Generative Pretraining From Pixels”, ICML2020 (ViT) “An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale”. ICLR2021 (DeiT) “Training data-efficient image transformers & distillation through attention”, arXiv, 2021 (T2T) “Tokens-to-Token ViT: Training Vision Transformers from Scratch on ImageNet”, arXiv, 2021 (Survey) “A Survey on Visual Transformer”, arXiv, 2021 それ以外 (GANsformer) “Generative Adversarial Transformers”, arXiv, 2021 (Bottleneck Transformer) “Bottleneck Transformers for Visual Recognition”, arXiv, 2021 (GLOM) “How to represent part-whole hierarchies in a neural network”, arXiv, 2021 52

52.

参考:ViT系の実装をガリガリしている人 ※ ちょこちょこ細かいところは違うっぽい? https://github.com/lucidrains より 53