VLMの成立と現在 — 視覚エンコーダとLLMをどう繋ぐか
画像を読めるLLM=VLMは「視覚エンコーダ+投影層+LLM」の3部品でできている。CLIPが架けた橋から、投影層の3流派、解像度戦略とトークン数の綱引き、実装で詰まる制約までを1から解説。
Learning Transferable Visual Models From Natural Language Supervision
一次資料 — この記事の根拠
論文の発表 2021-02-26→この解説の公開 2026-08-135年6か月後
Learning Transferable Visual Models From Natural Language Supervision (CLIP)Alec Radford, Jong Wook Kim, Chris Hallacy ほか · 2021-02-26 · v1arXiv:2103.00020論文ページ·PDFVisual Instruction Tuning (LLaVA)arXiv:2304.08485論文ページ·PDF
BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language ModelsarXiv:2301.12597論文ページ·PDF
Flamingo: a Visual Language Model for Few-Shot LearningarXiv:2204.14198論文ページ·PDF
原文の要旨(Abstract)を読む
State-of-the-art computer vision systems are trained to predict a fixed set of predetermined object categories. This restricted form of supervision limits their generality and usability since additional labeled data is needed to specify any other visual concept. Learning directly from raw text about images is a promising alternative which leverages a much broader source of supervision. We demonstrate that the simple pre-training task of predicting which caption goes with which image is an efficient and scalable way to learn SOTA image representations from scratch on a dataset of 400 million (image, text) pairs collected from the internet. After pre-training, natural language is used to reference learned visual concepts (or describe new ones) enabling zero-shot transfer of the model to downstream tasks. We study the performance of this approach by benchmarking on over 30 different existing computer vision datasets, spanning tasks such as OCR, action recognition in videos, geo-localization, and many types of fine-grained object classification. The model transfers non-trivially to most tasks and is often competitive with a fully supervised baseline without the need for any dataset specific training. For instance, we match the accuracy of the original ResNet-50 on ImageNet zero-shot without needing to use any of the 1.28 million training examples it was trained on. We release our code and pre-trained model weights at https://github.com/OpenAI/CLIP.
画像を「読める」言語モデルは、どう作られたか
ChatGPTに写真を渡すと中身を説明してくれます。しかしLLM本体は、テキストのトークン列しか処理できない機械です。画像対応は、LLMをゼロから作り直したのではなく、目の役割をする部品を外付けし、その出力をLLMが読める形式に変換して差し込むことで実現されました。この一式を VLM(Vision-Language Model、視覚言語モデル)と呼びます。
この記事では、VLMがどんな部品でできているか、部品同士を繋ぐ「投影層」が何をしているか、そして現在の主戦場である「解像度戦略」までを、前提知識なしで解説します。
比喩: 海外特派員と通訳
VLMは、通訳付きの報道番組に似ています。登場人物は3人です。
- 視覚エンコーダは海外特派員。現場(画像)を見て、詳細なメモ(ベクトル列)を作る。ただしメモは特派員の母語=「視覚の言葉」で書かれている
- 投影層(プロジェクタ)は通訳。特派員のメモを、キャスターが読める言葉に翻訳する
- LLMはキャスター。翻訳されたメモと視聴者からの質問(テキスト)を併せて読み、番組として喋る
重要なのは、キャスター(LLM)は現場を一度も見ていないことです。見たのは特派員だけで、キャスターに届くのは翻訳済みのメモだけ。VLMの品質は「特派員の観察力 × 通訳の精度 × キャスターの語彙力」の掛け算で決まります。
直感: 画像を「外国語の単語列」に変える
LLMにとっての入力とは、埋め込みベクトルの列です。テキストなら1トークンが1本のベクトルになります。ならば、画像もベクトルの列に変換してしまえば、LLMはそれをテキストと区別せずに読めるはず — これがほぼすべての現代VLMを貫く基本アイデアです。
手順はこうです。
- 画像を14×14ピクセルなどの小さなパッチに切る(Vision Transformerと同じ)
- 視覚エンコーダが、各パッチを周囲の文脈込みのベクトルにする
- 投影層が、そのベクトルをLLMの埋め込み次元に変換する
- できたベクトル列を、テキストトークンの列にそのまま挟み込む
LLMから見ると、画像は「見たことのない外国語の単語が数百個並んだ文」です。学習を通じて、LLMはこの"外国語"の読み方を覚えていきます。
成立の起点: CLIPが視覚と言語に橋を架けた
外付けの目として長らく標準だったのが、2021年に発表されたCLIPの画像エンコーダです。CLIPは「画像とその説明文のペア」を大量に集め、正しいペアの埋め込み同士は近く、間違ったペア同士は遠くなるように、画像エンコーダとテキストエンコーダを同時に訓練しました(対照学習)。
「近さ」は余弦類似度で測ります。
は画像 の埋め込みベクトル、 はテキスト の埋め込みベクトル、分子の は内積、分母の はベクトルの長さです。つまり式(1)は「2本のベクトルのなす角がどれだけ小さいか」を測っているだけ — 画像と文が同じ方向を向いているほど値が1に近づきます。
この訓練の副産物として、CLIPの画像エンコーダは「言語と対応づけやすい形で画像を要約する」能力を獲得しました。だからこそ後続のVLMは、このエンコーダを凍結したまま借りてくるだけで済んだのです。
コメント
コメントにはログインが必要です