類似するサンプル同士を近づけ、異なるサンプル同士を遠ざけるように埋め込み空間を学習する損失関数群の総称。InfoNCE Loss、Triplet Loss、NT-Xent Loss などが含まれ、LLM の埋め込みモデル(BGE-M3、E5-Mistral、Voyage-3)や CLIP のような視覚-言語モデルの学習に不可欠。
Contrastive Loss(対照損失)は、データの類似性構造を埋め込み空間に反映するための損失関数群である。「正例ペア(類似)を近づけ、負例ペア(非類似)を遠ざける」という原理に基づく。2020 年の SimCLR 以降、自己教師あり学習で爆発的に普及し、2024-2026 年には LLM 埋め込みモデル(BGE-M3、E5-Mistral、Snowflake Arctic Embed、Qwen3-Embedding-8B)の学習に標準的に使われている。
最も広く使われる対照損失。ミニバッチ内の他のサンプルを負例として利用:
L_InfoNCE = -log( exp(sim(q, k+)/τ) / Σ_{i} exp(sim(q, k_i)/τ) )
アンカー(a)、正例(p)、負例(n)の 3 つ組で学習:
L_Triplet = max(0, d(a,p) - d(a,n) + margin)
Sentence-BERT で導入。ミニバッチ内の全ペアをクロスで評価:
| モデル | パラメータ数 | 損失関数 | 学習データ | 次元数 |
|---|---|---|---|---|
| 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 |
対照学習の性能は負例の質に大きく依存する:
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 と同一の形になる。