CLIPとは?画像と文章を同じ空間で比較し、追加学習なしで分類や画像検索に使う技術

CLIPは画像と文章の対応を対照学習し、自然言語で分類対象を指定できる技術です。2つのエンコーダ、双方向の損失、プロンプトの役割と原論文の実験条件から、画像検索や分類の開発へのヒントと限界を解説します。

参考文献

Learning Transferable Visual Models From Natural Language Supervision

Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, Gretchen Krueger, Ilya Sutskever

論文を見る

今回の論文

今回取り上げるのは、OpenAIのAlec Radford、Jong Wook Kim、Chris Hallacyら12名による「Learning Transferable Visual Models From Natural Language Supervision」です。2021年2月26日にarXivで公開され、ICML 2021で発表されました。研究分野は画像と言語の表現学習です。論文ページとICMLの掲載情報を参照できます。

選んだ理由は、画像認識の出力を固定カテゴリから自然言語へ広げる考え方が、検索や分類アプリの設計に直結するためです。学習したモデルをどう使うかに加え、「文章を分類器の重みに変える」という視点から技術を読みます。

どんな技術か

CLIPは、Contrastive Language-Image Pre-trainingの略です。画像をベクトルにするモデルと、文章をベクトルにするモデルを一緒に学習し、対応する画像と文章が近い方向を向くようにします。

たとえば犬の写真に対して、「犬の写真」「自動車の写真」「建物の写真」という候補文を比較し、最も近い文のカテゴリを返します。候補文を変更すれば、同じモデルで別の分類を試せます。対象タスク専用の重み更新をしない、この利用法がゼロショット分類です。

文章から登録画像を探す場合も、比較する向きを変えて同じ仕組みを使えます。一方、CLIP自体は説明文を生成するモデルではありません。主な出力は特徴ベクトルと、画像・文章の対応スコアです。論文本文、2節・3.1.2節

課題

従来の画像分類器は、学習時に決めたカテゴリに対して出力を返します。「犬か猫か」を学習したモデルへ、そのまま「キャンプ用品か家具か」という分類を追加することは難しく、分類器の変更や新しいラベル付き画像が必要になります。

別の問題は、画像の周囲にある自然な文章を、学習の正解としてどう使うかです。同じ写真でも、「公園を走る犬」「休日の散歩」などさまざまな説明が付きます。文章を一語ずつ完全に生成させようとすると、画像認識に必要な情報以外も学ばせる負担が生じます。

CLIPは、「説明文を正確に書く」よりも、「複数の文章のうち、どれがこの画像と組になっていたかを選ぶ」課題を使います。文章全体との対応を学ぶことで、固定のカテゴリIDに縛られにくい画像表現を目指します。

素材検索や、分類ルールが変わる社内ツールでは、この柔軟性に意味があります。ただし、候補文を変えられることと、新しい業務概念を正確に認識できることは別です。モデルの事前学習で得た視覚・言語知識の範囲が、利用時の能力を制約します。

用語解説

共通埋め込み空間
画像と文章を、直接比較できる同じ次元のベクトルへ変換する仕組みです。CLIPでは2つのエンコーダを共同で学習し、異なる種類の入力の間に対応を作ります。次元数をそろえるだけでは実現しません。
対照学習とバッチ内負例
対応するペアを近づけ、対応しないペアと区別する学習です。CLIPでは同じバッチの別画像に付いた文章などを負例として使い、すべてを同じベクトルにしてしまう解を避けます。
コサイン類似度
ベクトルの方向がどの程度一致するかを表す値です。長さを1に正規化すれば内積で計算でき、CLIPの画像と候補文の比較に使えます。スコアの高さが、そのまま業務上の正答確率を意味するわけではありません。
softmaxと温度
候補のスコアを合計1の分布へ変換するのがsoftmaxです。温度はスコア差の強調度を調整します。CLIPは学習時に尺度も調整しますが、得られる分布は与えた候補集合の中での相対的な値です。
ゼロショット分類と線形評価
ゼロショット分類は候補文の特徴を使い、対象タスクの分類器を追加学習しません。線形評価は画像エンコーダを固定し、正解ラベルで小さな分類器を学習します。論文の比較を読む際は、後者には対象タスクのラベルが使われる点に注意します。

