視覚言語モデル(VLM)は、画像とテキストの両方から情報を共同で解釈・生成できる人工知能システムの一種であり、テキストのみに限定される大規模言語モデル(LLM)の機能を拡張するものです。これはマルチモーダル学習の一例です。
現在、広く利用されている多くの商用アプリケーションはこの機能に依存しています。OpenAI は、 GPT-4モデルの GPT-4V バリアントにコンピュータビジョン機能を導入し、ユーザーがアップロードした写真や図をChatGPTとの会話に組み込めるようにしました。これは、ChatGPT の標準機能の不可欠な部分となっています。同様の機能は、Google のGemini、Anthropic のClaude 3 Opus [ 1 ]、Microsoft の Copilot with Vision [ 2 ]にも追加されました。 これらのモデルに加えて、 LLaVA [ 3 ]、InstructBLIP [ 4 ] 、 MiniGPT-4 [ 5 ]などのいくつかのオープンソースのビジョン言語モデルが研究コミュニティによって公開されており、実験や学術研究のための小規模な代替手段を提供しています。
視覚言語モデルは、画像キャプション生成システムから発展した。こうしたシステムは、画像のみ(指示なし)を入力として受け取り、説明文を生成するように設計されていた。
ほとんどの画像キャプション生成システムはエンコーダー・デコーダーアーキテクチャを採用しており、エンコーダーが画像を特徴ベクトルに要約し、それをデコーダーに渡して関連する説明文を生成していました。初期の手法(2010年代初頭)では、手作業で作成した視覚的特徴を組み合わせて画像をエンコードし、n-gramまたはルールベースのテキストテンプレートを使用して説明文を生成していました。[ 6 ] [ 7 ]
ディープラーニングの台頭により、ニューラルネットワークが画像キャプション生成において主流となった。2015年には、畳み込みニューラルネットワーク(CNN)のバリエーションを使用して画像をエンコードし、リカレントニューラルネットワーク(RNN)を使用してキャプションを生成する手法が登場した。[ 8 ] [ 9 ] 2018年までに、トランスフォーマーネットワークが言語デコーダーの役割でRNNに取って代わった。[ 10 ] 重要なことに、ネットワークパラメータのトレーニングは、MS COCO(Common Objects in Context)などの画像とテキストのペアのデータセットに基づいていた。[ 11 ] アプリケーションの範囲も拡大され、ビジュアル質問応答(VQA)[ 12 ] 、フレーズグラウンディング[ 13 ]などが含まれるようになった。
2021年、OpenAIがリリースしたCLIP(Contrastive Language–Image Pretraining )は、その後のVLM(仮想言語モデル)の進化に向けた大きな一歩となりました。CLIPは、画像キャプション生成のような特定のタスクに特化するのではなく、幅広い下流タスクに拡張可能な汎用的な基盤モデルです。重要なのは、CLIPの各コンポーネントが4億組もの画像とテキストのペアからなる膨大なデータセットで学習され、強力なモデルが構築されたことです。また、CLIPの汎用的な構造により、計算リソースがはるかに少ないシステムでも、この強力な機能を利用できるようになりました。
2022年以降、同様の設計思想(後述)に基づいた多くのVLMアーキテクチャが提案されてきた。これらには、Google DeepMindの独自技術であるFlamingo [ 14 ]とそのオープンソース版[ 15 ]、LLaVA [ 3 ] 、 SalesforceのInstructBLIP [ 4 ] 、 MicrosoftのKosmos [ 16 ] 、 KAUSTのMiniGPT-4 [ 5 ]などが含まれる。これらはすべて、個別にトレーニングされたCLIPライクな画像エンコーダと、テキストエンコード用の市販の大規模言語モデル(LLM)を、特殊なコンポーネントを使用して組み合わせたものであった。結果として得られた統合システムは、厳選されたデータセットでトレーニングされた。
2023年のGPT-4Vのリリースは、非常に影響力のある商用アプリケーションの出現を告げるものでした。これに続いて、前述の他のシステム(GoogleのGemini、AnthropicのClaude 3 Opus [ 1 ]、MicrosoftのCopilot with Vision [ 2 ]など)がすぐに登場しました。これらのアプリケーションは、汎用的なタスクに対してはるかに強力で、通常、はるかに多くのパラメータを含み、大規模なデータセットでトレーニングされ、膨大な計算能力を必要とします。これらのアーキテクチャは公開されていません。
VLMへの入力は、視覚要素(画像と動画)とテキストで構成されます。出力は通常、対応するテキストです。視覚要素も生成する生成モデル(例:DALL-E)は、本稿の範囲外です。
以下に、アーキテクチャが既知の代表的なモデルをいくつか紹介します。設計が公開されていないGPT-4Vなどの商用VLMも、同様の概念に基づいていると考えられます。
LLaVA (Large Language and Vision Assistant) [ 3 ] 1.0 は、オープンソースの VLM の主要な概念を捉えたシンプルなモデルです。モデルへの入力は、画像とそれに付随するテキスト言語による指示です。

