Skip to content

필사 모드: マルチモーダルAIの学習法 — 複数の感覚を一つのモデルへ

日本語
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

はじめに: なぜマルチモーダルか

人は世界を単一の感覚で認識しません。写真を見ながら説明を読み、映像を見ながら音を聞きます。同じ概念でも画像で入る場合と文字で入る場合がありますが、頭の中では最終的に一つの意味へ統合されます。マルチモーダルAIは、この統合をモデルの中で実現しようとする試みです。

従来の深層学習モデルは一つのモダリティだけを扱いました。画像分類器は画像だけ、言語モデルはテキストだけを入力としました。しかし現実の課題はモダリティの境界を越えます。「この写真で何が起きていますか」という問いは、画像とテキストを同時に理解しないと答えられません。文書理解、動画検索、音声アシスタント、ロボティクスまで、マルチモーダルでないと解けない課題が増えています。

本記事では、複数の感覚(モダリティ)を一つのモデルにまとめる学習法を扱います。要点は、異なるモダリティを同じ意味空間へ整列(alignment)させること、そしてその表現を効果的に融合(fusion)することです。対照学習(contrastive learning)に代表されるCLIP系のアプローチから、事前学習と微調整、データの規模と品質、評価方法、そしてハルシネーションなどの限界まで順に見ていきます。

マルチモーダルの意味: 何を扱うか

まずモダリティとは何かを整理します。モダリティ(modality)は、データが入ってくる感覚チャネルや形式を指します。代表的には次のものがあります。

- **画像**: ピクセル格子。空間的構造を持ちます。

- **テキスト**: トークンの列。離散的で順序があります。

- **音声**: 時間に沿った波形またはスペクトログラム。連続的で時間軸が核心です。

- **動画**: 画像フレームの列、しばしば音声を伴います。空間と時間が結合します。

マルチモーダルモデルは二つ以上のモダリティを入力または出力として扱います。画像とテキストを同時に受けて答える視覚言語モデル(VLM)、テキストから画像を生成するモデル、音声をテキストに変えるモデルなどがすべてマルチモーダルの範疇に入ります。

異なるモダリティは統計的性質が大きく異なります。画像は連続的で高次元、局所相関が強く、テキストは離散的で長距離依存が大きいです。この異質性を扱うことがマルチモーダル学習の出発点です。

モダリティ別の表現形態(概念)

画像 : パッチグリッド -> パッチ埋め込み列

テキスト: トークン列 -> トークン埋め込み列

音声 : スペクトログラム -> フレーム埋め込み列

動画 : フレーム束 -> 時空間埋め込み列

要点: すべて最終的に「埋め込みベクトルの列」へ変換され、

共通バックボーン(Transformer など)に入る。

核心原理: モダリティを同じ空間へ整列する

マルチモーダル学習の最も根本的な発想は、異なるモダリティを一つの共有埋め込み空間(shared embedding space)へ写すことです。同じ意味を持つ画像とテキストが、その空間で近くに位置するよう学習します。

共有埋め込み空間とは

各モダリティに専用エンコーダがあります。画像エンコーダは画像をベクトルへ、テキストエンコーダは文をベクトルへ変えます。二つのエンコーダ出力が同じ次元の空間に置かれ、意味的に対応する組が互いに近くなるようにすると、モデルはモダリティを越えた比較が可能になります。

共有埋め込み空間(概念図)

画像エンコーダ ──> z_image ─┐

├─> 同じ次元 D のベクトル空間

テキストエンコーダ ──> z_text ─┘

目標: 対応する (画像, テキスト) は近く、

対応しない組は遠く。

対照学習: CLIP系の image-text 対照

この整列を学ぶ代表的手法が対照学習です。CLIP系モデルは大量の (画像, キャプション) 組を集めます。一つのバッチ内で正しい組を陽性(positive)、それ以外の全組合せを陰性(negative)とし、陽性組の類似度を上げ陰性組の類似度を下げるよう学習します。