技術の仕組み

2つのエンコーダを、同じ比較空間へつなぎます

画像側には改良したResNetまたはVision Transformer、文章側にはTransformerを使います。画像と文章を最初から一緒にAttentionへ入れる構造ではなく、別々に処理する構造です。

各エンコーダの出力に線形変換を施し、共通空間へ写してから長さを1に正規化します。文章側では、終端トークンの最終層の表現を使います。両エンコーダは原論文では最初から学習しており、既存の画像分類器と文章モデルを置くだけではありません。

この分離構造には、利用時の利点があります。登録画像を一度ベクトル化しておけば、検索のたびに全画像と文章の組をモデルへ入力し直す必要がありません。

画像から文章、文章から画像の両方向で学習します

N組の画像・文章をまとめ、画像iと文章jのスコアをN×Nの行列にします。元のペアを同じ番号に並べると、正例は対角線上のN組です。それ以外のN²−N組を負例として扱います。

正規化後の画像特徴をu、文章特徴をv、正の尺度をaとすると、学習目標は次のように表せます。

s_ij = a × dot(u_i, v_j)
L_image = -(1/N) × Σ_i log [exp(s_ii) / Σ_j exp(s_ij)]
L_text  = -(1/N) × Σ_j log [exp(s_jj) / Σ_i exp(s_ij)]
L = (L_image + L_text) / 2

画像を一つ固定して正しい文章を選ぶのがL_image、文章を一つ固定して正しい画像を選ぶのがL_textです。尺度aは温度の逆数に相当する学習可能な値です。正解ペアの絶対スコアだけでなく、同じ候補集合の他のペアより高いスコアを出すように学びます。

原論文のWITデータは、インターネットから集めた4億組の画像・文章で構成されます。主な学習は32エポック、バッチサイズ32,768で行います。大きなバッチは比較相手を増やしますが、特徴の共有や類似度計算も重くなります。候補全体を正規化するこの損失を、ペア単位の判定へ変更したのがSigLIPのシグモイド損失です。CLIP論文本文、2.2〜2.5節・図3

分類器の重みを、候補文から作ります

推論時はカテゴリごとの説明文をベクトル化し、画像特徴との内積を求めます。正規化した候補文のベクトルを列として並べれば、画像特徴に掛ける線形分類器の重みとして解釈できます。

この見方では、文章エンコーダは「言葉から分類器を作る部分」です。カテゴリの追加では候補文の特徴を追加し、分類ルールの変更では候補文を見直します。候補が固定なら文章特徴を保存でき、毎回文章エンコーダを動かす必要はありません。

ただし、曖昧な単語だけでは意図が伝わりません。たとえば英語のboxerには犬種とスポーツ選手の意味があります。「ペットの一種」といった文脈を候補文へ補うことが、分類条件を明確にする操作になります。

複数の言い方を、ベクトルの段階で統合します

原論文では、同じカテゴリに対する複数の説明文を使う方法も試しています。各文の正規化した特徴を平均し、平均結果も正規化して、カテゴリごとの代表ベクトルにします。

画像ごとに何十回も文章生成をする方法ではありません。カテゴリ特徴を事前に作れるので、画像を多数分類する場合は準備コストを分散できます。論文本文、3.1.2節・3.1.4節

実験と結果

原論文は30以上のデータセットを使い、専用の追加学習なしで分類できるか、凍結した画像特徴が分類器に役立つかなどを検証しています。以下は2021年の原論文の結果であり、現在のモデル間ランキングではありません。

ImageNetでは、専用ラベルを使わずTop-1正解率76.2%でした

