ビジョントランスフォーマーVision Transformer
写真を断片に切って文のように扱う構造
- ビジョントランスフォーマーは写真を同じ大きさの断片に切り、文の単語のように一列に並べて扱う構造です。
- 断片ごとに元はどこにあったかを示す印を付けます。これがないと位置の情報が消えます。
- 近くから走査して上がっていく方式と違い、最初の段階から遠く離れた断片どうしも見比べます。
- 写真に対してあらかじめ組み込まれた習慣がないので、資料がとても多くないと本領を発揮しません。
- 断片の数が増えると見比べる組み合わせがずっと速く増え、計算が重くなります。
目次
1たとえで理解する
港に届いた荷物はまるごと運びません。同じ規格の箱に分けて詰め、箱ごとに番号を付けます。そのときから管制室は荷物そのものではなく、番号が書かれた箱の一覧を見ながら仕事をします。
ビジョントランスフォーマーも写真をまるごとは見ません。写真を同じ大きさの四角い断片に切って一列に並べ、断片ごとに元はどの場所から来たのかを教える番号を付けます。
一覧として扱うと距離というものが消えます。埠頭のこちら端の箱とあちら端の箱も一覧の上ではただの二行にすぎず、管制室は両方をすぐ並べて見比べられます。ヤードを横切って歩く必要はありません。
2くわしく
写真を同じ規格の断片に切ります
最初の段階は切ることです。写真を縦横十数ピクセルの正方形に隙間なく細かく分けます。大きな写真なら断片は数百個ほど出ます。断片どうしは重ならず隙間もないので、全部集めれば元の写真がそのまま埋まります。
断片の一つ一つは小さな色の点の集まりです。この集まりを一つの数字の列に押し込みます。この過程を経ると、写真一枚が数字の列数百個に変わります。
ここからが肝心です。数字の列数百個は、文章を断片に切り分けた結果と見た目がそっくりです。だから文章を扱うために作られた構造をほとんど手を加えずそのまま使えます。ビジョントランスフォーマーという名前が付いた理由がここにあります。
番号を付けないと位置を失います
断片を一列に並べた瞬間に問題が生まれます。列の上ではどの断片が写真の左上にあったのか、右下にあったのかが消えます。断片の順番をめちゃくちゃに入れ替えても計算結果が同じになってしまうのです。
そこで断片ごとに位置を教える数字の束を一つずつ足してやります。コンテナに付ける番号札と同じ役割です。この印が付いて初めて、上の断片と下の断片を区別して見られます。
遠くの断片どうしを直接見比べます
ここがCNN(Convolutional Neural Network、畳み込みニューラルネットワーク)と分かれるところです。CNNは小さな窓を写真の上に滑らせながらすぐ隣の画素だけをいっしょに見ます。一段階で見る範囲が狭いので、写真の反対側まで視野を広げるには層を何層も積み上げなければなりません。
ビジョントランスフォーマーは最初の段階からすべての断片がすべての断片を見比べます。左上の断片が右下の断片とどれだけ関係があるかをすぐに計算します。写真の両端に分かれて写った一つの物体を、最初から一つにまとめて見られます。
代わりにCNNがただで持っていた利点を失います。「近い点どうしは関係が深い」という事実と「物が少しずれても同じ物だ」という事実を、CNNは構造そのものがすでに知っています。ビジョントランスフォーマーはこれを全部資料から学ばなければなりません。
あらかじめ知らないことの代償
だから資料が少ないとかえってCNNより劣ります。写真が数万枚しかない資料で教えると、断片どうしの関係をきちんとつかめず揺らぎます。あらかじめ組み込まれた習慣がないというのは、自由であると同時に最初からすべて学ばなければならないということです。
反対にとても多くの写真であらかじめ幅広く学んでおくと、そのあとはCNNより良い結果を出すことが多くなります。あらかじめ組み込まれた習慣は役に立つ分だけ限界にもなるからです。そのため実際には大きな資料で先に学んだものを持ってきて、それぞれ必要な仕事に合わせて仕上げて使う方式が定着しています。
断片の数がそのまま費用です
すべての断片がすべての断片を見比べるので、断片が二倍になれば見比べる組み合わせは四倍になります。写真の解像度を上げるには断片を細かく切るか数を増やす必要がありますが、その瞬間に計算が大きく膨らみます。高い解像度が重要な仕事ではこれが大きな負担になります。
そのため後に出てきた構造は、近い断片どうしを先に見比べ、段階が上がるごとに断片をまとめて数を減らす方式を混ぜて使います。細かく始めてだんだん大きくまとめる流れは、もともとCNNがしていた方式に似ています。二つの系統が互いの長所を取り入れながら近づいてきたわけです。
3もう少し正確に
ビジョントランスフォーマーは写真を重ならない正方形のパッチに分けたあと、各パッチを一つのベクトルにし、これに位置情報を足してセルフアテンションのブロックに通す構造です。分類に使うときはパッチといっしょに要約を入れる場所を一つ余分に付けておき、最後にその場所の値だけを取り出して名札を決めます。切ることと位置の印を除けば、文章を扱うトランスフォーマーと計算の流れはほとんど同じです。
たとえがずれる点もあります。コンテナの中の荷物は開ければそのままありますが、切られた断片は数字の束に押し込まれたあと層を通るたびにずっと姿を変えるので、元の絵に戻す必要がありません。また管制室の職員は一覧を一行ずつ目で追いますが、アテンションはすべての組み合わせの関連度を一度に計算します。何より箱の番号は人が決めた規則ですが、断片に付く位置の印は学習の過程でいっしょに仕上げられていく値です。
4やってみる
5よくある誤解
ビジョントランスフォーマーがCNNを完全に置き換えたと思われがちですが、実際には資料が少なかったり計算に余裕がなかったりする場面ではCNN系統が今も有利です。
写真を断片に切ると断片どうしの関係が切れると見なされがちですが、実際には切ったあとにすべての断片を互いに見比べるので、むしろ遠くまで一度につながります。
断片を細かく切るほど無条件によいと思われがちですが、実際には断片が増えると見比べる組み合わせがずっと速く膨らみ、計算が持ちこたえられなくなります。
7ひとこと要約
つまりビジョントランスフォーマーは写真を同じ大きさの断片に切って単語のように並べたあと、すべての断片を互いに見比べる構造で、最初から遠く離れた場所まで一度につなげて見られます。
誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新2026-09-02