類似度は通常、正規化済み埋め込みの内積(コサイン類似度)で計算します。損失は双方向のInfoNCE形で、画像からテキストを探す方向とテキストから画像を探す方向の両方を考慮します。

対照学習の損失(ドル記号なしで表記)

バッチサイズ N、埋め込み次元 D

画像埋め込み I in R^(N x D)、テキスト埋め込み T in R^(N x D)

各行を L2 正規化。

ロジット行列: logits = (I dot T^T) * exp(tau)

shape = N x N

対角成分(i==j)が正しい組。

画像->テキスト損失: CE(logits, labels=[0..N-1])

テキスト->画像損失: CE(logits^T, labels=[0..N-1])

最終損失 = (loss_i2t + loss_t2i) / 2

tau: 学習される温度(temperature)パラメータ(ログスケール)

CE: 交差エントロピー

対照学習の強みは、人が逐一ラベル付けしなくてよい点です。ウェブから集めた画像とその周辺テキスト(alt テキスト、キャプション)だけで弱教師あり(weakly supervised)学習が可能です。その結果、ゼロショット分類のような強い転移能力が得られます。テキストプロンプト("a photo of a cat")の埋め込みと画像埋め込みを比較するだけで分類できるからです。

整列の他の軸

対照学習だけが整列の方法ではありません。マッチングやキャプショニングといった生成型の目的(画像を見てテキストを生成)もモダリティを結びます。実際の大型モデルは対照目的と生成目的、マスク復元目的などを混ぜて使います。いずれの場合も核心の問いは同じです。「異なるモダリティの表現が同じ意味を共有するようにどう作るか」。

本論を深く: 融合方式

整列が表現を近づける作業なら、融合は複数モダリティの情報を実際に結合して一つの判断を下す作業です。融合の時点によって大きく三つに分けます。

Early fusion(早期融合)

入力段階でモダリティを一つの列にまとめ、同じバックボーンへ入れます。画像パッチ埋め込みとテキストトークン埋め込みを連結して単一のTransformerに通す方式が代表です。

Early fusion

[img_patch_1 ... img_patch_M, txt_tok_1 ... txt_tok_K]

|

単一 Transformer(全区間 self-attention)

|

統合表現 -> 出力

利点は初期からモダリティ間の相互作用が豊かなことです。欠点は入力列が長くなり計算コストが増えること、モダリティ別前処理の構造を統一する必要があることです。

Late fusion(後期融合)

各モダリティを独立エンコーダで最後まで処理した後、最後に表現を結合します(連結、平均、加重和など)。CLIPの推論段階は事実上後期融合に近いです。二つのエンコーダが独立なのでモジュール化とキャッシュに有利ですが、細かな相互作用は不足します。

Late fusion

画像 -> 画像エンコーダ -> z_image ─┐

テキスト -> テキストエンコーダ -> z_text ─┤-> 結合(concat/内積) -> 出力

Cross-attention fusion(交差注意融合)

二つのモダリティを別々にエンコードしつつ、途中に交差注意層を置いて一方のモダリティが他方を参照できるようにします。テキストデコーダが画像特徴を key/value として参照する構成が一般的です。現代VLMのアダプタ/プロジェクタ + LLMデコーダ構成も広くはこの流れに属します。

Cross-attention fusion

画像 -> ビジョンエンコーダ -> ビジョン特徴(key/value 源)

|

テキスト -> LLMデコーダ -- cross-attn --> ビジョン特徴を参照

|

出力トークン

三方式は排他的ではありません。実務モデルはビジョンエンコーダで画像を埋め込み(late 的)、プロジェクタでLLM入力空間に合わせた後、LLM内でテキストと混ぜます(early/cross 的)。

視覚言語アダプタ/プロジェクタ

現代VLMの典型構成は次のとおりです。ViT系ビジョンエンコーダが画像をパッチ特徴へ変え、アダプタ(プロジェクタ)がそれをLLMのトークン埋め込み空間へ写します。アダプタは単純なMLPの場合もあれば、learnable query で情報を圧縮するQ-Former系の場合もあります。その結果、画像が「仮想トークン」のようにLLM列へ入り、テキストとともに処理されます。

