Reid之路: 度量学习的几种主要loss

度量学习旨在学习两张图片的相似性,那么久需要设计合适的损失函数能让网络提取到更具有判别能力的特征.

contrasitive loss

网络优化目标是最小化损失函数 $L _c$, 输入正样本对时, $L _c = yd ^2 _{I _a , I _b}$, 其中 $d$ 为特征向量的 L2 距离. 输入越相似,那么特征理应越相似,L2距离越小. 当输入负样本对时, $y=0$, $$L _c = (\alpha - d ^2 _{I _a , I _b}) ^2 _+$$ $$= max(\alpha - d ^2 _{I _a , I _b}, 0)$$

要最小化损失函数,就要使 $\alpha -d$ 小于0,那么损失即为0, $d ^2 _{I _a , I _b} > \alpha$, 即使负样本对之间的距离要大于 $\alpha$, $\alpha$ 为人工设定的超参, 值设定的越大, 即对判别为负样本对的要求越高. 太大会陷入过拟合. 对比损失拉近正样本对的距离,推开负样本对的距离。

triplet loss

triplet loss 输入三张图片,一张记为 anchor,一张positive(与anchor 同ID),一张negative(与anchor不同ID), triplet loss 使正样本对的距离小于正样本与负样本对的距离.

$$L _t = (d _ {a,p} - d _ {a,n} + \alpha) _+$$ $$ = max(d _ {a,p} - d _ {a,n} + \alpha, 0)$$

即使 $d _ {a,p} - d _ {a,n} + \alpha$ 小于0,有 $d _ {a,p} + \alpha < d _ {a,n}$, anchor与positive的距离加上设定的边界值任要小于anchor与negative的距离. $\alpha$ 越大,对正负样本的判别更严苛,太大会过拟合.

传统 triplet loss 只表示了正样本对和正负样本对之间的相对距离,如上图右下角所示,相对距离相同,损失一样. 这样存在弊端:无法卡一个阈值将正负样本明确分开.

改进的triplet loss:

$$L _i t = d _ {a,p} + (d _ {a,p} - d _ {a,n} + \alpha) _+$$

要最小化损失函数,要最小化正样本对之间的距离,还要将正样本对和正负样本的距离拉开.

quadruplet loss

在三元组损失中,只考虑了正样本对、正负样本对的距离,实际上应该使正样本的距离小,正样本对的距离小于正负样本对的距离,还应该拉开负样本的距离.

四元组损失输入为四张图片,a、p 来自同一个ID,n1,n2分贝来自不同的ID,使a、p的距离小于a、n1的距离,同时使a、p的距离小于n1、n2的距离,四元组损失第二项包含了绝对距离的.