Triplet Loss
Triplet Loss是深度学习中的一种损失函数,用于训练差异性较小的样本,如人脸等, Feed数据包括锚(Anchor)示例、正(Positive)示例、负(Negative)示例,通过优化锚示例与正示例的距离小于锚示例与负示例的距离,实现样本的相似性计算。
如上图所示,triplet是一个三元组,这个三元组是这样构成的:从训练数据集中随机选一个样本,该样本称为Anchor,然后再随机选取一个和Anchor (记为)属于同一类的样本和不同类的样本,这两个样本对应的称为Positive (记为
)和Negative (记为
),由此构成一个(Anchor,Positive,Negative)三元组。
训练一个参数共享或者不共享的网络,得到这三个元组的feature vectors: ,
,
,triplet loss的目的是让
与
距离尽可能小,使
与
距离尽可能大,并且两者有个最小间隔
。整个loss如下:
这里距离用欧式距离度量,+表示[]内的值大于零的时候,取该值为损失,小于零的时候,损失为零。