Vision Transformer(ViT)は、自然言語処理で成功したTransformerを画像認識に持ち込んだモデルです。画像を「パッチ」に切り分けて単語のように扱うという発想の転換と、CNNとの使い分けのポイントを初心者向けに解説します。

📖 ひと言でいうと

ViTは、画像を固定サイズの小さなタイル(パッチ)に分割し、それを単語の並びのようなシーケンスとみなしてTransformerのエンコーダに入力する画像認識モデルです。例えるなら、1枚の絵をジグソーパズルのピースに切り分け、「ピースの並び」を文章のように読んで全体の意味を理解するイメージです。厳密には、各パッチをベクトルに変換し位置情報を付加したうえで、自己注意機構により画像全体の文脈を捉えます。

🖼 1枚でわかるVision Transformer

Vision Transformer — 画像を「単語の列」として読む
  • 提案 — 2020年、Google Brainの研究者ら。CNNに代わる新アプローチ
  • 仕組み — 画像をパッチに分割→ベクトル化→位置情報を付加→Transformerエンコーダ
  • 強み — 自己注意で画像全体の文脈を捉える。大規模事前学習でCNN最先端と同等以上
  • 弱み — 帰納的バイアスを持たず、小規模データでは性能が低下しやすい
  • 使い分け — データ規模・特性に応じてCNNと選択
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

Vision Transformer(ViT)は、画像認識分野において、従来の畳み込みニューラルネットワーク(CNN)に代わる新たなアプローチとして注目されているモデルである。このモデルは、自然言語処理で高い性能を示したTransformerアーキテクチャを画像認識に応用したもので、Google Brainの研究者らによって2020年に提案された。ViTの基本的な考え方は、画像を一定サイズのパッチ(小領域)に分割し、これらのパッチをシーケンスデータとして扱うことである。具体的には、画像を固定サイズのパッチに分割し、各パッチを一次元ベクトルに変換する。その後、これらのベクトルに位置情報を付加し、Transformerのエンコーダに入力する。この手法により、画像全体の文脈情報を効果的に捉えることが可能となる。ViTの特徴の一つは、大規模なデータセットで事前学習を行うことで、高い性能を発揮する点である。特に、JFT-300Mのような大規模データセットで事前学習を行い、ImageNetやCIFAR-100などのベンチマークデータセットで微調整を行うことで、従来の最先端のCNNモデルと同等、またはそれ以上の性能を示している。しかし、ViTは大規模なデータセットでの事前学習が必要であり、小規模なデータセットでは性能が低下する傾向がある。これは、CNNが持つ位置不変性や局所性といった帰納的バイアスをViTが持たないためである。そのため、データセットの規模や特性に応じて、ViTとCNNを適切に使い分けることが重要となる。

押さえるべきは、①パッチ分割してシーケンスとして扱うという発想、②大規模事前学習(JFT-300Mなど)で真価を発揮すること、③CNNの持つ帰納的バイアスがないため小規模データでは不利になること、の3点です。

🔍 しっかり理解する

画像を「文章」に変換する手順

Transformerはもともと単語の並び(シーケンス)を処理する仕組みなので、画像をそのままでは入力できません。ViTは次の手順で画像をシーケンスに変換します。

パッチ分割
画像を固定サイズの小領域に切り分ける
ベクトル化
各パッチを一次元ベクトルに変換
位置情報付加
パッチの並び順の情報を加える
Transformerエンコーダ
自己注意で全パッチ間の関係を計算し分類

位置情報の付加が必要なのは、Transformerの自己注意には「並び順」の概念が組み込まれていないためです。パッチが画像のどこにあったかを教えないと、バラバラのピースの袋詰めと同じになってしまいます。エンコーダ内の自己注意機構は、離れたパッチ同士の関係も一度に計算できるため、最初の層から画像全体を見渡した文脈の把握が可能です。これは、少しずつ視野を広げていくCNNとの大きな違いです。

帰納的バイアスとデータ量の関係

CNNには「近くのピクセル同士は関係が深い(局所性)」「同じパターンは画像のどこに現れても同じ意味を持つ」といった前提が構造そのものに組み込まれています。これを帰納的バイアスと呼び、画像に都合のよい先入観としてはたらくため、比較的少ないデータでも学習が進みます。ViTはこうした前提を持たない代わりに、データから画像の性質そのものを学ぶ必要があります。だからこそJFT-300Mのような大規模データセットでの事前学習が効き、小規模データだけではCNNに劣りやすいのです。

🅰 CNN
  • 局所性・位置不変性の帰納的バイアスあり
  • 小〜中規模データでも学習しやすい
  • 視野は層を重ねて徐々に広がる
🅱 ViT
  • 帰納的バイアスを持たない
  • 大規模事前学習で最先端CNNと同等以上
  • 自己注意で最初から画像全体の文脈を捉える

💡 具体例で考える

ViTを提案した論文のタイトルは「An Image is Worth 16x16 Words(1枚の画像は16×16の単語に値する)」で、まさに「画像のパッチ=単語」という発想を端的に表しています。たとえば224×224ピクセルの画像を16×16ピクセルのパッチに切ると196枚のパッチができ、これが「196単語の文章」としてTransformerに読まれるわけです。

実務での判断例も考えてみましょう。数千枚しか集められない製造現場の外観検査画像でゼロから学習するなら、帰納的バイアスを持つCNNの方が手堅い選択になりがちです。一方、大規模データで事前学習済みのViTを微調整して使えるなら、ViTが最有力候補になります。公式テキストの「データセットの規模や特性に応じて使い分ける」とは、こうした判断を指しています。

⚠️ よくある誤解・紛らわしい用語

💡 ポイント
  • 「ViTは畳み込みの改良版」は誤り — ViTは畳み込みに依存せず、Transformerの自己注意で画像を処理する別系統のアプローチです。
  • 「ViTは常にCNNより強い」は誤り — 大規模事前学習が前提です。小規模データでは帰納的バイアスを持たないぶん性能が低下する傾向があります。
  • Transformer(2017年・自然言語処理)との混同 — Transformer自体は機械翻訳などのために2017年に提案されたアーキテクチャで、ViT(2020年)はその画像認識への応用です。提案年と分野を区別しましょう。
  • パッチとピクセルの混同 — ViTが「単語」として扱う単位はピクセルではなく、複数ピクセルをまとめたパッチ(小領域)です。

📝 試験でのポイント

💡 ポイント
  • 「画像をパッチに分割しシーケンスデータとして扱う」という説明が出たらViTです。この一文がほぼ固有の識別子になります。
  • 「Google Brainの研究者ら」「2020年提案」「JFT-300Mで事前学習」が特定キーワードです。
  • ViTが小規模データで不利な理由として「CNNの持つ位置不変性や局所性といった帰納的バイアスを持たないため」を選ばせる出題が想定されます。理由まで含めて覚えましょう。
  • CNNとViTの特徴を入れ替えた誤答(「ViTは局所性のバイアスを持つ」など)に注意が必要です。

📚 まとめ

💡 ポイント
  • Vision Transformer(ViT)は、Google Brainの研究者らが2020年に提案した、Transformerを画像認識に応用したモデルです。
  • 画像を固定サイズのパッチに分割してベクトル化し、位置情報を付加してTransformerエンコーダに入力することで、画像全体の文脈を捉えます。
  • 大規模データセットでの事前学習によりCNNの最先端モデルと同等以上の性能を発揮しますが、帰納的バイアスを持たないため小規模データでは不利です。
  • データの規模と特性に応じたCNNとの使い分けが実務上のポイントです。