Search code examples
computer-visionneural-networkdeep-learningcaffegradient-descent

What's the triplet loss back propagation gradient formula?


I am trying to use caffe to implement triplet loss described in Schroff, Kalenichenko and Philbin "FaceNet: A Unified Embedding for Face Recognition and Clustering", 2015.

I am new to this so how to calculate the gradient in back propagation?


Solution

  • I assume you define the loss layer as

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

    Now you need to compute a gradient w.r.t each of the "bottom"s.

    The loss is given by:
    enter image description here

    The gradient w.r.t the "anchor" input (fa):
    enter image description here

    The gradient w.r.t the "positive" input (fp):
    enter image description here

    The gradient w.r.t the "negative" input (fn):
    ![enter image description here


    The original calculation (I leave here for sentimental reasons...)

    enter image description here

    Please see comment correcting the last term.