CLIPモデルのファインチューニングについて

AI実装検定のご案内

CLIPは、膨大な画像と自然言語のペアを使って「画像」と「テキスト」を同じ埋め込み空間に射影することで、極めて高い汎化性能を獲得したモデルです。

その優れた Zero-shot 性能は多くの領域で重宝されていますが、特定領域の性能を高めたい場合には“適切なファインチューニング”が必要となります。

ただし、CLIPは通常の画像分類モデルとは異なり、テキスト・画像の二塔構造+コントラスト学習という特殊な訓練形式を持つため、無計画なファインチューニングは性能劣化を引き起こす危険性があります。

本稿では、CLIPを崩さずに強化するための原理・主要手法・注意点・データ設計・評価戦略を体系的にまとめます。

目次

CLIPとは何か — 学習原理の整理

CLIPは、以下の2つのエンコーダで構成されています。

  • 画像エンコーダ(ViT / ResNet)
  • テキストエンコーダ(Transformer)

これらは「画像→埋め込み」「テキスト→埋め込み」を行い、両者の類似度が高いほど正しく、低いほど誤りとなるよう、コントラスト学習で訓練されています。

結果として、CLIPは自然言語による概念表現にきわめて敏感で、未知のカテゴリに対しても柔軟に対応できる Zero-shot 性能を持ちます。

ファインチューニングが難しい理由

全層更新は破壊的になりやすい

CLIPが保持している幅広い知識は、膨大な Web データから獲得されたものです。

全層を更新すると、この汎化能力が崩れ、Zero-shot 性能も大きく低下します。

そのため CLIP のファインチューニングでは、「必要な部分だけを慎重に動かす」ことが基本方針となります。

少量データでも性能向上は可能

CLIPはもともとの表現力が高いため、データが数百枚〜数千枚程度でも、工夫された微調整手法を使えば効果を引き出せます。

テキスト側を調整するだけで大きく変わる

CLIPは自然言語による表現に敏感なため、画像側よりもテキスト側の調整が効きやすいという特徴があります。

これは、後述する Prompt Tuning が非常に強力である理由にも直結します。

CLIPで使われる主要なファインチューニング手法

CLIPを壊さないためには、「調整の自由度を絞った手法」を選択することが重要です。

ここでは実際に広く利用される代表手法を整理します。

Textual Inversion(新しい語彙を学習する)

特定の概念を「新しい単語」としてモデルに覚えさせる手法です。

  • テキストエンコーダ本体は凍結
  • 新規追加トークンの埋め込みベクトルのみ学習
  • 数枚の画像から新しい概念を登録できる

特定物体・特徴・スタイルなどを語彙レベルで扱いたい場合に有効です。

Prompt Tuning / P-Tuning(挿入プロンプトを学習する)

既存のテキストの前後に「学習可能な仮想トークン」の埋め込みを追加し、そこだけ更新する手法です。

  • モデル本体の重みは固定
  • 少量データで効果が非常に高い
  • Zero-shot 性能をほとんど損なわない

CLIPを最も安定して強化できるアプローチとして広く支持されています。

LoRA(低ランク適応)— 画像・テキスト側を少量だけ動かす

Transformer 層の一部に小さな低ランク行列を挿入し、そこだけ更新する方式です。

  • 元モデルの重みは保存される
  • 学習パラメータ数が少なく効率的
  • テキスト側・画像側どちらにも適用可能

モデル本体を壊さないまま表現力を拡張したいケースで強力です。

Linear Probe(画像特徴を固定し分類層のみ学習)

画像エンコーダの出力をそのまま使い、後段に設けた線形層(分類器)だけを学習します。

  • 過学習しにくい
  • 再現性が高い
  • 多クラス分類などの下流タスクで安定

CLIPを特徴抽出器として扱う場合の定番アプローチです。

全層ファインチューニング(非推奨)

CLIP全体を再学習する手法ですが、

  • 大量データが必要
  • Zero-shot 能力が失われやすい
  • 表現空間が壊れやすい

ため、特別な事情がない限り実務では選ばれません。

ファインチューニング手法の選び方

目的に応じて、どの手法を選ぶべきかは明確です。

目的最適な手法
Zero-shot 性能を保ちながら特定分野に最適化したいPrompt Tuning
画像エンコーダをそのまま活かして分類性能を上げたいLinear Probe
少量データでモデルを強化したいPrompt Tuning / LoRA
新しい概念や特徴を学習させたいTextual Inversion
画像側の表現を限定的に改善したいLoRA
徹底的に最適化したい(大量データ前提)フルチューニング(限定的)

結論:まず Prompt Tuning、次いで Linear Probe や LoRA を検討するのが最も効率的です。

データセット設計の重要ポイント

CLIPの性能はデータの構造、とりわけ「テキストの質」に大きく左右されます。

描写的で自然なテキストが最も効く

CLIPは説明的なキャプションで学習されているため、短いラベルより自然な文章表現のほうが埋め込みが安定します。

  • 悪例
    「犬」
  • 良例
    「芝生の上に座ってこちらを見つめる茶色い犬」

情報量の多いテキストは、モデルに概念の境界を明確に伝えます。

ネガティブ例はバッチ内で自動的に形成される

コントラスト学習では、バッチ内の「他のサンプル」が自動的に負例として扱われるため、明示的にネガティブデータセットを作らなくても成立します。

ただし、紛らわしい例(ハードネガティブ)を含めると学習がより強固になります。

100〜3,000枚程度でも十分な場合が多い

Prompt Tuning や LoRA は調整パラメータが少ないため、膨大なデータがなくても適切に働きます。

ハイパーパラメータ調整の基本指針

実際の学習では以下のような範囲が一般的です。

項目推奨レンジ
学習率(LoRA)1e-4 〜 1e-5
バッチサイズ64 〜 256
エポック数5 〜 20
画像入力サイズ224

モデルの層を固定しながら調整するため、過学習もしにくく扱いやすい領域です。

ファインチューニング後の評価方法

性能評価は多面的に行うことで、モデルの改変によるメリット・デメリットを公平に把握できます。

Zero-shot 性能の比較

微調整によってどれほど元の能力が維持されているかを確認します。

Image–Text Retrieval の精度

画像→テキスト、テキスト→画像の検索性能を測ることで、埋め込み空間の整合性がチェックできます。

Downstream Task の精度(Linear Probe)

画像エンコーダがどれだけ有益な特徴を保持しているかを確認する指標です。

CLIPファインチューニングの落とし穴

データの偏りに敏感

限られたデータで偏った概念を学習すると、埋め込み空間が歪む可能性があります。

テキストの書き方で結果が大きく変動

CLIPは自然言語を重視するため、キャプションが精度に直結します。

フルチューニングは最後の手段

無制御にモデル全体を更新すると、広範な知識を失ってしまいます。

まとめ:CLIPを崩さずに性能を伸ばすために

CLIPのファインチューニングは、従来の画像分類モデルとは思想が異なります。

最も重要なのは、“モデルが持つ強力な汎化性能を壊さずに、必要な部分だけを調整する” こと。

そのためのベストプラクティスは以下の順序になります。

  1. Prompt Tuning(最も安全かつ効果的)
  2. Linear Probe / LoRA(必要に応じて表現を部分調整)
  3. Textual Inversion(新しい概念追加)
  4. フルチューニングはよほどの理由がある場合のみ

このアプローチを踏むことで、CLIPの本来のポテンシャルを維持したまま、特定領域に適応した表現空間を得ることができます。

以上、CLIPモデルのファインチューニングについてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次