現代VLMパイプライン(概念)

画像 -> ViT ビジョンエンコーダ -> パッチ特徴 (M x D_v)

|

プロジェクタ/アダプタ(MLP または Q-Former)

|

ビジュアルトークン (M' x D_llm)

|

[ビジュアルトークン ... テキストトークン] -> LLMデコーダ -> 応答

学習パイプライン: 事前学習から微調整まで

マルチモーダルモデルの学習は通常二段階に分かれます。

1段階: 大規模事前学習

大量の弱教師ありデータ(ウェブ画像-テキスト組など)で整列と基本表現を学びます。この段階でビジョンエンコーダはしばしば凍結(freeze)するか一部だけ学習し、アダプタとLLMの一部を先に整列させます。目的はモダリティを同じ空間へ引き寄せることです。

2段階: マルチタスク/インストラクション微調整

VQA、キャプショニング、文書理解、OCRベース推論など多様な課題をインストラクション形式で集めて微調整します。この段階でビジョンエンコーダを解除(unfreeze)してより精緻に合わせることもあります。段階的に凍結/解除を制御することが安定収束の鍵です。

以下は学習ループの擬似コードです。実装そのものではなく流れを示すためのものです。

マルチモーダル対照事前学習の擬似コード(概念用)

def clip_step(images, texts, image_encoder, text_encoder, logit_scale, optimizer):

1) 各モダリティをエンコード

img_feat = image_encoder(images) # (N, D)

txt_feat = text_encoder(texts) # (N, D)

2) L2 正規化 -> コサイン類似度ベースの比較

img_feat = F.normalize(img_feat, dim=-1)

txt_feat = F.normalize(txt_feat, dim=-1)

3) 類似度ロジット(温度を適用)

scale = logit_scale.exp()

logits_per_image = scale * img_feat @ txt_feat.t() # (N, N)

logits_per_text = logits_per_image.t()

4) 対角が正解の双方向交差エントロピー

n = images.size(0)

labels = torch.arange(n, device=images.device)

loss_i2t = F.cross_entropy(logits_per_image, labels)

loss_t2i = F.cross_entropy(logits_per_text, labels)

loss = (loss_i2t + loss_t2i) / 2

5) 逆伝播

optimizer.zero_grad()

loss.backward()

optimizer.step()

return loss.item()

微調整段階の凍結/解除制御(概念用)

def configure_trainable(model, stage):

if stage == "align":

1段階: ビジョンエンコーダ凍結、アダプタ中心に学習

for p in model.vision_encoder.parameters():

p.requires_grad = False

for p in model.adapter.parameters():

p.requires_grad = True

elif stage == "instruct":

2段階: ビジョンエンコーダ一部解除 + LLM 微調整

for p in model.vision_encoder.parameters():

p.requires_grad = True

for p in model.llm.parameters():

p.requires_grad = True

return model

データ: 規模と品質

マルチモーダル性能はデータに大きく左右されます。二つの軸を見ます。

- **規模(scale)**: ウェブ規模の画像-テキスト組は多様性を提供しますがノイズが多いです。誤ったキャプション、無関係な alt テキスト、重複が一般的です。

- **品質(quality)**: フィルタリング(類似度ベースの精製)、重複除去、安全性フィルタ、キャプション再生成(re-captioning)で品質を上げます。最近はモデル生成の高品質キャプションでデータを補強する方式も一般的です。

データ側の落とし穴は分布の偏りです。特定の言語や文化圏の画像に偏ると、それ以外の領域で性能が落ちます。OCRや文書理解を狙うなら、テキストが豊富な画像を十分に含めるべきです。

データパイプライン(概念)

原データ収集 -> 重複除去 -> 類似度フィルタ(画像-テキスト整合) ->

安全性フィルタ -> キャプション再生成/補強 -> シャッフル/シャーディング -> 学習

