ある衣料品ECサイトが、類似商品の検索に使う画像の埋め込みをTriplet Lossで学習している。基準の画像a、同じ商品の別の画像p、別の商品の画像nからなる3つ組の損失はL = max(d(a, p) − d(a, n) + 0.5, 0)で、dは埋め込みの距離、0.5はマージンである。3つ組(ア)〜(ウ)の距離は次のとおりである。(ア)d(a, p) = 0.4、d(a, n) = 1.2。(イ)d(a, p) = 0.6、d(a, n) = 0.9。(ウ)d(a, p) = 1.0、d(a, n) = 0.7。3つの損失の合計として、最も適切なものを1つ選べ。
正解と解説を見る
解説
正解 D
この問題の論点:Triplet Lossの値の計算
ポイント
Triplet Lossは、別の商品の画像が同じ商品の画像よりマージン以上遠くなるまで損失を出します。この条件を満たした3つ組の損失は0です。
選択肢ごとの解説
- A
不適切
マージンを入れずにd(a, p) − d(a, n)だけで計算すると、(ア)−0.8、(イ)−0.3、(ウ)0.3となり、負の値を0にして合計0.3になります。マージンがあるので、別の商品が十分に遠くなるまで損失が残ります。
- B
不適切
max(…, 0)をとらずに、(ア)−0.3、(イ)0.2、(ウ)0.8をそのまま足すと0.7になります。条件を満たした(ア)の損失は0で、負の値がほかの3つ組の損失を打ち消すことはありません。
- C
不適切
(イ)は同じ商品の画像のほうが近いので損失0と考えると0.8になります。しかし距離の差は0.3でマージン0.5に届かないため、0.6 − 0.9 + 0.5 = 0.2の損失が残ります。
- D
適切 正解
(ア)は0.4 − 1.2 + 0.5 = −0.3なので0、(イ)は0.6 − 0.9 + 0.5 = 0.2、(ウ)は1.0 − 0.7 + 0.5 = 0.8です。合計は0 + 0.2 + 0.8 = 1.0です。
補足
損失が0の3つ組は勾配も0になり、それ以上は学習に寄与しません。学習が進むと、こうした易しい3つ組が大半を占めるようになります。そのためFaceNetでは、条件を満たしていない難しい3つ組を選んで学習に使う工夫がとられました。
試験での狙われ方
マージンの役割や、損失が0になる3つ組の条件を、距離の値を示して問う形が考えられます。2つ組で学ぶContrastive Lossとの違いもあわせて確認しておきます。