本文へ移動

G検定(ジェネラリスト検定)

こんとらすてぃぶろす

コントラスティブロス

Contrastive Loss

コントラスティブロスは、2つのデータの組(ペア)ごとに計算する損失関数です。似ているペアは埋め込み後の距離が近くなるように、似ていないペアはマージン以上に離れるように学習させます。距離学習で使われます。

詳しい説明

サンプルではなくペアに対して計算する損失

通常の学習では、損失関数はサンプル1件ごとの損失の和です。コントラスティブロスは、2つの入力の組(ペア)ごとに損失を計算し、その和を全体の損失とします。目的は、高次元の入力を低次元の空間へ写す写像を学習することです。似ている入力どうしは出力空間で近い点に、似ていない入力どうしは遠い点に写るようにします。

2つの入力X1、X2のペアには、似ていればY=0、似ていなければY=1というラベルを付けます。学習する写像(埋め込みの関数)をGWとすると、ペアの距離DWは出力どうしのユークリッド距離です。

DW(X1, X2) = ||GW(X1) - GW(X2)||

損失関数の式と各項の意味

L(W, Y, X1, X2) = (1-Y)(1/2)(DW)^2 + Y(1/2){max(0, m-DW)}^2

  • 似ているペア(Y=0)では後ろの項が0になり、(1/2)(DW)^2だけが残ります。距離が大きいほど損失が大きくなるので、2点を近づける方向に学習が進みます。
  • 似ていないペア(Y=1)では前の項が0になり、(1/2){max(0, m-DW)}^2だけが残ります。mはマージンです。距離DWがmより小さいときだけ損失が生じ、2点を離す方向に学習が進みます。DWがm以上なら max関数によって値は0になり、損失に寄与しません。マージンは埋め込み点の周りの半径を決めていて、似ていないペアはこの半径の内側にあるときだけ損失に効きます。

近づけるだけでは崩壊した解になる

似ているペアの距離を縮めるだけの損失では、GWをすべての入力に対して同じ定数を出す関数にすると、距離も損失も0にできてしまいます。これを崩壊した解と呼びます。これを避けるため、似ていないペアを遠ざける項(コントラスティブ項)を損失関数に明示的に入れる必要があります。

ばねにたとえた直感

出力の点を、ばねでつながれた質点と考えます。似ている点どうしは、自然長が0で常に引き合う引力のみのばねでつながります。似ていない点どうしは、自然長がmのばねでつながります。このばねは距離がmより近いときだけ2点を押し離し、mより遠くに伸びても引き戻す力は働きません。

コントラスティブロスは、G検定シラバス2024のキーワードに含まれています。

試験で問われること

G検定

  • コントラスティブロスは、サンプル1件ごとではなく、2つの入力のペアごとに計算する損失関数で、距離学習で使われる。
  • ペアには似ていればY=0、似ていなければY=1のラベルを付け、埋め込み後のユークリッド距離DWを使って損失を計算する。
  • 式はL = (1-Y)(1/2)(DW)^2 + Y(1/2){max(0, m-DW)}^2で、似ているペアは距離の2乗で近づけ、似ていないペアは距離がマージンmより小さいときだけ離す。
  • 似ていないペアの距離がm以上になると、その項はmax関数によって0になり、損失に寄与しない。
  • 似ているペアを近づけるだけでは、出力をすべて同じ定数にする崩壊した解になりやすい。そのため、似ていないペアを遠ざける項が必要になる。

最終更新日: 2026/09/23