常用损失函数汇总

 常用的度量学习损失方法有对比损失(Contrastive loss)、三元组损失(Triplet loss)、四元组损失(Quadruplet loss)、难样本采样三元损失(Triplet hard loss with batch hard mining,TriHrad loss)、边界挖掘损失(Margin sample mining loss,MSML)。首先假如有两张输入图片I1和I2,通过网络的前馈我们可以得到它归一化后的特征向量f(I1)和f(I2),可定义这两张图片特征向量的欧式距离为:

Contrastive loss

         对比损失用于训练孪生网络(Siamese network),其结构如下图所示,孪生网络的输入为一对(两张)图片(Ia和Ib),这两张图片可以为同一行人,也可为不同行人。每一对训练图片都有一个标签y,其中y=1表示两张图片属于同一个行人(正样本对),反之y=0表示它们属于不同行人(负样本对),最后对比损失函数写作:

常用损失函数汇总_第1张图片

常用损失函数汇总_第2张图片

Triplet loss

         三元组损失是一种被广泛使用的度量学习损失,之后的大量度量学习方法也是基于三元组损失演变而来的。顾名思义,三元组损失就是需要三张图片作为输入。和对比损失不同,一个输入的三元组(Triplet)包括一个正样本对和一个负样本对,三张图片分别命名为固定图片(Anchor)a、正样本图片(Positive)p和负样本图片(Negative)n,则三元组损失表示为:

        如下图所示,三元组损失可以拉近正样本对之间的距离,推开负样本对之间的距离,最后使得相同ID的行人图片在特征空间里形成聚类,达到行人重识别目的

常用损失函数汇总_第3张图片

有论文----Person re-identification by multichannel parts-based cnn with improved triplet loss function

认为原版的Triplet loss只考虑正负样本对之间的相对距离,而并没有考虑正样本对之间的绝对距离,为此提出改进三元组损失(Improved triplet loss),如下:

其中公式添加项,保证网络不仅能够在特征空间把正负样本推开,也能保证正样本对之间的距离很近。

 

Quadruplet loss

          四元组损失是三元损失的另一个改进版本,需四张输入图片,和三元组不同的是多了一张负样本图片,即固定图片(Anchor)、正样本图片(Positive)、负样本图片1(Negative1)和负样本图片2(Negative2),其中和是两张不同行人ID的图片,其结构如下图所示,则四元组损失表示为:

其中阈值是手动设置的正常数,通常设置beta小于alpha,前一项称为强推动,后一项称为弱推动。相比于三元组损失只考虑正负样本间的相对距离,四元组添加的第二项不共享ID,所以考虑的是正负样本间的绝对距离。因此,四元组损失通常能让模型学习到更好的表征。

常用损失函数汇总_第4张图片

TriHrad loss

    难样本采样三元组损失是三元组损失的改进版。传统的三元组随机从训练数据中抽取三张图片,这样的做虽然比较简单,但是抽样出来的大部分都是简单易区分的样本对,如果大量训练的样本对都是简单的样本对,这并不利于网络学习到更好的表征,大量论文发现用更难的样本去训练网络能提高网络的泛化能力,而采样难样本对的方法很多,论文----In defense of the triplet loss for person reidentification提出了一种基于训练批量(Batch)的在线难样本采样方法——TriHard Loss

    其核心思想是:对于每一个训练batch,随机挑选P个ID的行人,每个行人随机挑选K张不同的图片,即一个batch含有P*K张图片。之后对batch中的每一张图片a,我们可以挑选一个最难的正样本和一个最难的负样本与其组成一个三元组,首先我们定义和a为相同ID的图片集为A,剩下不同ID的图片集为B,则TriHard损失表示为:

其中alpha是人为设定的阈值参数,TriHard损失会计算a和batch中每一张图片在特征空间的欧氏距离,然后选出与a距离最远(最不像)的正样本p和距离最近(最像)的负样本n来计算三元组损失,这样的效果通常比传统的三元组损失效果要好。

 

MSML

        边界样本挖掘损失是一种引入难样本采样思想的度量学习方法。三元组损失只考虑了正负样本对之间的相对距离,为了引入正负样本对之间的绝对距离,四元组损失加入一张负样本组成了四元组{a,p,n1,n2},四元损失也定义为

假如我们忽略参数alpha和beta的影响,我们可以用一种更加通用的形式表示四元组损失:

其中m和n是一对负样本对,m和a既可以是一对正样本对也可以是一对负样本对,之后把TriHard的难样本挖掘思想引入进来,便可以得到:

其中a,p,m,n均是batch中的图片,a,p是batch中最不像的正样本对,m,n是batch中最像的负样本,MSML损失只挑选出最难的一个正样本对和最难的一个负样本对计算损失,是为了把正负样本对的边界给推开,因此命名为边界样本挖掘损失。总的来说,MSML是兼顾相对距离和绝对距离并引入了难样本采样思想的度量学习方法,其思想演变如下图:

常用损失函数汇总_第5张图片

你可能感兴趣的:(实习)