Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは?

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


Googleの機械学習モデル「Transformer」は、データを時系列に処理しなくても、自然言語などのデータを翻訳やテキスト要約することが可能で、ChatGPTなどの自然な会話が可能なチャットAIのベースとなっています。また、Transformerの手法を画像分野に応用したモデルが「Vision Transformer」です。ソフトウェアエンジニアのデニス・タープ氏が、「Vision Transformer」のコンポーネントがどのように機能し、データはどのような流れをたどるのか、ビジュアル化して解説しています
A Visual Guide to Vision Transformers | MDTURP
https://blog.mdturp.ch/posts/2024-04-05-visual_guide_to_vision_transformer.html

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


0:はじめに
前提として、Transformerの仕組みと同様、Vision Transformerも教師ありトレーニングがなされています。つまり、モデルが画像とそれに対応するラベルのデータセットでトレーニングされているというわけです。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


1:1つのデータに焦点を当てる
「パッチサイズ1」と呼ばれる単一のデータをピックアップします。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


2:画像の分割
Vision Transformerで扱える画像にするために、画像を等しいサイズのパッチに分割します。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


3:画像パッチのフラット化
パッチを「p'= p²*c」のベクトルに変換します。なお、ここでのpはパッチのサイズ、cは分割したパッチ数です。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


4:パッチ埋め込みベクトルの作成
(PDFファイル)線形変換を利用して、ベクトルに変換した画像パッチをさらにパッチ埋め込みベクトルに変換します。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


5:全パッチへの適用
全パッチをパッチ埋め込みベクトルに変換します。この結果、n×dで表される配列が出来上がりました。なお、nは画像パッチの数、dはパッチ埋め込みベクトルのサイズです。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


6:分類トークンの追加
モデルを効果的にトレーニングするために、分類トークン(clsトークン)と呼ばれるベクトルを追加します。このベクトルはネットワークの学習可能なパラメーターで、ランダムに初期化されるとのこと。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


7:位置埋め込みベクトルの追加
これまでの手順では、ベクトルに位置情報が関連付けられていません。そこで、学習可能でランダムに初期化された「位置埋め込みベクトル」をclsトークンを含めた全てのベクトルに追加します。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


8:トランス入力
位置埋め込みベクトルが追加されると、サイズ(n+1) ×dの配列が残ることになり、これは変圧器への入力に対応します。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


9:3種のベクトルへの振り分け
サイズ(n+1) ×dの配列をそれぞれQに該当する「クエリベクトル」、Kに該当する「キーベクトル」、Vに該当する「値ベクトル」に振り分けます。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


10:アテンションスコアの計算
注意スコアを計算するために、全てのクエリベクトルとキーベクトルを乗算します。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


11:アテンションスコアマトリックス
計算によってアテンション行列が得られたので、全ての行の合計が1になるように「Softmax」関数を全ての行に適用します。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


12:集約されたコンテキスト情報の計算
行列の最初の行に注目し、パッチ埋め込みベクトルの集約されたコンテキスト情報を計算します。その後、全体を値ベクトルの重みとして使用することで、最初のパッチ埋め込みベクトルの集約されたコンテキスト情報ベクトルが得られます。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


13:全ての行への適用
アテンション行列全体にこの計算を適用します。この結果、N+1個の集約されたコンテキスト情報ベクトルを取得することになります。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


14:プロセスの繰り返し
ここまでのプロセスを、ヘッド数に応じて何度も繰り返します。この結果、複数の集約されたコンテキスト情報ベクトルが出力されるというわけです。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


15:サイズdのベクトルへのマッピング
複数のヘッドを統合し、パッチ埋め込みベクトルと同じサイズdのベクトルにマッピングします。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


16:アテンションレイヤーの完成
ベクトルへのマッピングによって、入力に使った埋め込みベクトルとまったく同じサイズで同量の埋め込みが出来上がりました。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


17:残留接続の適用
位置埋め込みベクトルを追加した層の入力をアテンションレイヤーの出力に追加します。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


18:残留接続を計算
入力と出力をそれぞれ加算します。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


19:フィードフォワードネットワーク
ここまでに生まれた出力を、非線形活性化関数を備えたフィードフォワードネットワークを使ってフィードします。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


20:最終結果
複数の処理を実施することで、入力と同じサイズの出力が生成されました。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


21:処理の繰り返し
ここまでのプロセスを複数回繰り返します。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


22:分類トークン出力の識別
Vision Transformerでの最後のステップとして、分類トークンの出力を特定します。

Googleが開発した画像分類タスクが可能な機械学習モデル「Vision Transformers」の仕組みとは? - 画像


23:分類確率の予測
分類トークンの出力と完全に接続された別のニューラルネットワークを使用して、元となった画像の分類確率を予測します。
24:Vision Transformerのトレーニング
交差エントロピー誤差を使用してVision Transformerをトレーニングします。

ジャンルで探す