【问题标题】:What's the triplet loss back propagation gradient formula?三重损失反向传播梯度公式是什么?
【发布时间】:2016-01-24 16:03:01
【问题描述】:

我正在尝试使用 caffe 来实现 Schroff, Kalenichenko and Philbin "FaceNet: A Unified Embedding for Face Recognition and Clustering", 2015 中描述的三元组损失。

我是新手,如何计算反向传播中的梯度?

【问题讨论】:

标签: computer-vision neural-network deep-learning caffe gradient-descent


【解决方案1】:

我假设您将损失层定义为

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

现在您需要计算每个“底部”的梯度。

损失由:

“锚点”输入的渐变 (fa):

相对于“正”输入的梯度 (fp):

梯度 w.r.t “负”输入 (fn):


原来的计算(我出于感情原因离开这里……)

请参阅comment 更正最后一个术语。

【讨论】:

  • 最后一个,“负”的梯度,不应该是2(fa - fn)吗?
  • @lok​​nar 梯度计算为i 的总和。这个总和是批次中所有示例的总和。如您所见,一些示例对梯度有贡献(如果它们违反了边距),而有些则没有。
  • 第一个渐变不应该是2(a-p) - 2(a-n)还是简化的2(n-p)
  • @Shai 这可能是一个愚蠢的问题,但所有三个 CNN 是否共享相同的权重? (所以反向传播将平均三个反向传播并更新它们)。如果不是(看起来是这样),我们在测试时使用哪个 CNN?
  • @MoneyBall (1) 不是一个愚蠢的问题。 (2) 这一切都归结为您将如何部署网络。如果您在学习嵌入到特征空间并且因此您有一个单个嵌入(即单个 CNN),那么所有副本在训练期间必须共享权重。
猜你喜欢
  • 1970-01-01
  • 2019-03-17
  • 2020-01-07
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 2019-04-16
相关资源
最近更新 更多