図解Vision transformerの処理

22.4K Views

August 01, 23

スライド概要

Vision Transformerで行われるベクトルや行列の計算を図で説明しています.

profile-image

コンピュータを使って色々計算しています.個人的な技術に関するメモと講義資料が置いてあります.気が向いた時に資料を修正しています. 公立小松大学臨床工学科准教授 https://researchmap.jp/read0128699

シェア

またはPlayer版

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

関連スライド

各ページのテキスト
1.

図解 Vision transformerの処理 公⽴⼩松⼤学 藤⽥ ⼀寿 Ver. 20230907 An Image is Worth 16x16 Words: Transformers for Image Recognition at Scaleの図解

2.

Vision transformer (ViT)の特徴 • 画像識別のためのニューラルネットワークのモデル(アーキテクチャ)である. • 画像識別タスクでよく使われている畳み込みを使わない. • 畳み込みが無い⽅が良いかどうかはタスクによるだろう. • 画像をパッチ(⼩さい画像)に分けて処理する. • それぞれのパッチは同じネットワークで処理される. • すべてのパッチが同じネットワークに⼊るため,パッチの位置情報は消失する. • 顔画像の場合,⽬の部分がパッチとして切り出されたとすると,その⽬のパッチは⿐の上にある.しかし, ViTは⽬が⿐の上にあるという情報は使えない. • しかし,パッチの位置情報は画像識別で重要なためViTではPosition embeddingsを導⼊することでパッチの 位置情報を取り込む. • パッチ数が増減してもネットワークの構造を変える必要がないため,パッチ数に制限ない. • ただし,position embeddingsを学習可能にするとパッチ数を可変に出来ない.しかし,ViTの著者は position embeddingsの値を補完することで対応している. • パッチ数に制限はないため,ViTに⼊⼒する画像のサイズに制限はない(メモリが許す限り). • 同じネットワークで様々なサイズの画像サイズを扱える.

3.

Vision Transformerの処理の概要 • 画像をパッチ(⼩さな画像)に分ける. • パッチからEmbeddingsを得る. • Transformer EncoderにEmbeddingsを⼊⼒する. Published as a conference paper at ICLR 2021 • CLS embeddingを多層パーセプトロンに⼊⼒する. Vision Tr ansfor mer (ViT) Tr ansfor mer Encoder Lx Class Bird Ball Car ... MLP Head + MLP Norm Transformer Encoder + 0 * Extra learnable [ c l as s ] embedding * Patch + Position Embedding 1 2 3 4 5 6 7 8 9 Multi-Head Attention Linear Projection of Flattened Patches Norm Embedded Patches

4.

Vision Transformerの構造と処理 Vision Tr ansfor mer (ViT) Clsトークンのみを⽤い, 多層パーセプトロンが識 別を⾏う. Class Bird Ball Car ... Tr ansfor mer Encoder MLP Head embeddingsが Transformer Encoder で処理される. Lx + MLP Norm Transformer Encoder + 0 * Extra learnable [ c l as s ] embedding * Patch + Position Embedding 1 2 3 4 5 6 7 8 9 Multi-Head Attention Linear Projection of Flattened Patches Norm 画像をパッチに 分ける. Embedded Patches Figure 1: Model overview. We split an image into fixed-size patches, linearly embed each of them パッチがembeddingsに変換される. Class embedding (clsトー add position embeddings, and feed the resulting sequence of vectors to a standard Transforme クン)toが追加される. encoder. In order perform classification, we use the standard approach of adding an extra learnab

5.

ViTの具体的な処理と配列の形 状

6.

1.Embeddingsの作成

7.

Embeddingの作成⼿順 1. 画像𝑥を !# 個のパッチに分ける.パッチは𝑝×𝑝×𝑐の画像(3階テン " " ソル)である.ここで𝑐はチャネルを表す. 2. パッチをベクトル𝒙$" にし,⾏列𝑬をかける(𝒙$" 𝑬). 𝒙$" 𝑬 は𝑝% 𝑐次元 ベクトルで,𝑬は学習可能である. 𝒙$" をembeddingと呼び,今後 embeddingsは個別に処理される. 3. それぞれのパッチから計算されたembeddingsにclass embedding 𝒙&'()) を追加する. 4. Embeddingsにposition embeddings 𝑬*+) を⾜す.

