G検定 練習問題 #0355・誤差関数

Triplet Lossの値の計算

ディープラーニングの概要 › 誤差関数 単一選択 難易度 標準

ある衣料品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です。

選択肢ごとの解説

  1. A

    不適切

    マージンを入れずにd(a, p) − d(a, n)だけで計算すると、(ア)−0.8、(イ)−0.3、(ウ)0.3となり、負の値を0にして合計0.3になります。マージンがあるので、別の商品が十分に遠くなるまで損失が残ります。

  2. B

    不適切

    max(…, 0)をとらずに、(ア)−0.3、(イ)0.2、(ウ)0.8をそのまま足すと0.7になります。条件を満たした(ア)の損失は0で、負の値がほかの3つ組の損失を打ち消すことはありません。

  3. C

    不適切

    (イ)は同じ商品の画像のほうが近いので損失0と考えると0.8になります。しかし距離の差は0.3でマージン0.5に届かないため、0.6 − 0.9 + 0.5 = 0.2の損失が残ります。

  4. 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との違いもあわせて確認しておきます。

表示設定

テーマ
文字の大きさ
問題演習