Deep Metric Learning using Triplet Network

距離学習 類似度学習

手法概要

類似度を学習するための Triplet network を提案する. Siamese network のある種の拡張になっている.

Siamese network の入力は2つのアイテムのペアと、その2つの類似度であったが、 Triplet network では名前の通り、入力がアイテムの三組になっている.

このときに \((x, x^+)\) 及び \((x, x^-)\) に関して Siamese network 的なことを行う.

すなわち、

を目指す.

このアイテム間の距離として、\(z=f(x)\) 同士の L2 距離を算出し、さらに次のように正規化を行う.

\[d^+ = \frac{\exp \| z - z^+ \| }{\exp \| z - z^+ \| + \exp \| z - z^- \| }\] \[d^- = \frac{\exp \| z - z^- \| }{\exp \| z - z^+ \| + \exp \| z - z^- \| }\]

すなわち、 \(d^+ + d^- = 1\) となるように正規化する. \(d^+ = 0\) のとき、\(d^- = 1\) となるべきなので、損失は次のようにする. これを triplet loss という.

いま \(d^+ + d^- = 1\) としてるので

となって結局、\(d^+\) の最小化、または \(d^-\) の最大化と一致する.

亜種?

この論文を読むより先に "triplet loss" でググってヒットした ディープラーニングによるファッションアイテム検出と検索 - VASILY DEVELOPERS BLOG という記事を読んでおり、その記事では損失関数として、

というのが "triplet loss" だとして紹介されていた. どうも "contrastive loss" との折衷に見える.

恐らく、これは FaceNet で "triplet loss" として提案されたもののことだろう. 論文が出た順で言うと、本文書で紹介している論文のほうが古い.

評価実験

感想