評価: 何をどう測るか

評価は課題別に分かれます。

- **ゼロショット分類/検索**: 学習にないラベルでの分類、または画像-テキスト相互検索の精度(Recall@K)。

- **VQA**: 画像ベース質問応答の精度。

- **キャプショニング**: 生成キャプションの品質(参照ベース指標と人手評価)。

- **文書/OCR理解**: 表・チャート・文書から情報を正確に読み推論できるか。

- **ハルシネーション測定**: 画像にない物体を作り出すかを評価する専用ベンチマーク。

指標を一つだけ見ると誤解しやすいです。自動指標が良くても人が見て不自然なことがあり、逆もあります。そこで自動指標と人手評価を併用するのが標準です。

限界とハルシネーション

マルチモーダルモデルの代表的限界はハルシネーション(hallucination)です。画像にない物体に言及したり、テキストの事前知識に引かれて画像を誤解したりします。原因は複数あります。

- **言語事前分布(prior)の過度な影響**: LLMデコーダが強力で、画像根拠なしにもっともらしい答えを生成。

- **整列不足**: ビジョン特徴がLLM空間へ十分整列されないと細部を取りこぼす。

- **データノイズ**: 誤ったキャプションで学習すると誤った結びつきを学ぶ。

緩和方法としては、より強い整列学習、画像根拠を強制する学習目的、ハルシネーション評価に基づくデータ精製、推論時に画像領域を明示的に参照させるプロンプト設計などがあります。それでも完全な除去は難しく、応用では不確実性を前提とした設計が安全です。

その他の限界として、高解像度/長尺動画処理のコスト、モダリティの不均衡(テキストに比べ動画データが少ない)、評価の難しさなどがあります。

対照学習を深く覗く

対照学習はマルチモーダル整列のエンジンです。しかし実際にうまく学習させるにはいくつかの細部が決定的です。表面的には単純な損失ですが、陰性サンプルの数、温度、バッチ構成によって結果が大きく変わります。

陰性サンプルとバッチサイズ

InfoNCE損失では陰性(negative)の数はバッチサイズから生じます。一つのバッチにN個の組があれば、各陽性に対して自動的にN-1個の陰性ができます。したがってバッチが大きいほどより難しい対照問題を解くことになり、表現がより鋭くなります。これが対照学習が大きなバッチを好む理由です。

バッチサイズと陰性数(概念)

バッチ N=256 -> 陽性1個あたり陰性255個

バッチ N=4096 -> 陽性1個あたり陰性4095個

陰性が多いほど:

- 対照難易度上昇 -> 表現品質向上の傾向

- メモリ要求増加

対応: 複数装置の埋め込みを集めて(gather)陰性プールを拡張

複数GPUにまたがる埋め込みを集めて陰性プールを大きくする手法がよく使われます。各装置が自分のバッチだけを見る代わりに、全埋め込みを共有して陰性に活用すると、実質的により大きなバッチ効果を生みます。

温度パラメータの役割

温度(temperature)は類似度分布の鋭さを調整します。温度が低い(スケールが大きい)とモデルは陽性と陰性をより強く区別するよう圧迫され、高いと分布が滑らかになります。温度を学習パラメータにすると、モデルが自ら適切な鋭さを見つけます。

温度の効果(概念)

logits = (正規化埋め込み内積) * scale, scale = exp(tau)

scale 大(温度低): 分布が鋭い -> 強い対照、学習不安定の危険

scale 小(温度高): 分布が滑らか -> 弱い対照

実務: tau を学習パラメータにしつつ上限を設け暴走を防ぐ

ハードネガティブ

すべての陰性が等しく有用なわけではありません。容易に区別できる陰性(全く無関係な組)は学習信号が弱く、紛らわしい陰性(意味が近いが異なる組)は強い信号を与えます。こうしたハードネガティブ(hard negative)を意図的に含めると、微細な区別能力が向上します。ただしラベルノイズがあると、真の陽性を陰性と誤認する危険も高まります。