表1のCLIPはImageNetでTop-1正解率76.2%、本文ではTop-5正解率95%と報告されています。Top-1は第1候補が正解する割合、Top-5は上位5候補に正解が入る割合です。特記しない場合のCLIPは、ViT-L/14を336ピクセル解像度でも追加事前学習したモデルです。

これはImageNetの128万枚のラベル付き学習例で専用に学習せず、元のResNet-50に匹敵する水準へ達した結果です。ただし、4億組の事前学習データと大きなモデルを使っています。同じデータ量・計算量でResNet-50より効率がよいと証明した比較ではありません。論文本文、表1・2.5節・3.1.3節

候補文の書き方でも、分類性能が変わりました

ImageNetでは、カテゴリ名だけから「A photo of a {label}.」という文へ変えると正解率が1.3ポイント改善しました。さらに80種類の文脈を使った特徴の統合で、単一の標準文から追加で3.5ポイント改善しています。

図4では、プロンプト調整と統合により36データセット平均でも約5ポイントの改善が報告されています。モデルの再学習なしで改善できる一方、候補文も評価対象の設定に含める必要があるという結果です。論文本文、図4・3.1.4節

転用先によって、専用ラベルの必要性が変わります

27データセットの比較では、ゼロショットCLIPが、ResNet-50の特徴にラベル付きで学習した線形分類器を16データセットで上回りました。比較相手は各分野の最強モデルではなく、この特定の教師ありベースラインです。

一方、原論文の限界の分析では、MNISTの手書き数字分類は88%で、画素から学ぶ単純なロジスティック回帰にも及びませんでした。幅広い写真での転用性能が、未知の見た目や数の理解まで保証するわけではありません。論文本文、図5・6節

何に使える?

以下は、共通空間と事前計算の仕組みから考えられる応用案です。各業務での効果が原論文で実証されたわけではありません。

タグが不足した画像の検索

素材写真を「雪の中の赤い車」のような文章で検索する用途です。登録時に画像特徴を保存し、検索時に文章特徴から近い画像を探します。画像にタグを付ける前でも候補を得られる可能性があります。

ただし、「赤い車の隣に白い車」と「白い車の隣に赤い車」のような関係まで厳密に区別できるとは限りません。色や対象の有無だけでなく、必要な条件の組み合わせで検索評価を作ります。

分類ルールを検討する試作

設備や商品写真を大まかに分類したいとき、まずカテゴリ説明を用意して画像との相性を測れます。大量にラベル付けする前に、カテゴリの境界や、画像だけでは判断できない項目を発見する助けになります。

最終的に専用分類器を学ぶ場合にも、ゼロショットの失敗例はラベル設計の材料になります。微細な欠陥や固有型番の識別は、別の特徴や追加学習が必要になりやすい用途です。

画像を含む資料の検索候補

点検写真や製品写真を含む資料では、質問文に近い画像を取り出し、その元資料を回答用モデルへ渡す構成を考えられます。画像の保存先、資料ID、閲覧権限を一緒に管理すれば、候補の根拠へ戻れます。

CLIP単体には回答生成や、表の数値を正確に読む機能はありません。写真検索と、OCRや文書理解を役割分担させる設計が必要です。

開発や事業へのヒント

画像の登録と、分類条件の変更を分けます

小規模なアプリでは、公開済みの学習済みモデルで画像特徴を事前計算し、検索・分類の両方に使う構成から試せます。モデルを固定している間は、候補文を変えるたびに画像側を計算し直す必要はありません。

ただし、モデルの重みや画像前処理を変えたら特徴の互換性を確認し、必要なら再登録します。モデル名、重みの版、画像解像度、前処理、候補文の版を保存しておくと、性能変化の原因を追いやすくなります。

「候補内の一位」と「採用してよい判定」を分けます

候補を犬と猫だけにすると、車の画像にもどちらかの一位が付きます。softmaxは候補集合内で値を配分するので、一位の値が大きいだけでは対象外の画像を排除できません。

