チャプター 15 · マルチモーダル · 8 min
モデルが画像を読むとき
パッチ埋め込み、ViT、CLIP。テキストTransformerが画像をトークンのグリッドとして扱うことでマルチモーダルになる方法。
モデルは実際には「見ていない」
GPT-4oやClaudeに写真を送ると、それが何を表しているか教えてくれる。しかし、モデルの中に「目」はない。視覚システムも、物体検出器もない。モデルは画像を「見ている」のではなく——ベクトルの列を読んでいるのだ。
現代のマルチモーダル性のすべてのトリックはここにある:あらゆる種類のデータ(画像、音声、動画)をテキストトークンに似た表現に変換する。この変換の後、標準的なトランスフォーマーが残りを行う。
本章のスコープについて。 ここで扱うのは画像を理解するモデル(説明する、質問に答える、グラフを読む)だ。テキストから画像を生成するモデル——Stable Diffusion、DALL-E、Midjourney——はアーキテクチャが異なり、第 21 章で扱う。
ViT:画像をパッチに切り分ける
画像の参照アーキテクチャはViT(Vision Transformer、ビジョントランスフォーマー)と呼ばれ、Googleが2020年に提案した。
アイデアは驚くほどシンプルだ:画像を固定サイズの小さな正方形(パッチ)——デフォルトでは16×16ピクセル——に切り分ける。各パッチはベクトルに平坦化され、トランスフォーマーの埋め込み空間に投影される。
224×224ピクセルの画像を16×16のパッチに切り分けると、196個のパッチが生まれる——196トークン。これらのトークンはテキストトークンとまったく同じようにトランスフォーマーに送られる。アテンションがそれらを処理し、関連付け、関連する特徴を抽出する。
画像内の各パッチの位置は、テキストトークンとまったく同じように位置埋め込みを通じてエンコードされる。
パッチを探索してみよう
画像は正方形のパッチに分割され、各パッチは線形射影で 1 つのトークンになる。Transformer は入力がテキストか画像格子かを区別しない——同じやり方でシーケンスを処理する。
スライダーを動かすと、トレードオフがすぐに見えてくる。パッチを小さくすれば画像の解像感は上がるが、トークン数は爆発する——そしてアテンションはO(n²)(第 04 章)なので、パッチの一辺を半分にするとトークン数は4倍、コストは16倍になる。これこそが、どの視覚モデルも突きつけられている選択だ。グラフを読める程度には多く、推論を破綻させない程度には少なく。
特別な[CLS]トークン
初期のViTでは、特別な [CLS] トークンが列の先頭に追加される。アテンションがすべてのパッチ間で情報を循環させた後、[CLS] ベクトルが画像のグローバル表現として使用される。
「これは何か?」という問いに答えるための分類ヘッドに送られるのは、このベクトルだ。
現在のマルチモーダルモデル——GPT-4V、Claude 3、Geminiの世代が2023〜2024年に道を開き、今日では主要なモデルのすべてがこれをこなす——は別のやり方をとる:パッチトークンをテキストトークンと、ただ一つの列に連結するのだ。そこから先は特別なことは何もいらない。いつも通りのセルフアテンションが、各単語に画像の各断片を見せ、その逆もまた同じようにする。このアプローチがこれほど経済的なのはそのためだ——専用の機構は一切なく、トランスフォーマーをそのまま再利用している。
一方で、画像を別の列に置いたまま、テキストの側からクロスアテンションで参照しに行く変種もある(Flamingo や Llama 3.2 Vision の選択だ)。よりモジュラーだが、単純さでは劣る。
CLIP:画像とテキストを整合させる
同じトランスフォーマーで画像とテキストを混在させる前に、画像の埋め込みとテキストの埋め込みが同じベクトル空間に存在しなければならない。
これがCLIP(OpenAI、2021年)が解決した問題だ。CLIPは2つのエンコーダーを並行して訓練する——一方は画像用、他方はテキスト用——単一の目標を持って:画像とそのキャプションの表現を近づける。
何億もの(画像、テキスト)ペアで訓練した後、CLIPは「猫の写真」と実際の猫の写真が近いベクトルを持つ空間を生み出す。この特性がLLMをコンテキストに注入された画像を「理解」できるようにする。
ビジョン言語モデルのアーキテクチャ
現在のマルチモーダルLLMは一般的に次の要素で構成される:
- 視覚エンコーダー(多くの場合、事前訓練済みViT):画像トークンを生成する。
- プロジェクター(小さなMLP):画像トークンをLLMの埋め込み空間にマッピングする。
- LLM:混合された列(画像トークン+テキストトークン)を受け取り、応答を生成する。
この「プロジェクター」は、テキストLLMをマルチモーダルに適応させる際に訓練される唯一の部分であることが多い——残りは凍結されたままだ。
モデルが実際に見ているもの
モデルが深い「視覚的理解」を持っていると想像したくなる。実際に何が起きているかを見てみよう:
各16×16パッチは、まず平らに並べられる:16 × 16 × 3色チャンネル = 768個の値が、一本のリストになる。このリストが次に学習された線形射影——モデルの他の部分と一緒に訓練される行列——を通り、埋め込みベクトル(ViT-Baseなら768次元)に変換される。つまりピクセルの平均ではない。何も潰されておらず、パッチ内部の配置はベクトルの中に保たれている。ただし表現は依然として非常にローカルだ——このベクトルは、画像の残りの部分で何が起きているかを何も知らない。
すべてのベクトル間のアテンションが空間的な関係を再構築し、エッジを検出し、形を認識する。モデルには「円」や「顔」の組み込みた概念はない——それらを統計的に発見する。
だから、視覚LLMは人間にとって単純なタスク(物体を数える、左右を区別する)では驚くべき結果を示し、高レベルなタスク(グラフを解釈する、処方箋を読む)では驚くべき能力を示すことがある。
オーディオはどうか?
同じ原理——あるモダリティをトークン列に変換すること——は声にも当てはまる。OpenAIのモデルWhisper(2022年)は、音声→テキストの書き起こしにおいてオープンソースの参照であり続けている——ネイティブにマルチモーダルなモデルはすでにこれを上回っているが、いずれもクローズドだ。そのアーキテクチャはエンコーダー・デコーダー型のトランスフォーマーで、翻訳モデルとまったく同じだ。
トリックはこうだ:音声信号をメルスペクトログラム——縦軸が周波数、横軸が時間の2D画像——に変換する。このスペクトログラムの小さな各正方形が入力トークンになる、ちょうどViTのパッチが画像に対してそうであるように。Whisperはそれから出力としてテキストトークンを生成する。
音声生成(text-to-speech、TTS)では原理が逆転する:テキストから音声トークンを生成する。ElevenLabs、OpenAI TTS、Suno(音楽用)はすべて、次の音声トークンを予測するように訓練されたトランスフォーマーを使っている。身近な人のクローン音声とは、要は数分の録音をトークン化して条件付けに使ったものだ。
飛躍はネイティブにマルチモーダルな音声モデルから来た。2024年のGPT-4o realtimeとGemini Liveがその先陣を切った。これらのモデルはもはや内部でテキスト ↔ 音声の往復をしない。テキストトークンと音声トークンが混ざった空間で直接推論する。だからレイテンシが低く(〜300 ms)、プロソディが自然になる——モデルは話しながら微笑むことができる、なぜなら音声ドメインから一度も離れていないからだ。
この区別は重要だ。というのも、音声アシスタントの多くはこれに当てはまらないからだ。たとえばClaudeの音声モードは、3つの独立した部品を連ねている:書き起こし、次にテキストモデル、そして音声合成。とてもうまく動くが、モデルがあなたの声そのものを知覚することはない。声から作られたテキストだけを受け取っている。
視覚と同様に、その下のアーキテクチャは依然としてトランスフォーマーだ。違いはトークンのモダリティだけにある。
トークン:普遍的な通貨
マルチモーダル性の真の教訓は、トークンが普遍的な抽象化であるということだ。
テキスト → トークン。 画像 → トークン(パッチ)。 音声 → トークン(スペクトログラムのスライス)。 分子 → トークン(原子)。
あるモダリティを密なベクトルの列に変換できれば、トランスフォーマーはそれを処理できる。だからこそ、NLPに革命をもたらした同じアーキテクチャが今、視覚、音声、生物学、物理学に革命をもたらしつつある。
トランスフォーマーはトークンエンジンだ。研究者たちは世界をトークン化する新しい方法を発明し続けている。
そして、そのぶん厄介になっていく問いがある。ひとつの同じモデルがテキストを読み、写真を説明し、声を書き起こし、コードを書く。では何をもって、それが別のモデルより優れていると決めるのか。点数が要る——そして点数はどれも、必ず何かを削ぎ落とす。次の章では、ベンチマークが実際に測っているもの、そして何よりも、そこから必然的にこぼれ落ちるものを見ていく。
更新日