- Vision Transformers(ViTs)は、画像分類タスクで最高性能を達成したディープラーニングモデルのクラス
- 自然言語処理(NLP)のために設計されたトランスフォーマーアーキテクチャを画像データに適用
- このガイドは、可視化と簡単な説明を使って、これらのモデルがどのように動作するのか、データがモデルを通過する際の流れがどのように見えるのかを理解するのに役立つ
主な内容
- 画像を p x p の同一サイズのパッチに分割
- 各パッチをエンコードしたベクトルは固定サイズ d を持つ
- 残るのはサイズ n x d の配列(n は画像パッチ数、d はパッチ埋め込みサイズ)
- モデルを効果的に訓練するため、分類トークン(cls トークン)という追加ベクトルでパッチ埋め込み配列を拡張
- 位置情報がないため、ランダムに初期化された位置埋め込みベクトルを追加
- 位置埋め込みベクトルが追加された後、サイズ (n+1) x d の配列をトランスフォーマーの入力として与える
- トランスフォーマー内部
- 10.1 トランスフォーマー入力パッチ埋め込みベクトルは、複数の大きなベクトルに線形埋め込みされる:Q - クエリベクトル、K - キーベクトル、V - 値ベクトル
- 10.2 アテンションスコア A を計算するため、すべてのクエリベクトル Q とすべてのキーベクトル K を掛け合わせる
- 10.3 アテンションスコア行列 A が得られたら、すべての行に
softmax 関数を適用し、各行の合計が 1 になるようにする
- 10.4 最初のパッチ埋め込みベクトルに対する集約されたコンテキスト情報を計算するため、アテンション行列の最初の行に注目し、その要素を値ベクトル V の重みとして使う
- 10.5 次に、アテンションスコア行列のすべての行についてこのプロセスを繰り返すと、N+1 個の集約されたコンテキスト情報ベクトルが生成される(各パッチに 1 つ + 分類トークン用に 1 つ)。この段階で最初のアテンションヘッドが完了する
- 10.6 マルチヘッドアテンションを扱っているため、別の QKV マッピングを用いて 10.1 - 10.5 の全プロセスをもう一度繰り返す
- 10.7 最後のアテンションレイヤー段階。各ヘッドをまとめて積み重ね、パッチ埋め込みと同じサイズである d 次元のベクトルにマッピングする
- 10.8 前段階でアテンションレイヤーが完成し、入力とまったく同じサイズの同数の埋め込みが残る
- 10.9 トランスフォーマーは残差接続(Residual Connection)を多用するが、これは単に前のレイヤーの入力を現在のレイヤーの出力に足し合わせることを意味する
- 10.10 残差接続(加算)の結果、同じサイズのベクトルが生成される
- 10.11 この出力が非線形活性化関数を持つフィードフォワードニューラルネットワークを通過する
- 10.12 トランスフォーマー段階の後にはもう 1 つ残差接続があるが、ここでは省略。これでトランスフォーマーレイヤーが完了し、結果としてトランスフォーマーは入力と同じサイズの出力を生成する
- そして、トランスフォーマーにおける計算の全ステップ 10.1 - 10.12 を複数回(例:6 回)繰り返す
- 最後のステップは分類トークン出力を特定すること。このベクトルは Vision Transformer の最終段階で使用される
- 最終段階では、この分類出力トークンと別の全結合ニューラルネットワークを使って、入力画像の分類確率を予測する
- Vision Transformer は、予測されたクラス確率を実際のクラスラベルと比較する標準的なクロスエントロピー損失関数を用いて訓練される
- モデルは逆伝播と勾配降下法を使って訓練され、損失関数を最小化するようにモデルパラメータを更新する
1件のコメント
ご紹介いただいた記事を見て、画像とあわせて説明するのがよさそうだと思い、著者の許可を得て原文を翻訳しました: