ViT(VisionTransformer)徹底解説:CNN不要時代到来!?大規模データで畳み込みを超克する!
こんにちは、ゆずかきです。
ここからは、「VisionTransformer(ViT)」 と呼ばれる新たなアーキテクチャについて、ガッツリとまとめていきたいと思います。
従来の画像認識といえば、「CNN(畳み込みニューラルネットワーク)」が絶対的な地位を確立していましたよね。ところが、自然言語処理(NLP)の世界を席巻している「Transformer」が、実は画像タスクでも“そのまま”通用しうるという衝撃的な報告がありました。それがGoogle Research, Brain Teamによる論文、
“An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale”
通称「Vision Transformer(ViT)」です。CNN由来の大規模学習に匹敵、あるいはそれを上回る性能を出せるにもかかわらず、「CNNのようなコンボリューション構造をゴッソリ削除して純Transformerでやりきる」という大胆な設計が特徴的。しかも、大規模データセットで事前学習(pre-training)してしまえば、ImageNetなど中型以下のデータセットに転移(fine-tuning)した際、処理コストを抑えながら非常に強力な精度を叩き出すとのこと。
ここでは、その論文を初歩から細部まで丁寧に読み解きつつ、「CNNいらないんじゃないの?」とまで言わしめるViTの要点をまとめていきます。中級者~上級者向けの内容となりますが、ぜひ最後までお付き合いください!
§本記事の構成
- はじめに: VisionTransformer(ViT)とは?
- 論文の背景: “Transformerをそのまま画像へ”という挑戦
- ViTの基本アーキテクチャ
- モデルサイズとデータサイズ: “インダクティブバイアス不要説”
- 実験結果: 大規模事前学習×ViTの威力
- CNNとの比較: どちらが優位か?
- ハイブリッド型やAxialAttentionなど周辺の話
- 注意機構の可視化や内部挙動
- 課題と今後の展望
- まとめ
さあ、順を追っていきましょう。
§はじめに: VisionTransformer(ViT)とは?
論文正式名称は、
“An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale”
(arXiv:2010.11929, ICLR2021)
著者は、Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov ら、Google Research, Brain Team の面々。自然言語処理において主流化している「Transformer」(特にBERTやGPTなど)を、できるだけそのまま画像タスクに適用することを目指した研究です。
VisionTransformer(以下、ViT)で大事なポイントは、以下のように要約できます。
- CNNを使わず“生”のTransformer構造のみで画像認識をする
- 画像をパッチ(Patch)として分割し、それをNLPにおける“単語トークン”のように扱う
- 巨大データセット上で事前学習(pre-training)し、ImageNetなどへ転移学習すると非常に高精度
- “CNN的インダクティブバイアス”(局所受容野や平行移動不変性など)を捨てても、大規模データで埋め合わせできる
要するに、「CNNに固有の仕組み(畳み込み演算)を使わなくても、画像の局所構造を学習できるのでは?」というチャレンジングな取り組みですね。
§論文の背景: “Transformerをそのまま画像へ”という挑戦
Transformerは、「Attention Is All You Need(2017年)」論文で提案されて以来、NLPを中心にものすごい勢いで拡張されてきました。BERTやGPTシリーズなど、Self-Attentionベースのモデルが、既存のRNNやCNNを凌駕する精度をあっさり出してしまったわけです。そこから、“画像でも同じことが起きないの?”という疑問が当然出てきました。
実際、過去にも「Self-AttentionをCNNに組み合わせてみる」「部分的に置き換える」などの研究はありました。ただし、本論文はさらに一歩進んで、
「Attentionしか使わない=CNN由来の局所フィルタを完全に排除」
を目標にしています。
CNNとの一番の違い
CNNでは、画像を入力にするとき、畳み込み層を順繰りに積み重ね、局所的に画像情報を捉えつつ処理を行います。一方、Transformerは、入力を単純なベクトル列と見なし、自己注意機構(Self-Attention)でベクトル同士の依存関係を学習していく仕組み。そのため、本来は「元入力に空間的構造がある」という前提が薄いんですね。
特に画像では、各ピクセル同士が2D平面状に隣接するという構造があり、CNNではそれを畳み込み演算に埋め込む形で活かしていました。ところが、ViTではその空間的構造をほぼ使わず、単に画像を細かい「パッチ(例: 16×16)」に切り刻んで、Flatten(一次元化)したパッチ列として扱います。人間的には「それ、ちゃんと画像として捉えられるの?」と疑問が浮かびますが、著者らは「大規模なデータがあれば、Transformer自身がそうした構造も含めて学習してしまう」と主張しているわけです。
§ViTの基本アーキテクチャ
論文中で提案されているViTは、ほぼTransformer Encoderのみから成る構造です。NLPのTransformerと違う点は、「パッチ分割」と「パッチ埋め込み(Patch Embedding)」だけ。これを図示すると以下のような流れになります。
- 画像を固定サイズパッチに分割
- たとえば224×224の画像を16×16のブロックに分割して、計14×14=196枚のパッチを得る。
- 各パッチをFlattenして線形変換
- 1つのパッチを1次元ベクトル(長さ=16×16×3=768)にした上で、さらに次元D(例: 768)へと射影する(線形層)。
- [class]トークン(CLSトークン)の追加
- BERTと同様、ベクトル列の先頭に「[class]」埋め込みを入れる(このCLSトークン最終出力を画像クラス化に利用)。
- 位置エンベディング(Positional Embedding)の付与
- NLPでの“単語位置”に相当する概念が必要なので、パッチのシーケンス位置に応じて別の学習済み埋め込みベクトルを加算する。
- Transformer Encoderを通す
- L層のSelf-Attention + MLPブロックに通す。出力はCLSトークンのベクトル(最終層)を取り出して分類に用いる。
これで“2D局所性”はほぼ明示的に考慮されない形となります。ただしパッチ分割という段階で「16×16単位の近傍」はそれとなくまとめられているので、完全にピクセル単位で無秩序というわけでもない。論文でも「パッチサイズを小さくするほど計算コストが増えるけれど性能が上がる」という実験結果を示しています。
パラメータ詳細とHybridモデル
ViTには、BERTで馴染み深い「Base, Large, Huge」相当の3モデルが紹介されています。(論文中表記:ViT-Base, ViT-Large, ViT-Huge)
- ViT-B: 層数=12、隠れ次元=768、ヘッド数=12で約86Mパラメータ
- ViT-L: 層数=24、隠れ次元=1024、ヘッド数=16で約307Mパラメータ
- ViT-H: 層数=32、隠れ次元=1280、ヘッド数=16で約632Mパラメータ
パッチサイズは16×16や32×32などが試され、「ViT-B/16」のように表記されています(=ViT-Base、パッチ16×16)。
なお、論文では「Hybrid」と呼ばれる亜種モデルも提案されています。これは最初の段だけCNN(ResNetなど)を用い、その特徴マップをViTへ入力するという構造(“patch embedding”部分だけCNNに任せるイメージ)。コンピュート面の都合で小型モデルには有利だったりしますが、大型モデルになるとあまり差がないという結果も示されています。
§モデルサイズとデータサイズ: “インダクティブバイアス不要説”
TransformerがCNNよりもパラメータ数が多かったり、局所性を(積極的には)仮定しない分、「正しく学習するには大量データが必要では?」という推測が立ちます。これを裏づけるように、論文実験でも「小規模なImageNet(約130万枚)で学習すると、CNNを下回る**」と報告されています。
一方、
- ImageNet-21k(約14M枚)
- JFT-300M(約300M枚)
といったさらに巨大なデータセットで事前学習すると、一気にCNNを抜き去るほどの性能に跳ね上がるのです。
たとえば、以下の比較が公表されています。
- JFT-300Mで事前学習 → ImageNetへ転移した場合
- ViT-L/16がSOTA級のResNet152x4を上回りつつ、学習リソース(TPUコア日数)は1/2以下。
- ViT-H/14ならさらに精度が伸びる。
このように、「CNNのように局所構造を前提としたモデル」よりも、単純なTransformerの方が大規模学習との相性が良い可能性が示唆されます。モデルの持つ先入観(=インダクティブバイアス)が少ないほど、データから何でも自力で学び取ってしまう、というわけですね。
§実験結果: 大規模事前学習×ViTの威力
論文では、大規模事前学習したViTをCIFAR-10/100、Oxford-IIIT Pets、Oxford Flowers-102、さらにVTAB (19タスク) など、多数のベンチマークに転移して評価しています。主な成果は以下の通り:
- ImageNetの正解率
- ViT-H/14 (JFT-300M pre-train) → 88.55%(2021年時点で最先端クラス)
- ResNet152x4の87.54%を上回りながら、学習コストはより低い。
- CIFAR-100など小規模データセット
- 大規模事前学習したViTをfine-tuningすると、SOTA近い精度(94~95%)を取得可能。
- 特にCIFAR-100は複雑度が高いが、ViT-H/14なら94.55%などResNet超えを示す。
- VTAB(19 tasks)
- 自然画像、衛星画像、医療画像、合成画像(CLEVR)など多種多様なタスク集。
- ViT-H/14は平均77.63%の精度で、既存ResNet系(76.29%)を上回る。
興味深いのは、モデルサイズが大きいほど小さな事前学習データではオーバーフィットしてしまって性能が伸び悩む点(とくにImageNetだけで学習した場合)。しかしデータサイズが増えるほど、大型のViTが猛烈に性能を伸ばしていく様子がグラフでも示されています。CNN勢はそこまで劇的には伸びず、結果的にViTが逆転優位に立つ、という構図です。
§CNNとの比較: どちらが優位か?
ここで気になるのは、「じゃあ今後の画像認識は完全にCNNからTransformerへ置き換わるの?」という疑問ですよね。論文の主張や実験を踏まえると、以下のまとめができます。
- 巨大データセットの存在が鍵
- ViTはモデルの先入観が少ないため、小データに対してはCNNに劣ることが多い。
- しかし、画像規模が数千万~数億枚クラスになってくると、ViTはCNNを上回る性能を発揮しやすい。
- 学習効率が高い(大規模化しやすい)
- 同じ精度を出すのに必要なフロップ数やTPUコア時間などが、ViTの方が軽いケースが見られる。
- 汎用的なTransformer実装をそのまま使えるので、ハードウェア最適化が進んでいる(NLPでの技術資産)。
- Hybridsは小・中規模で効果的
- 先述のハイブリッド型(CNN → ViT)は、小型モデルや限定データセットではメリットがある。
- しかし、大型モデル+大規模データになると純Transformerと大差なくなる。
結論として、「大きいモデル&大きいデータセットを扱うなら、ViTがめちゃくちゃ強い。小規模~中規模データの場合はCNNのインダクティブバイアスが効く」と言えそうです。
§ハイブリッド型やAxialAttentionなど周辺の話
論文の中では、純粋なViTモデルのほかに、Hybridモデル(CNN+Transformer)やAxial Attentionに関するトピックも軽く触れられています。
Hybridモデル
- 入力画像をResNetなどで一次特徴量に変換し、その出力をパッチ化してTransformerへ流す方式
- 小~中規模だとメリットがあるが、大きくするとあまり利点がない
Axial Attention
- 画像を「行方向のSelf-Attention」と「列方向のSelf-Attention」で処理するアイデア
- すでにAxial-ResNetなどの研究があり、ViTにも応用が試されている
- ただし実装が複雑になりがち、処理効率が下がるケースもある
結果的には「シンプルな全面Self-AttentionのViT」の方が、大規模学習においては良い効率と精度を両立できる、という印象ですね。
§注意機構の可視化や内部挙動
論文では、ViTがどんなふうに入力パッチを注視しているかを可視化した結果も示しています。以下の点が興味深いです:
- 初期Embeddingのフィルタ成分
- パッチ単位でFlatten→線形射影する重み行列は、NLPでいう「単語埋め込み」に相当する
- その重みが、まるでCNNのカーネルのように“エッジや局所パターン”を捉える基底になっている
- ポジション埋め込みが2Dを学習
- もともと1次元の“位置埋め込み”しか使っていない(BERT同様)
- しかし学習後の重みを可視化すると、「上下左右が近いパッチほど似た埋め込みベクトル」になっており、暗黙的に2次元構造を理解している形跡が見られる
- Self-Attentionでの受容野が層を追うごとに広域化
- 低層では隣接パッチ周辺を中心にAttnを張り、高層では画像全体を俯瞰する
- 結果的にCNNのように受容野が段階的に拡がる構造を、自分で学びとっている可能性が示唆される
こうした可視化は、「CNNで明示的に畳み込み構造を組み込まなくとも、Transformerはデータから空間的パターンを内在化している」という論拠の一つになっています。
§課題と今後の展望
もちろん、幾つかの課題や未解決の部分も挙げられています。
- 大規模データが必須
- 小データではCNNを下回る。業務でそこまで大規模データを用意できるケースは限られる。
- 検出・セグメンテーションなど他タスク
- 本論文は主に画像分類に絞っているが、物体検出(Object Detection)やセマンティックセグメンテーションなど、トランスフォーマーがより複雑な空間タスクにも適用できるのかは別途検証が必要。
- DETR(End-to-end Detection with Transformers)などの先行研究もあるが、CNN不要で完結できるのかはまだ議論の余地がある。
- 自己教師あり学習との組合せ
- NLPではBERTなどで「マスク言語モデル」などの自己教師あり学習が爆発的な性能向上をもたらした。
- 画像分野でも「マスクされたパッチを予測する」などの自己教師タスクが検討され、既に幾つか成果がある(本論文中でも、簡単なマスクパッチ予測の試みが軽く報告されているが、まだ精度は有監督学習に及ばず)。
- さらなるスケーリング
- 本論文では最大でも~600Mパラメータ程度(ViT-H/14)だが、NLPでは100B以上のパラメータを持つモデルが当たり前になりつつある。
- より巨大な画像トランスフォーマーの登場余地は大いにあり、性能がさらに伸びる可能性が高い。
§まとめ
改めて、VisionTransformer(ViT)が提案するアプローチは「CNN構造を完全に排除しても、画像認識において超高精度を叩き出せる」という、画期的なものです。論文で強調されているエッセンスをまとめると:
- 画像をパッチに分割→Flatten→線形射影→Position Embedding付加 → ひたすらTransformer
- CNN由来のインダクティブバイアスがなくても、大規模データを使えば空間構造を学習できる
- JFT-300Mなど数億枚クラスで事前学習→ImageNet転移のように、実際にSOTA級性能を発揮
- 同等精度を出すのに必要な学習コスト(TPUコア日数など)も、ResNet系より小さく済む場合あり
もはやNLPの世界でトランスフォーマーがとって代わったように、画像の世界でも「CNNからTransformerへ」という流れが今後本格化するかもしれません。まだ検出・セグメンテーションといったタスクには色々と工夫が要りそうですが、この論文が投じたインパクトは相当大きく、実際にDETRやSegment Anything、その他マルチモーダル系のモデルで、トランスフォーマーが急速に広まっています。
最後に言えるのは、「大規模化×Transformer」はまさに最強クラスの組み合わせになりうるということ。実アプリケーションでどれほどのデータを用意できるのか、あるいは、自己教師あり学習でデータラベリングを省けるのか、といった観点も含めて、研究の発展が楽しみですね。
ここまで読んでいただき、ありがとうございました!
🔑この記事のポイントまとめ
- VisionTransformer(ViT): 画像をパッチ分割して“単語列”化し、Transformer Encoderへ食わせる
- CNN的インダクティブバイアス(局所性・平行移動不変など)を内蔵せずとも、大規模データで補える
- JFT-300Mなど数千万~数億枚レベルの巨大データで事前学習すれば、ImageNet等への転移が強力
- ResNet系より学習コストが低減するケースもあり、NLPの実装資産を使い回せる利点がある
- 応用: 物体検出やセグメンテーション、自己教師あり学習との組合せでさらなる飛躍が期待
§参考文献(論文リンク)
- Vision Transformer: httpss://arxiv.org/abs/2010.11929
- DETR (Detection Transformers): httpss://arxiv.org/abs/2005.12872
- Segment Anything: httpss://arxiv.org/abs/2304.02643
- GitHub(ViT公式): httpss://github.com/google-research/vision_transformer
§おわりに
以上、論文「An Image is Worth 16×16 Words」の内容を、できるだけ網羅的にご紹介しました。個人的には「CNNの畳み込みなしで、ここまで圧倒的な性能に達するとは…!」という驚きが大きいですね。NLPで騒がれた「Transformer + 大規模学習」の文脈が、そのまま画像分野にも当てはまり、さらにシンプルに実装できるというのは、研究・開発の観点で非常におもしろいトピックだと思います。
もっとも、“小規模データしかない場合にはCNNに軍配が上がる”という事実は依然として存在します。現場でのデータの揃え方、自己教師あり学習の活用、トークン化の工夫など、まだまだ研究余地は膨大にあるでしょう。とはいえ、“Attention is all you need”が画像でも実現しつつある現状、今後の展開に目が離せません。
最後までお読みいただき、ありがとうございました!
ディスカッション
コメント一覧
まだ、コメントがありません