🦅

VIT解説 Part3 MLPHead

2024/03/29に公開

VIT解説シリーズのPart3です。Part1Part2

今回はMLPHeadを解説し、VITの解説をまとめます。

4. MLPHead

MLPHeadはクラス分類を行う分類機です。
アーキテクチャは以下のようになっています。
・MLPHead

単MLPHeadは、単純なLinearとLayerNormによる一層の線型結合層です。

  • Liner
    線形結合層。出力は重み付き線形和の配列
  • LayerNorm
    前回解説しています。

主な役割は、Encoderで得られたベクトル空間を特定のクラス数に整える事です。
MLPHeadには活性化関数が含まれていないため、学習の部分はEncoder部分が担っている事が分かります。

5. まとめ

以上でVITの各部品についての解説は終了です。
では、改めてVITの概要を確認しましょう。

5.1 InputLayer

InputLayerは以下の流れで処理を行います。

  1. 画像をパッチに分割 (patch split)
  2. 一次元化 (flatten)
  3. ベクトル化 (Embedding)
  4. クラストークン追加 (add Class Token)
  5. 位置埋め込み (Positional Encoding)

この処理によって画像は機械が扱えるような、意味のある二次元配列に変換されます。

5.2 Encoder

Encoderは以下の流れで処理を行います。

※Encoder Blockの処理

  1. 入力をLayerで正規化 (LayerNorm)
  2. MHSAで、各トークンと周囲トークンの類似度を特徴量として複数空間で取得 (MHSA)
  3. Skip Conecctionで線形変換の要素を追加 (+)
  4. Layerで正規化 (LayerNorm)
  5. 線形変換とGELUで必要な特徴量の取捨選択 (MLP)
  6. DropOutで過学習抑制 (MLP)

Encoderは、これを積み重ねてより深い特徴を学習します。

5.3 MLPHead

MLPHeadは以下の流れで処理を行います。

  1. 入力をLayerで正規化 (LayerNorm)
  2. 線形結合層で出力の数を分類先クラス数に合わせる (Linear)

5.4 概略

おおまかに
InputLayerで学習可能な形に変換、
Encoderで特定の画像トークンと周囲の画像トークンの類似度を学習、
MLPHeadで出力形状を整えます。

VITで注目すべきはAttention機構による特徴の抽出と、Multi-Headによる特徴空間の多様化です。これによってVITは柔軟な表現力を獲得する事ができています。


VITの解説は以上になります。
最後まで読んでいただきありがとうございました。

参考

(1)原論文 An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
(2)Vision Transformer 入門 株式会社技術評論社 2022/9/30 山本晋太郎,徳永匡臣,箕浦大晃,QIU YUE,品川政太郎

Discussion