概念的には、この設計は市販の基盤となるLLM(Llama [ 17 ]の微調整されたバリアントであるVicuna)を中心に構築されており、画像入力をサポートするためにコンポーネントがパッチされています。
LLaVAは、Vicunaからトークナイザーとトランスフォーマーモジュール(およびそれらの重み)を借用し、それらを使用して付随するテキストを処理します。従来の(VLMではない)Vicunaアプリケーションでは、トークナイザーがテキストをトークンのストリームに変換し、それがトランスフォーマーモジュールに渡され、トランスフォーマーモジュールが応答トークンのストリームを生成します。そして、これらの応答トークンはトークナイザーを使用してテキストに変換されます。
これに加えて、LLaVAは画像入力をサポートするために2つのコンポーネントを追加します。
画像トークンはテキストトークンの先頭に追加され、LLMによって通常のテキストトークンとまったく同じように処理され、最終的な応答が生成されます。
CLIP ViT-L/14 ビジョンエンコーダに簡単なハックを施し、より効果的なエンコードベクトルを取得しました。このモジュールはビジョントランスフォーマーであるため、通常のアプリケーションでは、最後のトランスフォーマー層の出力にあるクラストークン(ビジョントランスフォーマークラスを参照)を単一のベクトル出力として使用します。しかし、LLaVA 1.0 では、前の(最後から 2 番目の)層の出力にあるグリッド(非クラス)トークンを使用して、複数のベクトル出力を生成します。グリッドトークンは、これらの画像入力における空間パッチに対応するため、より細かい粒度の情報を捉えることができます。
モジュールを単一のモデルに結合できるように、モジュールを整列させるにはトレーニングが必要でした。VLMの用語では、このステップは命令チューニング と呼ばれます。LLaVA 1.0 は、これを 2 段階で達成しました。 ステージ 1 では、投影レイヤーの予備的な整列に重点を置きました。そのモジュールの重みのみがトレーニングされ、他のモジュールの重みは固定されました。データセットは、画像キャプション ペアの CC3M [ 18 ]データセットのサブセットでした。このデータセットは小さく (595,000 ペア)、範囲が限定されており、単純な画像キャプション ペアのみが含まれていました。 ステージ 2 では、投影レイヤーと LLM の両方のより詳細なトレーニングに重点を置きました。ビジョン エンコーダは固定されたままでした。この段階では、テキストのみのLLM( GPT-4 )を利用して、画像とキャプションのペア(COCOデータセット[ 11 ]から)の単純なキャプションを精巧な会話スタイルのプロンプトに変換することで、画像とテキストのペアの豊富なトレーニングデータセット(LLaVA-Instruct-158K [19])が作成されました。
LLaVA の後継バージョンでは、LLaVA 1.0 に比べていくつかの改良が加えられました。注目すべき概念的な改良としては、LLaVA 1.5 [ 20 ]で単純な投影モジュールがより精巧なMLPに置き換えられたことが挙げられます。LLaVA-NeXT [ 21 ]では、LLaVA 1.0 の 224x224 を超える複数の画像アスペクト比のサポートが追加されました。
LLaVA 1.0より1年前に登場したFlamingo [ 14 ] ( DeepMind、2022)は、実際にはLLaVAよりも精巧な設計を採用しています。その利点としては、1つの会話で複数の画像をサポートしていることや、ビデオをサポートしていることが挙げられます。

