博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
度量学习(metric learning)损失函数
阅读量:2382 次
发布时间:2019-05-10

本文共 2319 字,大约阅读时间需要 7 分钟。

学习的对象通常是样本特征向量的距离,度量学习的目的是通过训练和学习,减小或限制同类样本之间的距离,同时增大不同类别样本之间的距离。

常用度量学习损失方法

(1)对比损失
用于训练Siamese(孪生)网络,,输入为两张图片,每一对训练图片都有一个标签y,y=1表示两张图片属于同一个人(正样本对),反之y=0,表示他们属于不同的行人(负样本对)
对比损失函数:
当输入为正样本对的时候,d(Ia,Ib)逐渐减小,相同ID的行人图片会持续在特征空间形成聚类。反之,当网络输入负样本对时,d(Ia,Ib)会逐渐变大,知道超过设定的alpha。通过最小化损失函数,最后可以使正样本对之间距离逐渐变小,负样本对之间距离逐渐变大,从而满足行人重识别任务的需要。
(2)三元组损失(Triplet loss)
三元组损失是一种被广泛应用的度量学习损失,之后的大量度量学习方法也是基于三元组损失演变而来。顾名思义,三元组损失需要三张输入图片。和对比损失不同,一个输入的三元组(Triplet)包括一对正样本对和一对负样本对。三张图片分别命名为固定图片(Anchor) a、正样本图片(Positive)p和负样本图片(Negative) n 。图片 a 和图片 p 为一对正样本对,图片 a 和图片 n 为一对负样本对。则三元组损失表示为:
如下图所示,三元组可以拉近正样本对之间的距离,推开负样本对之间的距离,最后使得相同ID的行人图片在特征空间里形成聚类,达到行人重识别的目的。
改进:原版的Triplet loss只考虑正负样本对之间的相对距离,而并没有考虑正样本对之间的绝对距离,为此提出改进三元组损失(Improved triplet loss):
保证网络不仅能够在特征空间把正负样本推开,也能保证正样本对之间的距离很近。

(3)四元组损失(Quadruplet loss)

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

其中α和β是手动设置的正常数,通常设置β小于α,前一项称为强推动,后一项称为弱推动。相比于三元组损失只考虑正负样本间的相对距离,四元组添加的第二项不共享ID,所以考虑的是正负样本间的绝对距离。因此,四元组损失通常能让模型学习到更好的表征。
(4)难样本采样三元组损失(Triplet loss with batch hard mining, TriHard loss)
难样采样三元组损失(本文之后用TriHard损失表示)是三元组损失的改进版。传统的三元组随机从训练数据中抽样三张图片,这样的做法虽然比较简单,但是抽样出来的大部分都是简单易区分的样本对。如果大量训练的样本对都是简单的样本对,那么这是不利于网络学习到更好的表征。大量论文发现用更难的样本去训练网络能够提高网络的泛化能力,而采样难样本对的方法很多。论文[10]提出了一种基于训练批量(Batch)的在线难样本采样方法——TriHard Loss。
TriHard损失的核心思想是:对于每一个训练batch,随机挑选 P 个ID的行人,每个行人随机挑选 K 张不同的图片,即一个batch含有 P×K 张图片。之后对于batch中的每一张图片 a ,我们可以挑选一个最难的正样本和一个最难的负样本和 a 组成一个三元组。
其中 α 是人为设定的阈值参数。TriHard损失会计算 a 和batch中的每一张图片在特征空间的欧式距离,然后选出与 a 距离最远(最不像)的正样本 p 和距离最近(最像)的负样本 n 来计算三元组损失。通常TriHard损失效果比传统的三元组损失要好。

(5)边界挖掘损失(Margin sample mining loss, MSML)

(考虑了正负样本对之间的绝对距离,同时借鉴了TriHard loss引入 hard sample mining 的思想,MSML 吸收了这两个优点。)
边界样本挖掘损失(MSML)是一种引入难样本采样思想的度量学习方法。三元组损失只考虑了正负样本对之间的相对距离。为了引入正负样本对之间的绝对距离,四元组损失加入一张负样本组成了四元组。四元组损失也定义为:

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

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

其中 a,p,m,n 均是batch中的图片,a,p 是batch中最不像的正样本对,m,n 是batch 中最像的负样本对,a,m 皆可以是正样本对也可以是负样本对。概括而言TriHard损失是针对batch中的每一张图片都挑选了一个三元组,而MSML损失只挑选出最难的一个正样本对和最难的一个负样本对计算损失。所以MSML是比TriHard更难的一种难样本采样,此外maxd(a,p)可以看作是正样本对距离的上界,mind(m,n)可以看作是负样本对的下界。MSML是为了把正负样本对的边界给推开,因此命名为边界样本挖掘损失。总的概括,MSML是同时兼顾相对距离和绝对距离并引入了难样本采样思想的度量学习方法。其演变思想如下图:

参考:

你可能感兴趣的文章
windows的140个技巧
查看>>
教你打造属于自己的绿色ppstream
查看>>
系统出现右下角的小喇叭不见了,解决办法
查看>>
googlecache不用代理照样看,真的要反思下自己啦
查看>>
这个是csdn的"不完全log"查看站吧可惜只有四个月的()
查看>>
重装win系统后,linux不能进入的“修复“办法
查看>>
我的签名--发问之前
查看>>
一种另类的登陆gmail邮箱的办法
查看>>
tasklist向taskkill传递参数,问题解决(反思)
查看>>
卡巴6.0.1.411版本升级服务器(解决地震造成的不能升级问题(12310125更新,307可以升啦))
查看>>
终于理解卡巴更新分发啥意思啦(现在卡巴可以正常更新啦)
查看>>
IPC命令大全
查看>>
一份详尽的IPC$入侵资料
查看>>
Arp反欺骗策略
查看>>
什么是随机数漏洞,什么是脆弱的随机数
查看>>
多用户的WordPress博客群搭建(WordPress Mu)
查看>>
ARP欺骗病毒
查看>>
搜索引擎登录,网站分类目录登录地址
查看>>
robots.txt
查看>>
Lisp之根源
查看>>