115 Views
May 28, 26
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2026年前期輪読会#5 2026/5/28 深層学習による画像認識の基礎 Vision Transformer (4.1~4.2) 総合人間学部 認知情報学系B4 神原みちる 0
アジェンダ ■ 4.1 Vision Transformer 概要 ■ 4.2.1 パッチ埋め込み Patch embedding ■ 4.2.2 位置埋め込み Positional embedding ■ 4.2.3 層正規化 Layer normalization ■ 4.2.4 自己注意機構 Self-attention ■ 4.2.5 順伝播層 ■ 4.2.6 スキップ接続 ■ 4.2.7 ViTにおける主要演算まとめ 1
アジェンダ Vision Transformerを初めから丁寧に! Transformerの復習も大きく重ねて 2
アジェンダ ■ 4.1 Vision Transformer 概要 ■ 4.2.1 パッチ埋め込み Patch embedding ■ 4.2.2 位置埋め込み Positional embedding ■ 4.2.3 層正規化 Layer normalization ■ 4.2.4 自己注意機構 Self-attention ■ 4.2.5 順伝播層 ■ 4.2.6 スキップ接続 ■ 4.2.7 ViTにおける主要演算まとめ 3
4.1 Vision Transformer の登場 2020年、画像認識に純粋なTransformer を持ち込んだ - 起源は2017のTransformer, - BEAT, GPT など後続モデルの有用性が数多く確認され、LMM分野での使用が爆発的に増え る - 2020年10月 画像分類タスクでも優れた性能を達成可能であるとの論文 - An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale"(画像は 16×16の単語に値する ) [1] - この論文以前からCNNに依存した応用の動きはあったが、計算コストや実装効率の観点から決定 打に至る方法はなかった 4
4.1 Vision Transformer の登場 2020年、画像認識に純粋なTransformer を持ち込んだ時、どんなことができたか • 画像をパッチに分割し、単語列のように Transformerへ入力(タイトル:画像は 16x16 の単語に値 する) • CNNに依存せず、畳み込みを一切使わない純粋な Transformer で画像分類が可能 • 大量データで事前学習し、ImageNet 等へ転移すると最先端CNN に匹敵・凌駕 • しかも事前学習に必要な計算資源ははるかに少ない 5
4.1 Vision Transformer の登場 なぜ画像認識では、2020以前に、そのままTransformerを使ってこなかったか? - Transformerには、CNNが本来備えている帰納バイアス (inductive bias)が欠けているため、不十 分な量のデータで訓練した場合にはうまく汎化しない - 帰納バイアス(inductive bias) - 並進等変性 ( translation equivariance ) : 入力をずらしたとき、出力がどう動くか - 局所性(locality) : 離れたピクセルは一旦無視して近接したピクセルだけから特徴を拾う しかし、より大きなデータセット(1400万〜3億枚の画像)で訓練すると、状況は一変する → 大規模な 訓練が帰納バイアスに打ち勝つことを見出した[1] 6
補足コラム Transformer の3形態 ViT はエンコーダ型のTransformer ● ViT はエンコーダ型 ○ BEATもエンコーダ型 ○ 文章の分類問題、文章間の類似度推定 ● デコーダ型 ○ GPT系 ○ 文章生成や文書要約 ● エンコーダ・デコーダー型 ○ 機械翻訳など、入力情報に強く条件づけされるタスクで効果的 ■ 8章→自然言語のような異なるモダリティを扱うタスクでも効果的 7
4.1 Vision Transformer の概要 ViTの概要図 [1] 8
4.1 Vision Transformer の概要 ViTは主に6つの要素で構成される 6つの要素 1. 2. 3. 4. 5. 6. パッチ埋め込み Patch embedding 位置埋め込み Positional embedding 層正規化 Layer Normalization 自己注意機構 Self-attention 順伝播層 Feed-Forward層、MLPブロック スキップ接続 手順 1. 画像をパッチ分割→1,2 によりパッチ集合をベクトル系列に+クラストークン=D次 元の入力ベクトル系列を用意 2. 3,4,5,6で構成される処理群をL回実行し、最終的な出力ベクトル系列を得る 9
アジェンダ ■ 4.1 Vision Transformer 概要 ■ 4.2.1 パッチ埋め込み Patch embedding ■ 4.2.2 位置埋め込み Positional embedding ■ 4.2.3 層正規化 Layer normalization ■ 4.2.4 自己注意機構 Self-attention ■ 4.2.5 順伝播層 ■ 4.2.6 スキップ接続 ■ 4.2.7 ViTにおける主要演算まとめ 10
4.2.1-2 Patch+ Positional Embedding 橙色の部分について話す [1] 11
4.2.1 パッチ埋込み パッチ埋め込みをすることによって画像を認識可能な単位に分ける - パッチとは? 画像を格子状に切り分けたタイル - NLP処理でのTransformerは、文を単語に相当するトークンに分割する。 - 画像には言語のように単語に相当するトークンが存在しない - An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale"(画像は 16×16の単語に値する) [1] = パッチ埋め込みをすることによって画像を認識可能な単位に分ける 12
4.2.1 パッチ埋込み パッチ埋め込みをすることによって画像を認識可能な単位に分ける 13
4.2.1 パッチ埋込み Vision Transformer (ViT) の入力ベクトル作成 1. 分割 2. 平坦化 3. 線形変換 4. クラストークン 入力画像 X ∈ R^C×Н×W をp×pのサイズのパッチに 分割 各パッチ(サイズ C × p ×p) を平坦化し、1次元のベクト ルに 学習可能な「クラス用トーク ン([CLS])」を先頭に追加 線形写像(全結合層)を適 用し、d次元のベクトルへ変 換 =パッチ埋め込み - 補足:1,2,3は入力画像Xに対して、ストライドp, 出力チャネルd, カーネルサイズ p×pの畳み込みフィルタを適応することと等価なため、実装は畳み込みで行われる ことが多い 14
4.2.2 位置埋め込み Positional embedding 画像内の情報を正確に認識するためには物体の構造や位置関係が重要な手がかりになる ∈^d×(n+1)は一般に標準正規分布により初期化される 補足:先述の論文[1]では2次元の工夫した埋め込みも検証されていたが、ViTは独自に位置を学習 する(後述)ので1次元の埋め込みで十分だったのこと。 15
4.2.2 位置埋め込み Positional embedding 元論文[1]での位置埋め込みの可視化と分析 - 位置情報「あり」と「なし」の差は大きい → 位置情 報は必要。約0.03の差 - 「あり」の中での方法の違いはほぼ差がない → 1 次元でも2次元でも相対でも、結果はほとんど変わら ない。0.003程度の差 筆者らの解釈: Similarity of position embeddings of ViT-L/32. Tiles show the cosine similarity between the position embedding of the patch with the indicated row and column and the position embeddings of all other patches[1] アテンションが動くのは ピクセル単位ではなくパッチ単位 だか ら、この程度の小さな解像度なら、どのエンコード方法でも空 間関係を学習するのは同じくらい簡単だ 16
4.2.2 補足コラム 位置埋め込み (Positional enbedding)と位置符号 (positional encording) 曖昧に定義されている場合があるので明確にする - 位置情報も学習可能なパラメータで表現し、他の重みパラメータと一緒に学習する 方法を位置埋 め込みと呼ぶ。 - 位置符号 は、位置情報の学習は行わず、終始固定の位置情報を用いる 17
アジェンダ ■ 4.1 Vision Transformer 概要 ■ 4.2.1 パッチ埋め込み Patch embedding ■ 4.2.2 位置埋め込み Positional embedding ■ 4.2.3 層正規化 Layer normalization ■ 4.2.4 自己注意機構 Self-attention ■ 4.2.5 順伝播層 ■ 4.2.6 スキップ接続 ■ 4.2.7 ViTにおける主要演算まとめ 18
4.2.3 層正規化はどこに位置するか? 自己注意機構と順伝播層の直前の二箇所 事前層正規化 [1] 19
4.2.3 層正規化 Layer normalization 層ごとの出力値の分布を一定に保つ 1. 統計量の計算 入力ベクトルh 平均 と分散 を計算 2. hを標準化して学習可能なパラメータで調整する εは分母が0になることを防ぐ非常に小さな値 γはスケール移動 , βは並行移動の調整パラメータ - 平均0, 分散1の分布が常に最適であるとは限らないため 3. ベクトル それぞれ独立に正規化処理 20
4.2.3 層正規化 Layer normalization 層正規化の役割は表現力を損なわないようにすること、ひいては学習を安定させること ● 層正規化の役割 = 学習の安定化 - 順伝播層で活性化関数 が頻繁に使用されるが、入力値が常に正もしくは負に偏っている場 合、表現力は線形関数と同じになってしまう = 正規化によって入力がバランスよくなることが大事 - サンプルごとの統計量が大きく変わるような場合 に有効 - バッチ正規化、ミニバッチ全体の統計量をを用いて正規化する方法、サンプル(ベクト ル)ごとに統計量が大きく異なっている場合 、バッチ正規化によって学習が不安定に なったり、性能劣化につながってしまったりする。 (バッチ正規化は複数サンプルをまたいだ正規化) - 訓練データとテストデータ間で分布が大きく異なる場合も同様 - 補足:パッチ埋め込みの前後に層正規化を行う、二重層正規化 もViTモデルでは有用である 21
アジェンダ ■ 4.1 Vision Transformer 概要 ■ 4.2.1 パッチ埋め込み Patch embedding ■ 4.2.2 位置埋め込み Positional embedding ■ 4.2.3 層正規化 Layer normalization ■ 4.2.4 自己注意機構 Self-attention ■ 4.2.5 順伝播層 ■ 4.2.6 スキップ接続 ■ 4.2.7 ViTにおける主要演算まとめ 22
4.2.4 自己注意機構はどこに位置するか? クエリから見て重要なベクトルを選び、重要度に応じて値を集約する処理 - なぜ「自己」注意機構か? k,v方式のデータベースに対して、qで問い合わせを行うが、qもk,vも同じ情報源を用い て生成されているから 23
4.2.4 自己注意機構の具体的な演算内容 クエリから見て重要なベクトルを選び、重要度に応じて値を集約する処理 1. Q, K, V の生成 入力されたパッチの系列 H から3つのベクトルを作成(全結合層の重みはそれぞれ異なる ことに留 意) 2. 3. 4. 各クエリq に対し、Kとの類似度(内積) を計算 √d はスケーリング係数 ソフトマックス関数による確率化 情報の集約 24
4.2.4 自己注意機構の解釈 [CLS]トークンに関する解釈 - 類似度に基づいて、全ての画像 パッチを1つのベクトルに集約する 処理 - クエリの観点から注意すべきベクト ルを選択し、その重要度によってベ クトルを集約する処理 25
4.2.4 自己注意機構の比較など グローバルに特徴抽出できることがCNNとの比較としてあげられる - 畳み込み処理との比較 - - CNNとは特徴抽出の受容野が大きく違う CNN:3×3 画素程度 self-attentionは画像全体から画像特徴を一気に集約する、 - √d で割る理由:ソフトマックス関数の傾き、勾配消失問題を防ぐため e.g. d次元のランダムベクトル、平均0, 分散1 内積は平均0, 分散d = 次元数増えるにつれ 内積の分散が大きくなる=√d で内積結果を割ることで内積の分散が1になるように (ある確率変数Xを定数cで割ると、分散はc^2で割られる)(= 分散を1にするために標準偏差で割る=標準化) 26
4.2.4 マルチヘッド注意機構 実際のViTでは自己注意機構を複数並列実行させたものを用いる。 softmax()は1つの要素のみ高い傾向があるため、複数のヘッドを用いてそれそれ独立に特徴抽出 1. Q,K,VをH個のヘッドに分割する 各ヘッドhは、 という次元数 れにより、各ヘッドは全体の情報を少しずつ(専門 分担するように)分担して計算 2.各ヘッドでの独立した計算 3.全てのヘッドを統合する Concat (連結): すべてのヘッドの出力を横一列に Woは調整のための重み行列 (全結合層 ) 27
アジェンダ ■ 4.1 Vision Transformer 概要 ■ 4.2.1 パッチ埋め込み Patch embedding ■ 4.2.2 位置埋め込み Positional embedding ■ 4.2.3 層正規化 Layer normalization ■ 4.2.4 自己注意機構 Self-attention ■ 4.2.5 順伝播層 ■ 4.2.6 スキップ接続 ■ 4.2.7 ViTにおける主要演算まとめ 28
4.2.5 順伝播層 MLP 橙色の部分について話す [1] 29
4.2.5 順伝播層 MLP(多層パーセプトロン ) クエリから見て重要なベクトルを選び、重要度に応じて値を集約する処理。 - 2層の全結合層と活性化関数で構成される。 入力ベクトルをhとすると、 𝞼(・)は活性化関数、GERUが用いられる ● コラム:順伝播層の役割 ○ 順伝播層のパラメータ数はtransformer全体の2/3を占めるため重要な役割がありそう。 ○ 代表的な役割:記憶 簡単に:attentionの式とMLPの式はsoftmaxか活性化関数かという違いはあるが、構造的に にている 。W1がK, W2がVに解釈できるという主張(詳しくは論文へ[2]) 30
アジェンダ ■ 4.1 Vision Transformer 概要 ■ 4.2.1 パッチ埋め込み Patch embedding ■ 4.2.2 位置埋め込み Positional embedding ■ 4.2.3 層正規化 Layer normalization ■ 4.2.4 自己注意機構 Self-attention ■ 4.2.5 順伝播層 ■ 4.2.6 スキップ接続 ■ 4.2.7 ViTにおける主要演算まとめ 31
4.2.6 スキップ接続 スキップ接続による残差学習によって学習を効率化・安定化させる スキップ接続:ある層の入力をその層の出力に加算する CNNで広く利用されているが、ViTでも採用されている。 ● マルチヘッド機構の出力 ● マルチヘッド機構の出力から順伝播層への出力 32
4.2.7 ViTにおける主要演算のまとめ 画像分類を行う場合は最終層のクラストークンh_CLS^(L) を用いる アルゴリズム 33
references [1] A. Dosovitskiy, L. Beyer, A. Kolesnikov, D. Weissenborn, X. Zhai, T. Unterthiner, M. Dehghani, M. Minderer, G. Heigold, S. Gelly, J. Uszkoreit, and N. Houlsby, “An image is worth 16x16 words: Transformers for image recognition at scale,” in Proc. Int. Conf. Learn. Represent. (ICLR), 2021. [2] M. Geva, R. Schuster, J. Berant, and O. Levy, “Transformer feed-forward layers are key-value memories,” in Proc. EMNLP, 2021, pp. 5484–5495. 菅沼雅徳『深層学習による機械学習の基礎』オーム社、2024年、pp.106-126. 34
簡易実装コードと疑問だったこと https://github.com/Kambara-Michiru/vit/blob/main/README.md https://github.com/Kambara-Michiru/vit/blob/main/notebooks/01_modules.ipynb CIFAR-10(32×32 画像、patch_size=4)で、30エポック 疑問:2層のMLPで、次元拡大して特徴量を取り出し、また縮小させるという理解はあっているか? 中間層ではc=4、入力次元の4倍に拡大というのが唐突でよくわからかなかった - 大体、計算量とパフォーマンスの兼ね合いが慣例的にいい部分? 35