Contrastive Loss (コントラスティブ損失)
解説
Contrastive Lossは、ディープラーニングにおいて「2つのデータが似ているか、似ていないか」を学習させるための損失関数です。主に「距離学習(Metric Learning)」と呼ばれる分野で使われます。
「ゴム紐」と「バリア」のイメージ
この損失関数の動きは、物理的な力に例えると直感的に理解できます。
- 同じカテゴリのペア(正例):
お互いに「ゴム紐」で繋がれていると考えてください。距離が離れていると、ゴムが縮もうとする力(損失)が働き、2つのデータを近くに引き寄せます。 - 違うカテゴリのペア(負例):
お互いに反発し合いますが、ある一定の距離(マージン)まで離れると、それ以上は反発しなくなります(損失が0になる)。
「とにかく遠くへ行け!」ではなく、「とりあえずこの半径(マージン)より外に出てくれればそれでいい」という、効率的な学習を行います。

顔認証での活用(シャムネットワーク)
最も代表的な応用例は「顔認証システム」です。
同じ人の顔写真は近くに、別人の顔写真は遠くに配置されるように学習することで、未知の顔写真が入力されたときも、登録済みデータとの距離を測るだけで本人確認が可能になります。
G検定対策
出題ポイント
- 目的:「分類(これは犬だ)」ではなく、「識別(これはAと同じか?)」を行うタスクに適している。
- 仕組み:似ているペアの距離を最小化し、似ていないペアの距離を(マージンを超えるまで)最大化する。
- キーワード:「距離学習」「マージン」。
よくあるひっかけ問題
- × 似ていないデータ同士は、距離が離れれば離れるほど良いとし、無限に遠ざけようとする
(解説)違います。ある一定の距離(マージン)以上に離れれば、それ以上遠ざける必要はないと判断し、損失はゼロになります。これにより、特徴量空間が破綻するのを防ぎます。 - × Contrastive Lossは、1枚の画像に対して計算される
(解説)必ず「2つのデータ(ペア)」を入力とし、その関係性を学習します。(※ちなみに3つのデータを使う場合は「Triplet Loss」と呼ばれます)。