ワークド例: ゼロショット分類が動く仕組み

対照学習で整列したモデルがどうやってラベルなしで分類するのかを具体的に追ってみましょう。核心は分類を「画像-テキスト検索」問題へ変えることです。

ゼロショット分類の手順(概念)

1) 候補クラスごとにプロンプト生成

"a photo of a cat", "a photo of a dog", ...

2) テキストエンコーダで各プロンプトを埋め込み -> t_1, t_2, ...

3) 入力画像を埋め込み -> v

4) v と各 t_k のコサイン類似度を計算

5) 最も類似したクラスを予測

核心: 学習時にそのラベルを見たことがなくても、

テキスト空間で意味が整列しているため分類できる

この手順は検索にもそのまま適用されます。画像埋め込みとテキスト埋め込みが同じ空間にあるので、テキストで画像を探す(text-to-image)、画像でテキストを探す(image-to-text)双方向検索がともに可能です。整列の強力さはまさにこのモダリティ横断能力にあります。

生成型マルチモーダルとの接続

ここまでは理解(understanding)中心に見てきましたが、マルチモーダルのもう一つの大きな軸は生成です。テキストから画像を作る、画像を見て長い説明を書く能力です。整列と融合の原理は生成でも同じく働きます。

- **画像 -> テキスト生成(キャプショニング, VQA)**: ビジョン特徴をLLMへ注入し、LLMがそれを条件にテキストを自己回帰生成します。先に見たアダプタ+LLM構造がそのまま使われます。

- **テキスト -> 画像生成**: テキスト埋め込みを条件に画像を生成します。拡散モデルやVQベース自己回帰生成が代表的です。ここでテキスト-画像整列の品質が結果の忠実度を左右します。

理解型 vs 生成型(概念)

理解型: [画像+テキスト] -> 理解/判断 -> テキスト答

生成型(キャプショニング): [画像] -> 条件 -> テキスト自己回帰生成

生成型(T2I): [テキスト] -> 条件 -> 画像生成(拡散/VQ 自己回帰)

共通: モダリティ整列の品質が全課題の土台

二つの軸は分離したものではなく、同じ土台(整列された表現)の上に立っています。良い整列は理解と生成の両方の性能を同時に引き上げます。

学習の安定化とスケーリング

大規模マルチモーダル学習は不安定になりやすいです。異なるモダリティの損失スケールが異なり、ビジョンエンコーダとLLMの学習速度が異なり、データノイズが損失を揺らします。安定した学習のための実務的な仕掛けがあります。

- **学習率の分離**: ビジョンエンコーダ、アダプタ、LLMに異なる学習率を与えます。通常、新規初期化されたアダプタは高く、事前学習済みビジョンエンコーダは低くします。

- **ウォームアップとスケジュール**: 初期ウォームアップで大きな勾配を和らげ、コサイン減衰などで後半を安定化します。

- **勾配クリッピング**: ノイズデータによる勾配暴走を防ぎます。

- **段階的解除**: 先に見た凍結/解除スケジュールで、整列が安定した後により多くのパラメータを解放します。

モジュール別学習率の例(概念, 相対値)

アダプタ/プロジェクタ : 高(新規学習)

LLM : 中(微調整)

ビジョンエンコーダ : 低(事前学習を保存)

原則: 新規初期化された部分は速く、

すでに良い表現を持つ部分はゆっくり

スケーリングの面では、データ・モデル・計算をバランスよく増やすことが重要です。一方だけを増やすと収益が急速に減ります。データ品質が伴わなければモデルだけ増やしても整列はよくならず、逆にデータが多くても容量が不足すれば吸収できません。

多言語とOCRのための考慮

マルチモーダルモデルを多言語文書やOCRに使うには、データ構成に特別な注意が必要です。一般的なウェブ画像-キャプションデータは、テキストが豊富な画像(文書, 表, チャート, 標識)を十分に含まないことがあります。

OCR/文書理解のためのデータ補強(概念)