8.

画像をパッチに分ける 𝑃! 𝐶 𝑊 𝐻 𝑁 𝐶 𝒙 ∈ 𝑅"×$×% 画像を𝑃×𝑃の⼩さ な画像(パッチ) に分ける. 画像𝒙 ∈ 𝑅!×#×$ は3階テンソルで ある. それぞれのパッ チをベクトルに する. パッチは𝑁 = 𝐻𝑊/𝑃% 個ある. それぞれのパッチは𝑅&×&×$ の3階テ ンソルである.つまり,パッチは 𝑃×𝑃の画像である. ! パッチはそれぞれ𝒙(' ∈ 𝑅& $ のベクトルに変換される.つま り, ベクトルが𝑁個できる.

9.

パッチをembedingに変換する 1 𝑃! 𝐶 𝒙)( × 𝑃! 𝐶 𝐷 𝑬∈𝑅 𝐷 & ! % ×' 1 学習可能 𝒙)( 𝑬 これが𝑁個ある サイズ𝑃% 𝐶のベクトルになったパッチに⾏列𝐸をかけて,サイズ𝐷のベクトルを作る.𝐷はembedding sizeである. 𝐸はニューラルネットワークの学習により得る.つまり𝐸はニューラルネットワークの重みである. 𝒙)( 𝒙)( 𝑬 重み𝐸 𝑃! 𝐶個 𝐷個

10.

CLS embeddingを追加する 𝒛** = 𝒙+,-.. 1 𝐷 学習可能 𝑁個のパッチ+𝑥"#$%% だから𝑁 + 1個 追加 𝑥( 𝐸 𝒙( 𝑬 = 𝒙)( 𝑬; 𝒙!( 𝑬; … ; 𝒙/ (𝑬 𝐷 𝑁+1 𝑁 𝐷 𝒙+,-.. ; 𝒙)( 𝑬; 𝒙!( 𝑬; … ; 𝒙/ (𝑬 Class embedding(clsトークン) 𝑥+,-.. = 𝑧** を学習可能なembeddingとして追加する. 識別の際, Transformer encodeにより処理された𝑥01233 のみ(CLS embeddingのみ)を ⽤い識別が⾏われる.

11.

Positional embeddings + 𝐷 𝐸(4. 𝑁+1 𝐷 𝑁+1 𝑁+1 𝐷 𝒛. 学習可能 𝒙+,-.. ; 𝒙)( 𝑬; 𝒙!( 𝑬; … ; 𝒙/ (𝑬 𝒛* = 𝒙+,-.. ; 𝒙)( 𝑬; 𝒙!( 𝑬; … ; 𝒙/ ( 𝑬 + 𝑬(4. これがTransformer endocderの⼊⼒となる なぜ𝑬(4. を⾜さねばならないか(positional embeddingsが必要か)は以降のスライドで説明する.

12.

Position embeddingsはなぜ必要か • Vision TransformerおよびTransformerは場所情報(順番情報)を扱え ない. • パッチ(トークン)ごとに処理が⾏われる. • そのパッチ(トークン)の処理にその位置は⼀切関係ない. • しかし,画像であれ⽂章であれ位置は重要な情報を含んでいるはずで ある. • 位置情報が扱えないTransformerに位置情報を扱えるようにするため に,position embeddingsが⽤いられる.

13.

Position embeddingsとはなにか • 場所情報を持つ⾏列𝑬*+) をposition embeddingsと呼ぶ. • 𝑬*+) をembeddingsに加えることで,各embeddingsに場所情報を与え る. • Vision transformerでは𝑬*+) は学習により得る. • Transformerでは𝑬*+) を正弦波で作る. • Vision transformerでも 𝑬*+) に正弦波を⽤いることが可能である. • 𝑬*+) を学習しても正弦波にしても⼤きな性能の変化はない. • しかし 𝑬!"# を使わなければ性能は落ちる.

14.

𝑥 10000)/+ 𝑃𝐸 𝑥, 1 = cos 𝑬)* 563 … 𝑃𝐸 𝑥, 10 = sin 𝑥 10000)/+ 𝑃𝐸 𝑥, 0 = sin 𝑁 𝑁 𝑥 𝑬!"# 𝑬)563 𝑬*563 𝐷 𝑥 10000,/+ 1D sinusoidal position embeddings … 1次元正弦波を⽤いたposition embeddingsは次の式で表される. 7 7 𝑃𝐸 𝑥, 2𝑖 = sin )****!&/( ,𝑃𝐸 𝑥, 2𝑖 + 1 = cos )****!&/( ' 𝑖は0,1,2, … , − 1の整数である. 𝑥はパッチの場所(⾏番号),2𝑖と2𝑖 + 1 はembeddingの番号(列番号)であ ! る. 10000!8/' は波⻑を表す.波⻑はembeddingごとに異なる. Sinusoidal position embeddingsではclsトークンに𝐸)*% を加えても意味がないので,𝐸+,-は𝑁×𝐷の⾏列にしている.

