類似ペアの表現を近づけ、非類似ペアの表現を遠ざける損失関数。文埋め込みモデルや検索特化LLMの学習に不可欠な技術。
コントラスティブ損失(Contrastive Loss)は、入力ペアの関係性に基づいて表現空間を構造化する損失関数群の総称である。「意味的に近い入力は埋め込み空間で近くに、遠い入力は遠くに」配置されるようにモデルを学習させる。
LLMの文脈では、文埋め込みモデル(Sentence Transformers、BGE、E5等)の学習や、検索拡張生成(RAG)のリトリーバ学習で中心的な役割を果たす。
SimCLR(2020年)で普及した形式で、1つの正例に対してバッチ内の他の全サンプルを負例として扱う。温度パラメータ τ で分布の鋭さを制御する。
L = -log(exp(sim(z_i, z_j)/τ) / Σ_k exp(sim(z_i, z_k)/τ))
τ = 0.05〜0.1 が文埋め込みモデルの標準値で、値が小さいほど分布が鋭くなり、ハードネガティブへの感度が上がる。
アンカー・正例・負例の三つ組を使い、アンカーと正例の距離がアンカーと負例の距離よりマージン m 以上小さくなるよう学習する。
L = max(d(a, p) - d(a, n) + m, 0)
FaceNetで有名だが、LLM文脈ではバッチ効率の低さからInfoNCEに置き換わりつつある。
Sentence-Transformers で標準的な損失。バッチ内の全ペアをクロスで正例/負例として扱い、1バッチからO(N²)の学習信号を抽出する。
| モデル | 損失関数 | 次元数 | MTEB平均 | 特徴 |
|---|---|---|---|---|
| BGE-M3 | InfoNCE + 蒸留 | 1024 | 68.2 | 多言語・3形式対応 |
| E5-Mistral-7B | InfoNCE | 4096 | 66.6 | LLMベース埋め込み |
| Voyage-3 | コントラスティブ | 1024 | 67.8 | RAG特化 |
| Qwen3-Embedding-8B | MNRL + Hard Neg | 3584 | 70.5 | 最新性能 |
| Snowflake Arctic Embed L | InfoNCE | 1024 | 65.1 | コスパ重視 |
コントラスティブ学習の品質は負例の選び方に大きく依存する。ランダムサンプリングの負例は「簡単すぎる」ため学習信号が弱い。
GTE-Qwen2やBGE-M3は、BM25ハードネガティブ + Cross-Encoder蒸留の組み合わせが最も高い精度を達成している。
バッチサイズがコントラスティブ学習の性能に直結するため、GPUメモリが制約になる。GradCache(勾配キャッシュ)技術により、論理的なバッチサイズを物理GPUメモリの制約から切り離すことが可能になった。16GB VRAM でも論理バッチサイズ65,536を実現する報告がある。
次トークン予測(生成タスク)には交差エントロピー、文・文書の類似度学習(検索・分類タスク)にはコントラスティブ損失を使う。RAG向けリトリーバはほぼ全てコントラスティブ学習。
In-Batch Negatives方式では負例の多様性がバッチサイズに依存するため、小バッチは不利。GradCacheや外部負例メモリバンクで緩和可能。
SimCSE(2021年)がドロップアウトによるデータ拡張で教師なしコントラスティブ学習を実現した。ただし教師ありの方が性能は高い。