一般データのみ : 自然画像中心 -> 文字読みが弱い

補強後 : 文書/表/チャート/スクリーンショット/標識を追加

+ 多言語テキスト画像

-> OCR-free 文書理解能力が向上

核心: 読むべきテキストが画像内にあるサンプルの比重を確保

多言語の場合、特定の言語(特にラテン文字以外)が過小表現されると、その言語のOCRと理解が落ちます。言語別バランス、スクリプトの多様性、そして当該言語のテキストが入った画像を意図的に含めることが重要です。

実務適用シナリオ

整理した原理が実際の応用でどう組み合わさるかを、いくつかのシナリオで見ます。

- **画像キャプショニング/代替テキスト生成**: ビジョンエンコーダ + アダプタ + LLM 構成で画像を説明。ハルシネーションを減らすため画像根拠を強調する微調整が重要。

- **文書質問応答**: 高解像度/動的解像度で文書を処理し、OCR-free で表・チャートを読んで回答。データ中の文書画像の比重が決定的。

- **画像-テキスト検索**: 対照学習で整列した埋め込みをインデックス化し双方向検索。埋め込み品質が検索精度を左右。

- **マルチモーダルアシスタント**: 複数モダリティをインターリーブした対話。コンテキストコスト管理とハルシネーション緩和が核心課題。

各シナリオは結局、同じ二つの原理(整列・融合)の異なる組合せです。どのモダリティを、どれだけ整列し、どの時点で融合するかが応用の性格を決めます。

比較: 整列と融合方式の整理

| 区分 | 代表手法 | 利点 | 欠点 |

| --- | --- | --- | --- |

| 整列目的 | 対照(InfoNCE) | 弱教師あり、強いゼロショット転移 | 細かな生成には不足 |

| 整列目的 | 生成/キャプショニング | 細かな言語生成 | 整列信号が間接的 |

| 融合 | early | 豊かな相互作用 | 列が長くコスト大 |

| 融合 | late | モジュール化・キャッシュ容易 | 相互作用が弱い |

| 融合 | cross-attn | コストと相互作用の均衡 | 構造が複雑 |

おわりに

マルチモーダル学習の核心は二つに要約できます。第一に、異なるモダリティを同じ意味空間へ整列させること。第二に、その表現を課題に合わせて融合すること。対照学習は弱教師ありデータだけで強力な整列を作り出し、アダプタとLLMを結合した現代VLMはこの整列を豊かな生成能力へ拡張しました。

同時にハルシネーションとデータ偏りという宿題が残ります。規模と品質の均衡、段階的な凍結/解除、慎重な評価が、良いマルチモーダルモデルを作る実質的なレバーです。次の記事では、画像と音声を実際にどうトークンへ変え一つの列へ編むのか、トークナイゼーションと融合の具体を扱います。

参考資料

- [Attention Is All You Need (arXiv 1706.03762)](https://arxiv.org/abs/1706.03762)

- [FlashAttention (arXiv 2205.14135)](https://arxiv.org/abs/2205.14135)

- [Qwen2-VL (arXiv 2409.12191)](https://arxiv.org/abs/2409.12191)

- [arXiv cs.CV 分野](https://arxiv.org/list/cs.CV/recent)

- [arXiv cs.LG 分野](https://arxiv.org/list/cs.LG/recent)

- [Hugging Face ドキュメント](https://huggingface.co/docs)

- [PyTorch 公式ドキュメント](https://pytorch.org/docs/stable/index.html)

- [QwenLM GitHub](https://github.com/QwenLM)

- [vLLM GitHub](https://github.com/vllm-project/vllm)

현재 단락 (1/205)

人は世界を単一の感覚で認識しません。写真を見ながら説明を読み、映像を見ながら音を聞きます。同じ概念でも画像で入る場合と文字で入る場合がありますが、頭の中では最終的に一つの意味へ統合されます。マルチモー...

작성 글자: 0원문 글자: 10,609작성 단락: 0/205