一篇文章,教你读懂度量学习、三元组损失函数

首次注册CSDN网站,先简单概括一下今天学习的几种损失函数吧!
1、
在这里插入图片描述
上图的embedding直译过来是–对称嵌入,就是我们经常提到的二元组,看下面的公式定义的损失:
在这里插入图片描述
这种方法在 paired data (xi,xj,yij)(xi,xj,yij)上进行训练。这种 contrastive training 最小化具有相同 label 类别的样本之间的距离,然后对不同label的样本,但是其距离小于 αα 的 negative pair 给予惩罚。
其中,m 代表batch中图像的个数,f(*)是网路输出的特征,即原文中表达的:the feature embedding output from the network. Di,jDi,j 是两个样本特征之间欧式距离的度量。标签 yi,j∈0,1yi,j∈0,1表明是否样本对来自同一个类别。[∗]+[∗]+ 操作是 the hinge function max(0, *)。
上面的公式就很好的正面了最后训练的正样本会最小化,若是负样本会给与惩罚。
2、
在这里插入图片描述
三元组损失函数的提出还是有很大提高的,下面简单的看下定义:
在这里插入图片描述
其思想即是:找一个 anchor,然后找一个正样本,一个负样本。训练的目的就是:鼓励网络找到一个 embedding 使得 xa and xn 之间的距离大于 xa and xp 加上一个 margin αα 的和。
其中,D仍然表示样本之间特征的距离。
3、
在三元组损失函数的改进上提出:在这里插入图片描述
感觉这种想法很容易想的到,可是为什么自己做不出来呢?为什么人家拿过来做到了,还发了CVPR…
看一下这个度量方法的具体实现吧!
在这里插入图片描述
其中,P 是正样本的集合,N 是负样本的集合。这个函数提出了两个计算上的挑战:

1. 非平滑(non-smooth)

2. 评价和计算其子梯度需要最小化所有样本对若干次。
我们以两种方式解决了上述挑战:

首先,作者的工作优化上述函数的一个平滑上界;

第二,对于大数据常用的方法类似,采用随机的方法。

然而,前人的工作都是用SGD的方法,随机的均匀的选择 pairs or triplets。这篇工作的方法从这之中得到了借鉴:

(1). it biases the sample towards including “difficult” pairs, just like a subgradient of Ji,jJi,j would use the close negative pairs;

(2). 一次采样就充分的利用了一个 mini-batch的全部信息,而不仅仅是两个pair之间的信息。
为了充分的利用这个 batch,一个关键的 idea 是增强 mini-batch 的优化以利用所有的pairs。
需要注意的是:随机采样的样本对之间的 negative edges 携带了非常有限的信息。
看一下这篇损失函数的定义:
在这里插入图片描述
 其中,P是batch中 positive pairs 集合,N 是negative pairs 的集合。后向传播梯度可以如算法1所示的那样,对应距离的梯度为:
 在这里插入图片描述
 就分享这三部分内容吧,以后慢慢整理!我是览音,欢迎各位批评指正!

猜你喜欢

转载自blog.csdn.net/weixin_43979572/article/details/84843697
今日推荐