Triplet Loss

Triplet Loss 损失函数

Triplet Loss是深度学习中的一种损失函数,用于训练差异性较小的样本,如人脸等, Feed数据包括锚(Anchor)示例、正(Positive)示例、负(Negative)示例,通过优化锚示例与正示例的距离小于锚示例与负示例的距离,实现样本的相似性计算。image.png

如上图所示,triplet是一个三元组,这个三元组是这样构成的:从训练数据集中随机选一个样本,该样本称为Anchor,然后再随机选取一个和Anchor (记为Loss Function - 图2)属于同一类的样本和不同类的样本,这两个样本对应的称为Positive (记为Loss Function - 图3)和Negative (记为Loss Function - 图4),由此构成一个(Anchor,Positive,Negative)三元组。
训练一个参数共享或者不共享的网络,得到这三个元组的feature vectors: Loss Function - 图5,Loss Function - 图6,Loss Function - 图7,triplet loss的目的是让Loss Function - 图8Loss Function - 图9距离尽可能小,使Loss Function - 图10Loss Function - 图11距离尽可能大,并且两者有个最小间隔Loss Function - 图12。整个loss如下:

Loss Function - 图13
这里距离用欧式距离度量,+表示[]内的值大于零的时候,取该值为损失,小于零的时候,损失为零。