体系 › VLM・マルチモーダル
·無料·論文·10分で読めます

論文解説: ViT — 画像を単語のように扱う

ViT原論文(Dosovitskiy et al., 2020/2021)を本文だけを根拠に読む。16×16のパッチを単語として扱うという一手、位置埋め込みのアブレーション、CNNの帰納バイアスを捨てた代償、そして「大規模データでCNNを超える」という条件付きの主張の中身。

対象imageタスクclassification

An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

一次資料 — この記事の根拠

論文の発表 2020-10-22→この解説の公開 2026-08-065年9か月後

An Image is Worth 16x16 Words: Transformers for Image Recognition at ScaleAlexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov ほか · 2020-10-22 · v2arXiv:2010.11929論文ページ·PDF
原文の要旨(Abstract)を読む

While the Transformer architecture has become the de-facto standard for natural language processing tasks, its applications to computer vision remain limited. In vision, attention is either applied in conjunction with convolutional networks, or used to replace certain components of convolutional networks while keeping their overall structure in place. We show that this reliance on CNNs is not necessary and a pure transformer applied directly to sequences of image patches can perform very well on image classification tasks. When pre-trained on large amounts of data and transferred to multiple mid-sized or small image recognition benchmarks (ImageNet, CIFAR-100, VTAB, etc.), Vision Transformer (ViT) attains excellent results compared to state-of-the-art convolutional networks while requiring substantially fewer computational resources to train.


画素をそのまま並べると破綻する

自己注意は系列の要素どうしを総当たりで比べます。ならば画像も画素の列にすればよさそうですが、論文は関連研究の冒頭でこれを否定します。素朴に適用すると各画素が他の全画素に注意することになり、画素数に対して二次のコストがかかるためスケールしない。だから当時の研究は局所近傍だけ、疎な近似、軸ごと、といった特殊な注意パターンを設計しており、それらは「アクセラレータ上で効率的に実装するには複雑な工学を要する」(§2)。ここが出発点です。

FIG 1総当たりの計算量は要素数の2乗で伸びる。224×224をそのまま画素の列にすると5万要素で、桁が違う

パッチに切る、という一手

ViTの操作は単純です。画像 x∈RH×W×C\mathbf{x}\in\mathbb{R}^{H\times W\times C} を P×PP\times P の固定サイズのパッチへ切り、平坦化して学習可能な線形射影で DD 次元に落とす。パッチ数は N=HW/P2N=HW/P^{2} で、これがそのままTransformerの実効系列長になります(§3.1)。

z0=[xclass; xp1E; xp2E;⋯ ; xpNE]+Epos\mathbf{z}_{0}=[\mathbf{x}_{\text{class}};\,\mathbf{x}^{1}_{p}\mathbf{E};\,\mathbf{x}^{2}_{p}\mathbf{E};\cdots;\,\mathbf{x}^{N}_{p}\mathbf{E}]+\mathbf{E}_{pos}
(1)

xpiE\mathbf{x}^{i}_{p}\mathbf{E} が ii 番目のパッチの埋め込み、xclass\mathbf{x}_{\text{class}} はBERTの [class] トークンに倣って先頭に足す学習可能なベクトル、Epos\mathbf{E}_{pos} が位置埋め込み。あとは標準のTransformerエンコーダに通し、最終層の先頭トークンの状態を画像表現とします(§3.1)。

この式は要するに、パッチを一列に並べ、どのパッチにも属さない「画像全体の判定を溜めるための席」を先頭にひとつ足し、それぞれの席に「元の画像のどこから来たか」を記したベクトルを足し込む、ということです。z0\mathbf{z}_{0} はその一列そのもので、エンコーダはこれを入力として受け取ります。

つまり「16×16の画素ブロック1個=単語1個」。タイトルはこの読み替えの宣言です。元のTransformerにできるだけ忠実に保つ意図は明示されていて、利点はNLP側のスケーラブルな実装をほぼそのまま流用できること(§3)。ViT-L/16 はLargeをパッチ16で使う意味で、系列長はパッチサイズの2乗に反比例するため、小さいパッチほど計算は高くつきます(§4.1)。

位置埋め込みは、ほとんど何でもよかった

位置埋め込みは学習可能な1次元のものを使います。2次元を意識した高度な埋め込みから有意な向上が観測されなかったから、というのが理由です(§3.1)。付録D.4のアブレーションは端的で、ImageNet 5-shot linear の値は位置埋め込み無し 0.61382、1次元 0.64206、2次元 0.64001、相対位置 0.64032。「有る/無い」の差は大きいが「どう符号化するか」の差はほぼ無い(表8)。入力が画素単位ではなくパッチ単位で空間解像度が 14×1414\times14 程度しかないため、どの方式でも同じくらい簡単に学べるのだろう、というのが論文の推測です。

そして §4.5 の可視化では、学習後の位置埋め込みは近いパッチほど似た値を持ち、行と列の構造が現れます。2次元の位相を勝手に学んでいた——これが手作りの2次元埋め込みが効かない理由の説明になる、と論文は書きます。位置の与え方はTransformerの位置エンコーディングも併せてどうぞ。

捨てたもの: 帰納バイアス

CNNでは局所性・2次元の近傍構造・平行移動同変性がモデル全体の各層に焼き込まれています。ViTではMLP層だけが局所的で平行移動同変であり、自己注意層は大域的。2次元の近傍構造が使われるのは画像をパッチに切る最初の一手と、解像度を変えたときの位置埋め込みの調整だけで、それ以外の空間関係はすべてゼロから学ぶ必要があります(§3.1「Inductive bias」)。

