阅读小结Deep Metric Learning via Lifted Structured Feature Embedding

来源:互联网 发布:大数据魔镜免费吗 编辑:程序博客网 时间:2024/05/25 08:13

原作者的github code:https://github.com/rksltnl/Deep-Metric-Learning-CVPR16

What:

这是一篇讲图像retrieval的工作,其实也可以用运用于细力度(finegrain)的分类问题。也就是通过一张图片去搜索相关图片。比较直观的问题在于图像的传统问题

-类内差异 (比如同一物体在不同pose下的照片,可能一点都不像) -类间相似(比如不同物体在同一pose下的照片,反倒是很像)

然后比较diao的地方是,zero-shot learning没有学习过,直接test(和以前我们常用的vgg模型提取特征的感觉一样,先在一个大数据集上统计学习了一下,随后应用到了新问题上的感觉)


Motivation:

1.传统的分类算法克服不了 多分类(由于模型复杂度和分类数量相关,会过于复杂)和数据bias(比如某一类数据特别少的问题)

2.metric learning可以克服第二个问题,因为学到的是每一类的general concept,所以数据少也能学。

3.deeplearning可以克服第一个问题。但deeplearning在类内差异做的比较好,类间相似不能take full advantage(其实softmax loss有类间差异,因为分母有所有的类)

4.提出的算法lift每个batch中的差异从O(m)到O(m^2),设计了一个新的loss目标。

在摘要中写到:

In this paper, we describe analgorithm for taking full advantage of the training batchesin the neural network trainingby lifting the vector of pair-wise distances within the batch to the matrix of pairwisedistances.  

说到底就是要更discriminative!


Review:首先我们回顾一下几个东西:

1.contrast embeding

作者给出了一个公式:input是一对数据xi和xj


y是这一对的groundtruth,比方说xi,xj是不是同一类,那么y就对应的是0或者1.

f()是xi和xj的运算(比如把x输入神经网络,取出fc层的结果,这么一个函数)

D是f(xi)和f(xj)的欧式距离。那么优化这个loss,min(J),当xi和xj是同一类的时候,yij是1,那么Dij应该越小越好;如果不是同一类,yij是0,Dij应该约大越好。


2.triplet loss


这次输入为三元组{xa,xp,xn}

xa和xp是同一类,和xn不同类。所以Dap应该越小越好,Dan越大越好。所以也是优化min(J)


然后下面是一张有趣的图,说明了作者Lift与前两种的不同。(前两种loss在刻画关系上是不足的)




对应的Loss如下:




先看下面的公式:

后一项为数据i,j之间的距离,

前一项为数据i最难区分的k和数据j最难区分的数据l的距离中较大者。。(比较绕,但看公式比较容易明白,找最难分辨的一条边,而之前triplet loss固定了这条边)


所以

1.每次train的时候都是最难的边或者说pair(容易混淆的两个东西)

2.利用了整的minibatch的信息而不是固定pair

相当于O(m)变为了现在的O(m^2)pairs 一个完全图


一般来说,接下去,我们写了一个矩阵运算,就是 (x1-x2)^2 = x1^2+x2^2-2x1x2 以矩阵的形式表达,然后每次求一下最close的negative是谁就好了。

但作者又提出说,batch是随机切的,那么信息是有限的。大多数情况下,minibatch中没有那些最难的。

所以作者没有使用random的batch,而是采用随机的取出一些positive pair,然后动态的找他们最难的边(因为模型也在调整)。


然后为了防止过拟合将max函数换成log和exp(依旧是增函数)


0 0
原创粉丝点击