Have a Question?
Triplet Loss
1 定义
Triplet Loss 也是一种用于训练样本差异化的函数,它的输入是一个三元组,包括锚(Anchor)示例、正(Positive)示例、负(Negative)示例,通过优化锚示例与正示例的距离小于锚示例与负示例的距离,实现样本之间的相似性计算。
公式为:
L=\max (d(a, p)-d(a, n)+\text { margin }, 0)
其中:
- a:anchor,锚示例
- p:positive,与a是同一类别的样本
- n:negative,与a是不同类别的样本
- margin是一个大于0的常数
最终的优化目标是拉近 a 和 p 的距离,拉远 a 和 n 的距离。
2 样本分类
对于构造 Triplet Loss 的训练样本分为 3 类
1)Easy Triplets:L=0 ,即 d(a, p)+\text{ margin } < d(a, n),这种情况不需要优化,天然a和p的距离很近,a和n的距离很远
2)Hard Triplets: L > \text{margin},即 d(a, n) > d(a, p) ,a和n的距离近,a和p的距离远,这种情况损失最大,需要优化
3)Semi-hard Triplets: L < \text{margin} ,即 d(a, p) < d(a, n) < d(a, p)+\text{ margin } ,即a和p的距离比a和n的距离近,但是近的不够多,不满足margin,这种情况存在损失,但损失比hard triplets要小,也需要优化
参考文献
[1] https://zhuanlan.zhihu.com/p/171627918