アーキテクチャ的には、言語モジュールと視覚モジュール間のより緊密な統合、および知覚リサンプリングモジュール(後述)を特徴とする設計となっている。
LLaVAと同様に、Flamingoはテキスト分析と画像埋め込みのためにそれぞれ独自に設計されたLLMとビジョンエンコーダから始まります。どちらも、Flamingoの構成要素としての最終的な有用性とは関係なく、それぞれの狭い目的に合わせて事前学習されています。さらに、構成要素であるため、共同学習の過程で重みは固定されたままになります(下記参照)。
Flamingoは、LLMのバックボーンとしてDeepMindの既製品Chinchillaを使用しています。ビジョンエンコーダーには、非トランスフォーマー設計(ResNetベースのNFNet-F6 [ 22 ] )を採用しました。ALIGN [ 23 ]の画像とキャプションのペア、およびLTIP(Long Text & Image Pairs)と呼ばれる特別にキュレーションされたデータセットに対して、 CLIPスタイルのコントラスト損失を使用してこれをトレーニングしました。
ビジョンエンコーダーは、入力として単一の画像を受け取り(詳細は後述の動画を参照)、特徴ベクトルの2次元グリッドを生成します。
知覚リサンプラー[ 24 ]コンポーネントは、Flamingo入力におけるビデオと可変数の画像のサポートにおいて重要な役割を果たします。
複数の連続画像(1枚以上)がまずビジョンエンコーダに1枚ずつ入力され、特徴ベクトルの3次元グリッドが生成されます。動画は1秒間に1フレームのサンプリングレートで画像シーケンスに変換されます。生成されたグリッドは、長さが可変な特徴ベクトル配列に平坦化されます。
知覚リサンプラーは、これを短い固定長のトークン配列に変換します。この設計は、固定数の人工的な事前決定済みクエリベクトル(その値はトレーニングによって決定される)と、特徴ベクトル配列から導出された(キー、値)ペアとの間の相互注意に基づいています。
なお、この文脈では、連続する画像は間にテキストを挟まずに連続しているものとみなします。一般的なケースについては、後ほど説明します。
これらは複数のブロック(上の図を参照)から構成されており、LLaVAの投影モジュールと同様の役割を果たし、画像認識モジュールとテキスト処理モジュール間のインターフェースとして機能します。ただし、その設計は言語モデルとより密接に関連しています。

