深層学習

ペア比較の距離学習

類似ペアを近づけ、非類似ペアをマージンまで遠ざける距離学習を、contrastive lossとペア設計の観点から整理する。

  • B|標準
  • 深層学習

数式の記号で止まったら 記号の読み方 (∂・⊙・転置・上付き添字を、読み方から)

ひとことで言うと

ペア比較の距離学習は、入力を埋め込みベクトルへ写し、同じクラスのペアは近く、異なるクラスのペアは離れるように学習する方法です。分類器の確率ではなく、距離そのものを学習するので、未登録の組み合わせの照合にも使える形になります。

同じ人の顔写真には短い紐を結び、別人の写真には一定以上の長さの棒を挟む作業です。短くするだけでは全員を同じ場所に置けるため、別人には「ここまでは離す」という条件も同時に置きます。

なぜ必要か

顔照合のように、学習時に見ていない相手との一致を判定したい場合、クラスごとの分類出力だけでは比較の規則を直接取り出しにくい問題があります。ChopraらはSiamese構成で2枚を同じ写像に通し、顔画像ペアの類似度を学習する枠組みを示しました。重要なのは、ペアの正解を「同じか違うか」として与え、埋め込み空間の幾何に変換する点です。

ただし、同一ペアを近づける項だけでは不十分です。すべての入力を同じベクトルへ写せば、同一ペアの距離は常に0になり、負のペアも区別できません。そこで非類似ペアには、距離がマージンに達するまでは離す損失を課します。ペアの組み方も学習の難しさを決めます。簡単な負例ばかりなら制約が早く満たされ、近い負例や紛らわしい正例を含めるほど、写像が境界を調整する場面が増えます。

設計起きること
類似ペアを近づけるだけ全入力を一点へ写す退化解を許す
類似ペアとマージン付き負例近さと分離を同時に制約する

仕組み

2入力の埋め込みを mathbfzi,mathbfzj\\mathbf{z}_i,\\mathbf{z}_j、その距離を Dij=lVertmathbfzi−mathbfzjrVert2D_{ij} = \\lVert \\mathbf{z}_i-\\mathbf{z}_j\\rVert_2 とします。y=1y=1 を類似ペア、y=0y=0 を非類似ペア、m>0m>0 を距離のマージンとすると、contrastive lossの代表的な形は次です。

L=yDij2+(1−y)max⁡(0,m−Dij)2L = yD_{ij}^{2} + (1-y)\max(0,m-D_{ij})^{2}

類似ペアでは距離を0へ縮めます。非類似ペアでは Dij<mD_{ij}<m のときだけ損失が残り、Dij≥mD_{ij}\ge m ならそのペアの項は0です。つまり、非類似ペアを無限に遠ざける目的ではなく、判定に必要な間隔を満たす目的です。マージンを置かないと、負のペアにも距離を広げる基準がなく、類似ペアの項だけが残って全入力を一点へ潰す解が最適になります。

試験では、yy の意味、平方距離、そして負例側の max\\max の向きを取り違えないことが要点です。実装では、埋め込みを同じネットワークで計算すること、ペアのラベルと損失のラベル定義を一致させることが確認箇所になります。

試験でどう問われるか

問われ方正解に寄る条件引っかけ
lossの各項の役割類似は距離を縮め、非類似はマージン未満だけ離す非類似を常に遠ざけ続ける
マージンの意味負のペアに要求する最低距離学習率や埋め込み次元と同一視する
ペアのラベル式で定義した yy と実装の符号を一致させる0/1を逆にして項の役割が反転する

実装で確かめる

次の最小例では、2次元の距離からペアごとの損失を計算します。マージンを超えた非類似ペアの損失が0になることが確認できます。

from math import hypot

z1 = [(0., 0.), (0., 0.)]
z2 = [(0.3, 0.4), (2., 0.)]
y = [1., 0.]                 # 1: 類似, 0: 非類似
m = 1.0
D = [hypot(a - b, c - d) for (a, c), (b, d) in zip(z1, z2)]
loss = [yi * di**2 + (1 - yi) * max(0., m - di)**2
        for yi, di in zip(y, D)]
print(D, loss)

ここで1組目は距離0.5の類似ペアなので縮める項が残り、2組目は距離2の非類似ペアなのでマージン1をすでに満たし、損失は0です。ペアを作る処理と損失計算を分けて確認すると、ラベル反転の不具合も見つけやすくなります。

取り違えやすいもの

用語ペア比較との切り分け
Siamese network2入力を共有重みの写像へ通す構成。損失そのものの名前ではありません
contrastive loss類似・非類似のペアに距離制約を課す損失
triplet loss基準・正例・負例の三つ組で相対距離を学ぶ別形式です
分類損失クラス確率を当てる損失で、距離のマージンを直接指定しません

想起チェック

contrastive lossでマージンは何を止めるためにあるか

非類似ペアを、必要以上に遠ざけ続けることを止めます。距離が mm 以上なら負例側の項は0です。

類似ペアを近づける項だけでは何が起きるか

全入力を同じベクトルへ写すと、すべての類似ペアの距離が0になります。非類似ペアを区別する制約がないためです。

ペア設計が難易度を左右する理由は何か

簡単な負例はすぐマージンを満たします。紛らわしい負例を含めると、写像がより厳しい距離制約を同時に満たす必要があります。

出典