15.

1D sinusoidal position embeddings 𝑥 それぞれ,Embedding sizeが256,24×24パッチに 対する𝐸(4. である.上の図のような1次元の正弦波 が各列 𝑥(: 𝐸に⾜される.Enbeddingの番号が増える : ほど波⻑が⻑くなる.右図は 𝐸(4. の値を対応する 画像の場所に配置したときの強度分布である.

16.

2D sinusoidal position embeddings 1 𝐷 𝑥 𝑊/𝑝 𝐻/𝑝 𝑬89: 𝑁 𝑁 𝑦 ⼊⼒画像上の パッチの位置 1次元正弦波を⽤いたpositional encodingは次の式で表される. 𝑥 𝑥 𝑃𝐸 𝑥, 𝑦, 2𝑖 = sin , 𝑃𝐸 𝑥, 𝑦, 2𝑖 + 1 = cos 10000;8/' 10000;8/' 𝑦 𝑦 𝑃𝐸 𝑥, 𝑦, 2𝑗 + 𝐷/2 = sin , 𝑃𝐸 𝑥, 𝑦, 2𝑗 + 1 + 𝐷/2 = cos 10000;</' 10000;</' ' 𝑖, 𝑗は0,1,2, … , − 1の整数である. 𝑥, 𝑦はパッチを2次元に配置したときの場所(⾏番号),4𝑖などは ; はenbeddingの番号(列番号)である. 10000;8/' と 10000;</' は波⻑を表す.波⻑はenbedding ごとに異なる.

17.

2D sinusoidal position embeddings : 右図は 𝐸(4. の値を対応する画像の場所に配置したときの強度分布である.

18.

2. Transformer encoderの処理

19.

9 Transformer Encoderの処理 Tr ansfor mer Encoder Lx + MLP MLPの出⼒に 𝑧,> が⾜される.𝑧, = MLP LN 𝑧,> + 𝑧,> 多層パーセプトロン(MLP)で処理される.MLP LN 𝑧,> Norm + Multi-Head Attention s MSAの出⼒に𝑧,=) が⾜される. 𝑧,> = MSA 𝐿𝑁 𝑧,=) + 𝑧,=) Multi-head self attentionが⾏われる. MSA LN 𝑧,=) Norm Layer normalizationが⾏われる. LN ⋅ Embedded Patches

20.

Multi-head self attentionの処理 Multi-Head Attention 𝑨𝒗の計算をする. 全結合ネットワークで処理する. 各ヘッドを統合する. 𝑨 = softmax LN 𝒛,=) がℎヘッドに分かれる. 各ヘッドは𝒒, 𝒌, 𝒗⾏列からなる. 𝒒𝒌. 𝐷/ 𝒒𝒌? の計算をする. Multi-Head Attention consists of several (Vaswani et al., 2017, Attention is all you need)

21.
[beta]
Layer normalization
𝐷

𝑁+1

𝑁+1

𝐷