実装では候補外の画像も評価へ入れ、類似度や一位と二位の差を使った保留ルールを検証します。ここでの閾値設計は本記事からの提案であり、CLIPが未知カテゴリを確実に検出するという主張ではありません。

入力が文章か画像かで、特徴モデルを比較します

自然言語で探すなら、画像と言語を対応付けた空間が必要です。一方、画像から似た画像を探す用途では、DINOv2の画像だけから学ぶ汎用特徴も比較材料になります。

「分類精度が高いモデル」を一つ選ぶより、検索文への一致、同一商品の識別、背景への依存をそれぞれ測る方が、必要な機能に合うモデルを判断しやすくなります。

限界

大規模事前学習は高コストです。原論文のViT-L/14は256基のV100で12日間の学習を要し、336ピクセル版には追加学習もあります。公開重みを利用するコストと、学習全体を再現するコストは区別する必要があります。

データへの依存も強く、原論文のWITそのものは配布されていません。著者らは評価データとの重複も分析していますが、検出器の見逃しを完全には確認できないとしています。「対象タスクの追加学習なし」は、「その概念や類似画像を事前学習で一切見ていない」と同じではありません。

数え上げ、細かな車種・花・航空機の区別、学習分布から離れた画像には弱点があります。画像全体を一つのベクトルで扱うだけでは、位置関係や微細な欠陥を落とす可能性もあります。また、別ペアを負例とする学習では、意味的には正しい別の説明を負例にしてしまう場合があります。

原論文の文章データは英語中心で、日本語の業務文を同じ性能で扱える根拠にはなりません。英語への翻訳を挟む場合も、専門用語や短い型番の意味が保たれるかを測る必要があります。

推論では画像特徴の保存容量や検索インデックスが必要です。候補文を増やしてもエンコーダの再学習は不要ですが、比較コストと誤分類の可能性は変わります。論文本文、5〜6節、著者の公開実装

よくある質問

Q. CLIPは画像について説明文を生成できますか?

A. 単体では生成しません。画像と文章をベクトル化して対応度を比較します。文章による回答が必要なら、検索した画像や資料を別の生成モデルへ渡す構成を検討します。

Q. 新しいカテゴリを追加するたびに、再学習が必要ですか?

A. ゼロショット分類では、新カテゴリの候補文をベクトル化して追加できます。ただし、未知の専門概念を正しく認識できる保証はなく、画像と候補文で精度を検証します。不十分なら専用分類器や追加学習を比較します。

Q. ゼロショットなら、学習データは不要という意味ですか?

A. 対象タスク用の追加学習データを使わないという意味です。原論文のCLIPは4億組の画像・文章から事前学習しています。業務に導入する際の評価用の正解データも別途必要です。

Q. 類似度やsoftmaxの値を、正解する確率として使えますか?

A. そのまま使えるとは限りません。softmaxの値は候補文や候補数でも変わります。候補外の画像を含む評価で誤判定を調べ、自動処理へ回す範囲と保留する範囲を決めます。

Q. 画像検索では、検索のたびに全画像をモデルへ入れますか?

A. モデルと前処理が固定なら、画像特徴を登録時に保存できます。検索時は文章をベクトル化して既存特徴と比較します。大量の画像では近似近傍検索も候補ですが、速度に加え、検索による取りこぼしも評価します。

今日の学び

この論文は、固定カテゴリに依存する画像認識と、自然な文章から汎用的な視覚知識を学ぶ課題を扱いました。

画像と文章を別々にベクトル化し、バッチ内の正しい対応を双方向で選ぶ対照学習で解こうとしました。その結果、候補文から分類器を作り、対象タスクの追加学習なしで分類する方法につながりました。

開発へのヒントは、重みの更新だけでなく、比較する候補の設計にも改善の余地があることです。画像特徴の事前計算を活かし、候補文と対象外入力を含む評価を整えることで、検索や分類の試作を進めやすくなります。