具体的には、Flamingoは言語モデルの特定のトランスフォーマーブロック間に、これらのクロスアテンション・アンド・デンスブロックを挿入します。これらのブロックは、エンコーダー・デコーダー型トランスフォーマーアーキテクチャのデコーダーブロックに似ています。つまり、クエリはバックボーンLLMの先行する従来の自己アテンション型トランスフォーマーブロックから取得されます。キーと値はビジョン特徴ベクトルから導出されます。出力は後続のバックボーンLLMブロックに転送されます。また、スキップ接続も含まれます。
エンコーダー・デコーダー・トランスフォーマーのブロックと比較して、追加されたブロックの重要な変更点の1つは、tanhゲートの導入です。これらの小さなモジュールは、入力を乗算しますが、その制御は、各ブロックに固有の、区間(-1, 1)の学習可能なスカラー重みによって行われます。これらの重みは、クロスアテンション密ブロックがテキスト生成プロセスに与える影響を調整します。トレーニング開始時には、ブロック内の他のモジュールの重みがまだ学習されておらずランダムなため、重みはゼロに初期化されます。トレーニングが進むにつれて、重みの値は徐々に増加します。これらのゲートは、トレーニングの安定性を確保する上で重要な役割を果たします。
画像とテキストのシーケンスが交互に表示されることに対応するため、Flamingoは、コンテキスト内(少数ショット)学習のパフォーマンスを向上させると思われるシンプルな適応策を導入しました。具体的には、入力ストリームをチャンクに分割し、各チャンクには単一の視覚入力(画像、連続する画像シーケンス、またはビデオ)が含まれます。テキストと視覚特徴間の相互注意を適用する際、テキストトークンは、そのチャンク内の視覚入力のみに注意を向けることが許可されます。その他の視覚入力はマスクされます。
テキストトークンは、テキスト内自己注意機構を介して、すべてのビデオ入力から間接的に影響を受けることに注意してください。
トレーニング中は、言語とテキストのバックボーンは固定されます(前述のとおり)。トレーニングには、前述のLTIPデータセット、厳選されたビデオとテキストのペアのデータセット(VTPと呼ばれる)、およびHTMLドキュメントから派生した、テキストと画像のシーケンスが交互に並んだ大規模なデータセット(MultiModal MassiveWeb - M3W)の3つのデータセットが使用されました。
Alibaba (2024)によるQwen2-VL [ 25 ]は、概念的にシンプルなアーキテクチャを持ち、Flamingo を超える機能と柔軟性も備えています。
LLaVA 1.0やFlamingoと同様に、バックボーン言語モデル( Qwen2)とビジョンエンコーダー(DFN [ 26 ]ビジョントランスフォーマー)から始まります。
LLaVAと同様、Flamingoとは異なり、Qwen2-VLは視覚データとテキストデータの統合処理を採用しており、トークンを内部ブロックに挿入するのではなく、すべてのトークンを言語モデルの入力に直接供給します。言語モデルは、相互注意ではなく自己注意を用いて、トークンを平等に扱います。テキストデータと視覚データが交互に配置されることに対応し、トークンのストリームを視覚データから区切るために、特別なトークン(vision_startとvision_end)が使用されます。
LLaVA 1.0およびFlamingoとの重要な違いは、ビジョンエンコーダーが、画像を固定形状に整形することなく、任意の画像解像度をサポートする点です。エンコードされるトークンの数は可変で、画像の形状によって異なります。
動画は1秒間に2フレームのサンプリングで画像ストリームを生成し、各画像は個別にエンコードされます。これもトークン配列の長さが可変になる要因の一つです。
MLPは、ViTの埋め込み次元を言語モデルの埋め込み次元に合わせます。また、隣接する2x2パッチのベクトル埋め込みをマージすることで、画像エンコーディングの次元削減にも貢献します(ViTを参照)。ビデオエンコーディングは、時間次元にも作用する3D畳み込みの恩恵も受けます。
標準的な位置符号化は、特にデータが可変長トークン埋め込みに符号化される場合、視覚データには適していません。具体的には、その1次元表現では、画像の空間的な配置とビデオの時間的な連続性が失われます。
Qwen2-VL は、視覚データに多次元バリアントを使用し、これをマルチモーダル回転位置エンコーディング (M-RoPE) と呼んでいます。この実装では、各トークンに、次のように定義されるインデックスの 3 つ ( i、x、y ) が割り当てられます。画像の場合、 xとy は画像内のトークンの空間座標を表します。i は画像のすべてのトークンに対して一定であり、モデルへの統合入力ストリーム内の画像のシーケンス番号に等しくなります。M-RoPE 位置エンコーディングは、3 つのインデックスに対して個別の 1-D RoPEエンコーディングをインターリーブすることによって構築されます。[ 27 ]
ビデオ位置符号化は、同様の3文字組を使用しますが、iは一定ではなく、ビデオストリーム内の各画像ごとに変化します。したがって、時間的な位置を符号化します。
Qwen2-VLは、視覚理解と言語理解を段階的に統合する3段階のプロセスで学習されます。第1段階では、他のモジュールを固定したまま、ビジョンエンコーダーを学習します。第2段階では、アーキテクチャ全体を解放し、第3段階では、言語モデルを微調整する間、ビジョンエンコーダーを固定します。学習データセットには、多様なモダリティが含まれており、最終的には1.4兆トークン(エンコードされたビジョントークンを含む)になります。学習損失は、言語モデルの出力におけるテキストトークンに対して計算されます。
マルチモーダル位置符号化によって実現される重要な機能の一つは、視覚的グラウンディング、すなわち画像内の特定のオブジェクトについて推論する能力です。M-RoPEが画像トークンの空間的位置を保持することは、この機能にとって不可欠です。
グラウンディングをサポートするために、トレーニングデータの多くには、キャプションやバウンディングボックスの座標など、画像内のオブジェクトに関する情報が含まれています。トレーニングデータセットの準備には、このデータを、、、、object_ref_startなどの特別なトークンを含む標準構造にフォーマットすることが含まれます。object_ref_endbox_startbox_end