论文笔记之: Deep Metric Learning via Lifted Structured Feature Embedding
?
Deep Metric Learning via Lifted Structured Feature Embedding
CVPR 2016?
?
摘要:本文提出一種距離度量的方法,充分的發(fā)揮 training batches 的優(yōu)勢(shì),by lifting the vector of pairwise distances within the batch to the matrix of pairwise distances. 剛開(kāi)始看這個(gè)摘要,有點(diǎn)懵逼,不怕,后面會(huì)知道這段英文是啥意思的。
引言部分開(kāi)頭講了距離相似性度量的重要性,并且應(yīng)用廣泛。這里提到了三元組損失函數(shù) (triplet loss),就是講在訓(xùn)練的過(guò)程當(dāng)中,盡可能的拉近兩個(gè)相同物體之間的距離,而拉遠(yuǎn)不同物體之間的距離;這種做法會(huì)比普通的訓(xùn)練方法得到更好的效果。但是,文章中提到,現(xiàn)有的三元組方法卻無(wú)法充分利用 minibatch SGD training 的 training batches 的優(yōu)勢(shì)。現(xiàn)有的方法首先隨機(jī)的采樣圖像對(duì)或者三元組,構(gòu)建訓(xùn)練 batches, 計(jì)算每一個(gè) pairs or triplets 的損失。本文提出一種方法,稱(chēng)為:lifts,將 the vector of pairwise distances 轉(zhuǎn)換成 the matrix of pairwise distance. 然后在 lifts problem 上設(shè)計(jì)了一個(gè)新的結(jié)構(gòu)損失目標(biāo)。結(jié)果表明,在 GoogleLeNet network 上取得了比其他方法都要好的結(jié)果。?
?
然后作者簡(jiǎn)單的回顧了一下關(guān)于判別性訓(xùn)練網(wǎng)絡(luò)(discriminatively training networks)來(lái)學(xué)習(xí) semantic embedding。大致結(jié)構(gòu)預(yù)覽圖如下所示:
首先是: Contrastive embedding.?
這種方法在 paired data ${(x_i, x_j, y_{ij})}$上進(jìn)行訓(xùn)練。這種 contrastive training 最小化具有相同 label 類(lèi)別的樣本之間的距離,然后對(duì)不同label的樣本,但是其距離小于 $\alpha$ 的 negative pair 給予懲罰。代價(jià)函數(shù)的定義為:
?
其中,m 代表batch中圖像的個(gè)數(shù),f(*)是網(wǎng)路輸出的特征,即原文中表達(dá)的:the feature embedding output from the network. $D_{i, j}$ 是兩個(gè)樣本特征之間歐式距離的度量。標(biāo)簽 $y_{i, j} \in {0, 1}$表明是否樣本對(duì)來(lái)自同一個(gè)類(lèi)別。$[*]_+$ 操作是 the hinge function max(0, *)。
?
第二個(gè)是:Triplet embedding。
這個(gè)就是著名的三元組損失函數(shù)了,即:找一個(gè) anchor,然后找一個(gè)正樣本,一個(gè)負(fù)樣本。訓(xùn)練的目的就是:鼓勵(lì)網(wǎng)絡(luò)找到一個(gè) embedding 使得 xa and xn 之間的距離大于 xa and xp 加上一個(gè) margin $\alpha$ 的和。損失函數(shù)定義為:
其中,D仍然表示樣本之間特征的距離。
?
然后就是本文提出的一種度量方法了:
Deep metric learning via lifted structured feature embedding.?
我們基于訓(xùn)練集合的正負(fù)樣本,定義了一個(gè)結(jié)構(gòu)化的損失函數(shù):
其中,P 是正樣本的集合,N 是負(fù)樣本的集合。這個(gè)函數(shù)提出了兩個(gè)計(jì)算上的挑戰(zhàn):
1. 非平滑(non-smooth)
2. 評(píng)價(jià)和計(jì)算其子梯度需要最小化所有樣本對(duì)若干次。
?
我們以?xún)煞N方式解決了上述挑戰(zhàn):
首先,我們優(yōu)化上述函數(shù)的一個(gè)平滑上界;
第二,對(duì)于大數(shù)據(jù)常用的方法類(lèi)似,我們采用隨機(jī)的方法。
然而,前人的工作都是用SGD的方法,隨機(jī)的均勻的選擇 pairs or triplets。我們的方法從這之中得到了借鑒:
? (1). it biases the sample towards including "difficult" pairs, just like a subgradient of $J_{i,j}$ would use the close negative pairs;?
(2). 一次采樣就充分的利用了一個(gè) mini-batch的全部信息,而不僅僅是兩個(gè)pair之間的信息。?
?
為了充分的利用這個(gè) batch,一個(gè)關(guān)鍵的 idea 是增強(qiáng) mini-batch 的優(yōu)化以利用所有的pairs。
需要注意的是:隨機(jī)采樣的樣本對(duì)之間的 negative edges 攜帶了非常有限的信息。
所以,我們的方法改為并非完全隨機(jī),而是引入了重要性采樣的元素。我們隨機(jī)的采樣了一些 positive pairs,然后添加了一些他們的 difficult neighbors 來(lái)訓(xùn)練 mini-batch. 這個(gè)增強(qiáng)增加了子梯度會(huì)用到的相關(guān)信息。下圖展示了一個(gè) positive pair 在一個(gè) batch 中的搜索過(guò)程,即:在一個(gè) positive pair 的圖像中,我們找到其 close(hard)negative images。
注意到我們的方法可以從兩端開(kāi)始搜索,而三元組則僅僅只能和定義好的結(jié)構(gòu)上的元素進(jìn)行搜索。
?
?
?
?
?
?此外,搜索 single hardest negative with nested max function 實(shí)際上會(huì)導(dǎo)致網(wǎng)絡(luò)收斂到一個(gè) bad local optimum. 所以我們采用了如下的 smooth upper bound,所以 我們的損失函數(shù)定義為:
?
其中,P是batch中 positive pairs 集合,N 是negative pairs 的集合。后向傳播梯度可以如算法1所示的那樣,對(duì)應(yīng)距離的梯度為:
?其中的 1[*] 是指示函數(shù),如果括號(hào)內(nèi)的判斷為真,那么輸出為1,否則就是0.?
本文的算法流程圖,如下所示:
?
?
結(jié)果展示:
?
?
?
?
?
?
?
?
?
?文章總結(jié):
可以看出,本文是在三元組損失函數(shù)基礎(chǔ)上的一個(gè)改進(jìn)。并非僅僅考慮預(yù)先定義好的樣本之間的差異性,而是考慮到一個(gè) batches 內(nèi)部 所有的樣本之間的差異。在這個(gè)過(guò)程中,文章中引入了類(lèi)似 hard negative mining 的思想,考慮到正負(fù)樣本之間的難易程度。并且為了避免網(wǎng)絡(luò)的訓(xùn)練陷入到 局部最優(yōu)的bug中去,引入了損失函數(shù)的上界來(lái)緩解這個(gè)問(wèn)題。
一個(gè)看似不大的改動(dòng),卻可以發(fā)到CVPR,也從某個(gè)角度說(shuō)明了這個(gè)方法的價(jià)值。
?
難道,三元組損失函數(shù)就這樣被這個(gè)算法擊敗了? 自己當(dāng)初看到三元組損失函數(shù)的時(shí)候,為什么就沒(méi)有忘這個(gè)方向去思考呢???
還有一個(gè)疑問(wèn)是:為什么這種方法的操作,稱(chēng)為:lifted structured feature embedding ??
難道說(shuō),是因?yàn)檫@個(gè)左右移動(dòng)的搜索 hard negative samples 的過(guò)程類(lèi)似于電梯(lift)?那 feature embedding 怎么理解呢? embedding 是映射,難道是:特征映射么??
?
?
?
?
?
?
?
?
?
?
?
?
?
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的论文笔记之: Deep Metric Learning via Lifted Structured Feature Embedding的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android 基础(二十四) Edit
- 下一篇: 【USACO 2.1】The Castl