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