8

Я пытаюсь использовать кофе для реализации триплетных потерь, описанных в Schroff, Kalenichenko and Philbin "FaceNet: A Unified Embedding for Face Recognition and Clustering", 2015.Какова формула градиента распространения обратной связи по триплету?

Я новичок в этом, так как рассчитать градиент в обратном распространении?

+1

Я вижу, что существует открытый PR, реализующий эту потерю: https://github.com/BVLC/caffe/pull/3663 – Shai

ответ

14

Я предполагаю, что вы определить уровень потерь в

layer { 
    name: "tripletLoss" 
    type: "TripletLoss" 
    bottom: "anchor" 
    bottom: "positive" 
    bottom: "negative" 
    ... 
} 

Теперь нужно вычислить градиент w.r.t каждый из «нижних» с.

Потеря определяется по формуле:
enter image description here

Градиент WRT "якорем" входного сигнала (fa):
enter image description here

Градиент WRT "положительного" вход (fp):
enter image description here

Градиент по отрицательному входу (fn):
![enter image description here


оригинальный расчет (я оставляю здесь по сентиментальным причинам ...)

enter image description here

Пожалуйста, см comment коррекции последнего члена.

+4

Последний, градиент «отрицательный», не должен быть 2 (fa - fn)? –

+0

@ MickeyShine да, вы правы. – Shai

+0

@ MickeyShine вы должны посмотреть на реализацию ['EucleadianLossLayer'] (https://github.com/BVLC/caffe/blob/master/src/caffe/layers/euclidean_loss_layer.cpp), чтобы увидеть, как эти вычисления могут быть реализованы в кафе. – Shai