Contrastive Loss(コントラスティブロス)
類似するサンプル同士を近づけ、異なるサンプル同士を遠ざけるように埋め込み空間を学習する損失関数群の総称。InfoNCE Loss、Triplet Loss、NT-Xent Loss などが含まれ、LLM の埋め込みモデル(BGE-M3、E5-Mistral、Voyage-3)や CLIP のような視覚-言語モデルの学習に不可欠。
Contrastive Loss とは
Contrastive Loss(対照損失)は、データの類似性構造を埋め込み空間に反映するための損失関数群である。「正例ペア(類似)を近づけ、負例ペア(非類似)を遠ざける」という原理に基づく。2020 年の SimCLR 以降、自己教師あり学習で爆発的に普及し、2024-2026 年には LLM 埋め込みモデル(BGE-M3、E5-Mistral、Snowflake Arctic Embed、Qwen3-Embedding-8B)の学習に標準的に使われている。
主な Contrastive Loss の種類
InfoNCE Loss(Noise-Contrastive Estimation)
最も広く使われる対照損失。ミニバッチ内の他のサンプルを負例として利用:
L_InfoNCE = -log( exp(sim(q, k+)/τ) / Σ_{i} exp(sim(q, k_i)/τ) )
- τ(温度): 0.05-0.1 が標準。低いほど分布が鋭くなる
- sim: コサイン類似度が標準
- バッチサイズ依存: 大きいバッチほど負例が多く性能向上。CLIP は 32,768
Triplet Loss
アンカー(a)、正例(p)、負例(n)の 3 つ組で学習:
L_Triplet = max(0, d(a,p) - d(a,n) + margin)
- margin: 0.2-1.0 が一般的
- Hard Negative Mining が必須: ランダム負例では学習が進まない
- FaceNet(2015)で有名になったが、InfoNCE に比べ収束が遅い
Multiple Negatives Ranking Loss
Sentence-BERT で導入。ミニバッチ内の全ペアをクロスで評価:
- BGE-M3: この損失 + Knowledge Distillation の組み合わせ
- E5-Mistral: 指示付き対照学習で task-aware な埋め込みを実現
- バッチサイズ 2048-8192 が推奨
埋め込みモデルの学習パイプライン
| モデル | パラメータ数 | 損失関数 | 学習データ | 次元数 |
|---|---|---|---|---|
| BGE-M3 | 568M | InfoNCE + Distillation | 1.2B ペア | 1024 |
| E5-Mistral-7B | 7B | InfoNCE + 指示プロンプト | 800M ペア | 4096 |
| Voyage-3 | 非公開 | 非公開 | 非公開 | 1024 |
| Snowflake Arctic Embed L | 335M | InfoNCE | 500M ペア | 1024 |
| Qwen3-Embedding-8B | 8B | Multiple Negatives | 1.5B ペア | 3584 |
Hard Negative Mining の重要性
対照学習の性能は負例の質に大きく依存する:
- ランダム負例: 簡単すぎて学習信号が弱い。初期学習のみ有効
- In-Batch Negatives: バッチ内の他のサンプルを負例に。計算コストゼロで効率的
- Hard Negatives: BM25 や先行モデルで検索した「似ているが不正解」のサンプル。ANCE アルゴリズムで動的生成
- Semi-Hard Negatives: margin 内に収まる負例のみ使用。Triplet Loss で特に重要
- Denoised Hard Negatives: ノイズラベルを含む hard negative をフィルタリング。BGE-M3 で採用
視覚-言語モデルでの応用
- CLIP(2021): 4 億画像-テキストペアで InfoNCE。バッチサイズ 32,768。温度 τ を学習可能パラメータとして最適化
- SigLIP(2023): ペアワイズの Sigmoid Loss に変更。バッチサイズ制約を緩和し、分散学習との親和性向上
- EVA-CLIP(2024): 教師蒸留 + 対照学習のハイブリッド。ImageNet zero-shot 82.0%
よくある質問(FAQ)
Q1: InfoNCE のバッチサイズはどの程度必要ですか? A: 最低 256、推奨 2048-8192。CLIP の実験では 32,768 まで単調に性能向上した。ただし GPU メモリの制約があるため、勾配累積やマルチ GPU での分散バッチが現実的。MoCo のようなメモリバンク方式でバッチサイズ制約を回避する手法もある。
Q2: 温度パラメータ τ の設定指針は? A: 小さいほど(0.01-0.05)分布が鋭く識別的になるが、勾配爆発のリスクがある。大きいほど(0.5-1.0)滑らかだが識別力が低下。テキスト埋め込みでは 0.05-0.07、画像-テキストでは 0.07-0.1 が一般的。CLIP は τ を学習可能にして最終的に 0.01 付近に収束。
Q3: Contrastive Loss と Cross-Entropy Loss の関係は? A: InfoNCE Loss は実は(K+1)クラスの Cross-Entropy Loss と数学的に等価。正例を正解クラス、K 個の負例を不正解クラスとみなすと、ソフトマックス Cross-Entropy と同一の形になる。
まとめ
- 対照学習は埋め込みモデル学習の中核技術
- InfoNCE が最も広く使われ、バッチサイズが性能を左右
- Hard Negative Mining が品質向上の鍵
- 温度パラメータ τ のチューニングが重要
- SigLIP のような新しい変種が分散学習効率を改善