帰結は精度に出ます。強い正則化なしに中規模データ(ImageNet)で学習すると、同規模のResNetより数ポイント低い精度に留まる。論文はこれを「予期しうる」結果と呼びます(§1)。

代償はデータ量で払う

§4.3 は2系統の実験でこれを測ります。第一に事前学習データをImageNet(1.3M枚)→ImageNet-21k(14M枚)→JFT-300M(303M枚)と増やす。表5が明快で、ImageNetだけで事前学習するとViT-L/16は76.53でViT-B/16の77.91に負ける。ImageNet-21kでは85.15対83.97と逆転し、JFT-300Mでは87.12対84.15とさらに開く。大きいモデルは大きいデータでしか元が取れない。

第二に、JFTの9M/30M/90M/全量の部分集合を正則化なし・同一ハイパーパラメータで学習する。結果は「ViTは同程度の計算コストのResNetより小さいデータで過学習する」。畳み込みの帰納バイアスは小さいデータでは有用だが、大きいデータではパターンを直接学ぶだけで十分であり、むしろ有益ですらある——これが論文の結論です。

FIG 2容量を上げるほど訓練誤差は下がり続けるが、データが足りないとテスト誤差は離れる。ImageNet単独の事前学習でLargeがBaseに負けた構図はこの形

「CNNを超える」は条件付きの主張

表2が主結果です。JFT-300Mで事前学習したViT-H/14はImageNet 88.55、ImageNet-ReaL 90.72、CIFAR-100 94.55、VTAB(19タスク)77.63。BiT-L(ResNet152x4)は87.54/90.54/93.51/76.29、Noisy StudentのImageNetは88.4(§4.2)。差そのものより効いているのは事前学習コストで、TPUv3コア日数はViT-H/14が2.5k、ViT-L/16が0.68k、BiT-Lは9.9k、Noisy Studentは12.3kです。

ただし論文自身が釘を刺します。事前学習効率はアーキテクチャだけでなく学習スケジュール・最適化手法・weight decayにも左右される(§4.2)。統制した比較は §4.4 で、JFT-300Mから転移させるとViTは同じ性能に約2〜4倍少ない計算量で到達。ハイブリッド(ResNetの特徴マップをViTに入れる)は小さい予算ではViTをわずかに上回るが、大きくなると差が消えます。

中で何が起きているか

§4.5 は「注意距離」——注意重みで加重した画素間の平均距離で、CNNの受容野に相当する量——を測っています。最下層の時点で画像の大部分に注意を向けるヘッドが既に存在する。ただし低層には注意距離の小さいヘッドもあり、この局所的な注意はハイブリッドでは目立たない。CNNの初期の畳み込み層と似た働きかもしれない、と論文は推測します(付録D.7)。注意の仕組み自体は自己注意を1から実装するへ。

限界と未検証点

論文自身が述べているもの:

※本記事執筆時点(2026年)の補足(原論文の主張ではなく筆者の注記): 比較対象は2020〜2021年時点のBiTやNoisy Studentであり、数値はすべて本論文の報告値です。後続の学習レシピや蒸留を用いた派生の結果は含めていません。

現場ではこう使う

画像認識のMLエンジニアがViTに触るのは、外観検査や医療画像などで公開済みの事前学習重みを自分のデータに微調整する場面がほとんどです。論文の主張が「大規模事前学習があってこそ」である以上、それが正しい使い方でもあります。

触るパラメータは概ね固定です。 パッチサイズ(/16 か /32 か)、入力解像度、位置埋め込みの補間。論文は事前学習より高い解像度での微調整が有益だとし、パッチサイズは変えず系列長を伸ばし、事前学習済み位置埋め込みを元画像上の位置に応じて2次元補間する手順を明記しています(§3.2)。微調整はSGD+モーメンタム0.9、バッチ512、weight decayなし、勾配クリップ1.0、解像度384(表4)。

落とし穴は2つ。 解像度を変えたとき、パッチ数が変われば事前学習済みの位置埋め込みはそのままでは意味を持たず、補間を忘れると精度だけが静かに落ちます。もうひとつはデータ量の見積もり。数万枚しかない状況でBaseの代わりにLargeを選ぶと、表5と同じ負け方をします。「大きいモデルほど強い」は事前学習データ側の話です。

面接や設計レビューで問われる問いは概ね次の形です。「ViTはなぜ大量のデータを要求するのか」——局所性と平行移動同変性という帰納バイアスを捨て、空間関係をゼロから学ぶ設計だから(§3.1)。「パッチサイズを16から8にすると計算量はどうなるか」——系列長は2乗に反比例して4倍になり(§4.1)、総当たりの注意はその2乗で効くので注意部分は約16倍(後半は§2の記述から導いた筆者の計算)。CNN側の基礎は画像分類を1から理解するにあります。

まとめ

原論文: Dosovitskiy et al., "An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale" (arXiv:2010.11929, 2020 / v2 2021)

参考文献

  1. Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn et al.. (2020-10-22) An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale. arXiv:2010.11929論文ページ·PDF

本記事は上記論文の本文にもとづいて執筆しています。数値・主張は原典を優先してください。

運営: TechAthletes · 編集方針 · 出典の付け方 · 訂正の記録

コメント

コメントにはログインが必要です