𝒛,=)

LN 𝒛,=)

データを⼀つづつ正規化する.
𝑦8 = 𝛾𝑥R8 + 𝛽 = 𝐿𝑁 𝑥8
𝜇8 =

)
"

∑"
< 𝑥8< , 𝜎8 =

)
"

∑"
< 𝑥8< − 𝜇8

!

, 𝑥R8 =

7&0 =@&
A&

𝐻は𝑥8 に含まれる要素の数,𝑖はデータの番号である.

Layer normalization (Ba, Kiros, and Hinton, 2016) はデータごとに正規化している.
Batch normalizationは各チャネルをバッチごとに正規化している.

https://paperswithcode.com/method/layer-normalization

22.

Multi-head self attention × × × × × × 𝑁 + 1個 𝐷 𝑼∈ Transformer encode 内で𝑈は⼀つで, embeddingごとに 同じ𝑈をかける. 𝑅,×., 学習可能 3𝐷 LN 𝒛,=) 𝐷/ℎ 𝐷/ℎ 𝐷/ℎ 𝒒 𝒌 𝒗 𝐷/ℎ 𝐷/ℎ 𝐷/ℎ 𝒒 𝒌 𝒗 ℎ個ある 𝑁+1 𝑁 + 1個 𝑁+1 𝑁+1 𝐷 3𝐷 𝑁+1 1 𝐷 𝐷/ℎ 𝐷/ℎ 𝐷/ℎ 𝒒 𝒌 𝒗

23.

Multi-head self attention 𝑁+1 𝐷/ℎ 𝐷/ℎ 𝐷/ℎ 𝒗 SA × 𝒌 𝐷/ℎ 𝐴 = softmax 𝑞𝑘 E 𝑁+1 𝒒 𝐷F 𝑨 × SA 𝒛 = 𝑨𝒗 SA 𝑧 はℎ個あるのでそ れを結合する. 𝐷 𝑁+1 𝑁+1 𝑁+1 SA SA SA SA [SA) 𝒛 , … , SAF 𝒛 , ]

24.

Multi-head self attention 𝐷 𝐷 × 𝐷 𝑼-./ ∈ 𝑅+×+ 𝑁+1 𝑁+1 𝐷 MSA 学習可能 MSA LN 𝒛,=) = SA) LN 𝒛,=) , … , SAF LN 𝒛,=) SA) LN 𝒛,=) , … , SAF LN 𝒛,=) 重み 𝑼G.𝐷個 𝑼G.- ∈ 𝑅'×' はこの全結合ニューラル ネットワークを⽤い学習する. 𝐷個 𝑼G.-

25.

Φ 𝑥 :ガウス分布の累積分布関数 erf: Gaussian error function GELU MLP LN 𝒛>, 𝐷 𝐷 𝑁+1 𝑥 𝑥 1 + erf 2 2 𝐷個 𝐷個 GELU (Gaussian Error Linear Unit) ℎ 𝑥 = 𝑥Φ 𝑥 = LN 𝒛>, MLP LN 𝒛>, + 𝒛>, 𝐷 𝑁+1 + 𝒛,=) 𝐷 𝑁+1 𝒛>, = MSA LN 𝒛,=) + 𝒛>, 𝑁+1 𝒛,=) MSA Layer Normalization 𝐷 𝐷 𝑁+1 𝑁+1 MHSA後の処理 𝒛, 𝒛, = MLP LN 𝒛>, + 𝒛>,

26.

3.MLPの処理

27.

識別 𝑁+1 𝐷 𝒛> clsトークンを取 り出す. 1 𝐷 𝒛*H 識別結果 Layer Normalization 𝒚 = LN(𝒛*H ) 𝐾個 𝐷個 𝐾クラスあるとする. MLP 𝒚 clsトークン 𝑧H* のみ抽出し,それを⽤い識別する.他のembeddingsは使⽤しない. Fine-tuningのときはMLPを取り除き,0で初期化された𝐷×𝐾のフィードフォワード層 をつける.つまり,classification headが3層から2層に変更される(MLPからLinearへ 変更).