Ranked List Loss for Deep Metric Learning | 阅读笔记
Ranked List Loss for Deep Metric Learning | 閱讀筆記
這是CVPR2019上一篇度量學習的論文。
摘要
深度度量學習(DML)的目的是學習可以捕獲數據點之間語義相似性信息的嵌入。在DML中使用的現有成對或三重損失函數在模型改進時由于大量的平凡對或三元組對而導致收斂緩慢。為了改善這一點,最近提出了基于排序的結構化損失,以結合多個示例并利用其中的結構化信息,它們收斂得更快,并實現了最先進的性能。在此基礎上,作者提出現有排序激勵結構損失的兩種局限性,并提出了一種新的排序列表損失方法來解決這兩種問題。首先,首先,給定查詢,僅結合一部分數據點以構建相似性結構。因此,忽略了一些有用的示例,并且該結構的信息量較少。為了解決這個問題,提出了通過利用圖庫中的所有實例來構建基于集合的相似性結構。將樣本分為正樣本集和負樣本集,目標是利用一個margin使查詢更接近正樣本集,而不是負樣本集。其次,先前的方法旨在在嵌入空間中盡可能接近正樣本對。結果,類內數據分布可能會被丟棄。相反,本文提出為每個類學習一個超球面,以保留其中的相似性結構。 廣泛的實驗表明,所提出的方法在三個廣泛使用的基準上達到了最先進的性能。
Introduction:
深度度量學習(DML)在計算機視覺的各種應用中起著至關重要的作用,例如圖像檢索、聚類和遷移學習。此外,DML是挑戰極端分類設置的一個很好的解決方案,其中存在大量的類,而每個類只有很少的圖像。一個經典的應用就是人臉識別,Google的FaceNet模型使用Triplet-Loss刷新了當時人臉識別的記錄,在人臉驗證方面實現了超越人類的性能。
基于深度學習的度量學習其發展主要體現在各種不同的Loss Function 上。最基本的兩種損失函數分別是 Contrastive Loss 和 Triplet-Loss。Contrastive Loss 主要是約束成對數據之間的相似或者不相似。Triplet-Loss 則包括一個錨點(anchor)、一個正樣本和一個負樣本,它的目的是使得錨點和正樣本的距離盡可能小,與負樣本的距離盡可能大。一般來說,Triplet-Loss的效果比Contrastive Loss的效果要好,因為他考慮了正負樣本與錨點的距離關系?;谏鲜龅膬煞N損失函數衍生出了很多變形,比如將數據豐富的結構化信息加入到Loss中,而不僅僅局限于二元組或三元組。
本文貢獻如下:
- 提出了一種新穎的基于排序的結構化損失(RLL)來學習判別式嵌入。與以前的排序思想損失相比,是第一個結合所有非平凡數據點并利用其中結構的人。此外,我們還為每個類學習了一個超球面來保存類內的數據分布,而不是將每個類縮小成一個點。
 - 在三個主流的基準數據集(即CARS196 ,CUB-200-2011 和SOP )上達到了最好水平。
 
Structured Losses
符號:
 X={(xi,yi)}i=1NX=\{ (x_i,y_i)\}_{i=1}^{N}X={(xi?,yi?)}i=1N? 是輸入數據,(xi,yi)(x_i,y_i)(xi?,yi?)表示第iii個圖像和它對應的類別標簽。類別總數為CCC,例如yi∈[1,2,...,C]y_i\in[1,2,...,C]yi?∈[1,2,...,C];來自第ccc類的圖像被表示為{Nic}i=1Nc\{N_i^c\}_{i=1}^{N_c}{Nic?}i=1Nc??,其中NcN_cNc?是第ccc類圖像的數量。
Ranking-Motivated Structured Losses
Triplet Loss
Triplet Loss的目的是用一個固定的間隔使錨點更靠近正點而不是負點。
 L(X;f)=1∣Γ∣∑(i,j,k)∈Γ[dij2+m?dik2]+(1)L(X;f)=\frac{1}{|\Gamma|}\sum_{(i,j,k)\in\Gamma}[d^2_{ij}+m-d^2_{ik}]_+ \quad \quad (1)L(X;f)=∣Γ∣1?(i,j,k)∈Γ∑?[dij2?+m?dik2?]+?(1)
 Γ\GammaΓ是三元組集合,i,j,ki,j,ki,j,k對應地表示錨點、正樣本和負樣本點的下標,fff是嵌入函數,dij2=∣∣f(xi)?f(xj)∣∣2d^2_{ij}=||f(x_i)-f(x_j)||_2dij2?=∣∣f(xi?)?f(xj?)∣∣2?是歐氏距離,[?]+[\cdot]_+[?]+?是hinge函數。
N-pair-mc
不同于Triplet Loss使用單個的正負樣本,這個損失函數利用了數據之間的結構信息來學習到更有區別性的表示。具體來說,樣本由一個正樣本和N?1N-1N?1個負樣本組成,這N?1N-1N?1個負樣本來自于N?1N-1N?1個不同的類別,即每個類別1個負樣本。
 L({(xi,xi+)}i=1N;f)=1N∑i=1Nlog{1+∑j≠iexp?(fi?fj+?fi?fi+)}(2)L(\{(x_i,x_i^+)\}_{i=1}^{N};f)=\frac{1}{N}\sum_{i=1}^Nlog\{1+\sum_{j\neq i}\exp(f_i^{\top}f_j^{+}-f_i^{\top}f_i^{+})\}\quad \quad (2)L({(xi?,xi+?)}i=1N?;f)=N1?i=1∑N?log{1+j?=i∑?exp(fi??fj+??fi??fi+?)}(2)
 fi=f(xi)\mathrm{f}_{i}=f\left(\mathrm{x}_{i}\right)fi?=f(xi?)和{(xi,xi+)}i=1N\left\{\left(\mathbf{x}_{i}, \mathbf{x}_{i}^{+}\right)\right\}_{i=1}^{N}{(xi?,xi+?)}i=1N?是來自NNN種不同類別的NNN對樣本,例如yi≠yj,?i≠jy_{i} \neq y_{j}, \forall i \neq jyi??=yj?,?i?=j。這里xix_ixi?和x+x_+x+?分別表示查詢和正樣本,xj+,i≠j{x_j^+,i\neq j}xj+?,i?=j是負樣本。
Lifted Struct
這個目標函數比N-pair-mc更進一步,提出引入所有的負樣本,通過促使錨點與一個正樣本的距離盡可能近,與所有的負樣本的距離都大于α\alphaα。
 L(X;f)=12∣P∣∑(i,j)∈P[{dij+log?(∑(i,k)∈Nexp?(α?dik)+∑(j,l)∈Nexp?(α?djl))}]+(3)\begin{aligned} L(\mathbf{X} ; f)=& \frac{1}{2|\mathbf{P}|} \sum_{(i, j) \in \mathbf{P}}\left[\left\{d_{i j}+\log \left(\sum_{(i, k) \in \mathbf{N}} \exp \left(\alpha-d_{i k}\right)\right.\right.\right. \left.\left.\left.+\sum_{(j, l) \in \mathbf{N}} \exp \left(\alpha-d_{j l}\right)\right)\right\}\right]_{+} \end{aligned} \quad \quad (3) L(X;f)=?2∣P∣1?(i,j)∈P∑????????dij?+log???(i,k)∈N∑?exp(α?dik?)+(j,l)∈N∑?exp(α?djl?)??????????+??(3)
 PPP和NNN分別表示正對和負對的集合,給一個查詢xix_ixi?,Lifted Struct打算從所有對應的負數據點中識別一個正示例。
Proxy-NCA
這個方法提出的目的是用代理去解決采樣的問題。假設WWW代表著訓練集中的一小部分數據,在采樣時通過選擇與WWW中距離最近的一個樣本uuu作為代理(proxy), 即:
 p(u)=arg?min?w∈Wd(u,w)(4)p(\mathbf{u})=\arg \min _{\mathbf{w} \in \mathbf{W}} d(\mathbf{u}, \mathbf{w})\quad \quad (4) p(u)=argw∈Wmin?d(u,w)(4)
 p(u)p(u)p(u)表示從WWW到uuu的最近點,基于選擇的proxy, 使用傳統的NCA損失:
 L(a,u,Z)=?log?(exp?(?d(a,p(u)))∑z∈Zexp?(?d(a,p(z))))(5)L(\mathbf{a}, \mathbf{u}, \mathbf{Z})=-\log \left(\frac{\exp (-d(\mathbf{a}, p(\mathbf{u})))}{\sum_{\mathbf{z} \in \mathbf{Z}} \exp (-d(\mathbf{a}, p(\mathbf{z})))}\right) \quad \quad (5) L(a,u,Z)=?log(∑z∈Z?exp(?d(a,p(z)))exp(?d(a,p(u)))?)(5)
 ZZZ是負樣本集, p(u)p(u)p(u) 、p(z)p(z)p(z)分別表示正樣本和負樣本的代理,aaa是錨點,d(?,?)d(\cdot,\cdot)d(?,?)是兩個點間的歐氏距離。
 上述幾種損失的示意圖如下:
Clustering-Motivated Structured Losses
用到再寫吧
上述的損失函數都存在如下的兩點局限性:
本文基于上述的兩個原因,提出了相應的改進措施,也即本文提出的Ranked List Loss(RRL)。
Methodology
目標是學習可判別的的函數fff(又稱深度度量),以使正樣本對之間的相似度高于特征空間中負樣本對之間的相似度,在這種情況下,給定來自任何類的查詢,旨在從所有其他示例中識別其匹配樣本。
Pairwise Constraint
為了將正負樣本區分開,希望負樣本之間的距離大于某個閾值α\alphaα,并且正樣本之間的距離小于α-m,即正負樣本之間至少有m的間隔?;诖?#xff0c;選擇pairwise margin loss作為基本的承兌對比損失去構造基于集合相似度的結構:
給一個圖像xix_ixi?,目標是將其負樣本點推到比邊界α\alphaα更遠的位置,將其正樣本點推到比另一個邊界α?m\alpha-mα?m更近的位置,因此mmm是兩個邊界的間隔。數學形式:
 Lm(xi,xj;f)=(1?yij)[α?dij]++yij[dij?(α?m)]+(8)L_{\mathrm{m}}\left(\mathrm{x}_{i}, \mathrm{x}_{j} ; f\right)=\left(1-y_{i j}\right)\left[\alpha-d_{i j}\right]_{+}+y_{i j}\left[d_{i j}-(\alpha-m)\right]_{+} \quad \quad(8) Lm?(xi?,xj?;f)=(1?yij?)[α?dij?]+?+yij?[dij??(α?m)]+?(8)
 其中當yi=yjy_i=y_jyi?=yj?時,yij=1y_{ij}=1yij?=1;反之,yij=0y_{ij}=0yij?=0。dij=∥f(xi)?f(xj)∥2d_{ij}=\left\|f(\mathrm{x}_{i})-f(\mathrm{x}_{j})\right\|_{2}dij?=∥f(xi?)?f(xj?)∥2?是兩點間的歐式距離。
Ranked List Loss
給定一個anchor (xix_ixi?),基于相似度對其他樣本進行排序,如下圖所示,在這個排序的結果中,正樣本集Pc,i={xjc∣j≠i}\mathbf{P}_{c, i}=\left\{\mathbf{x}_{j}^{c} | j \neq i\right\}Pc,i?={xjc?∣j?=i},∣Pc,i∣=Nc?1\left|\mathbf{P}_{c,i}\right|=N_{c}-1∣Pc,i?∣=Nc??1中有Nc?1N_c-1Nc??1個正樣本,同樣地,負樣本集Nc,i={xjk∣k≠c}\mathbf{N}_{c,i}=\left\{\mathbf{x}_{j}^{k} | k \neq c\right\}Nc,i?={xjk?∣k?=c},∣Nc,i∣=∑k≠cNk\left|\mathbf{N}_{c, i}\right|=\sum_{k \neq c} N_{k}∣Nc,i?∣=∑k?=c?Nk?中有∑k≠cNk\sum_{k \neq c} N_{k}∑k?=c?Nk?個負樣本。
Non-trivial Sample Mining
對樣本進行合適采樣可以加快模型的收斂速率和提高模型性能,比如常見的難樣本挖掘。本文使用的采樣策略很簡單,就是損失函數不為0的樣本(非平凡樣本有非零損失,由于它們具有零梯度,因此隨著模型的改進,將它們包括在內進行訓練將在梯度融合過程中“削弱”非平凡示例的貢獻),具體來說,對于正樣本,損失函數不為0意味著它們與anchor之間的距離大于α?m\alpha-mα?m, 類似的,對于負樣本,損失函數不為0意味著它們與anchor之間的距離小于α\alphaα。
 挖掘非平凡正樣本和負樣本。對于xix_ixi?,挖掘后的非平凡正樣本集表示為Pc,i?={xjc∣j≠i,dij>(α?m)}P_{c, i}^{*}=\left\{\mathbf{x}_{j}^{c} | j \neq i, d_{i j}>(\alpha-m)\right\}Pc,i??={xjc?∣j?=i,dij?>(α?m)};同理,負樣本集表示為Nc,i?={xjk∣k≠c,dij<α}N_{c,i}^*=\left\{\mathrm{x}_{j}^{k} | k \neq c, d_{i j}<\alpha\right\}Nc,i??={xjk?∣k?=c,dij?<α}。
Loss-based Negative Examples Weighting
 但是存在一個問題就是非平凡負樣本的數量通常比較大,并且它們的損失值幅度范圍也較大,為了更好的利用它們,作者基于他們損失值進行加權。加權的方式為:
 wij=exp?(T?(α?dij)),xjk∈Nc,i?(9)w_{i j}=\exp \left(T \cdot\left(\alpha-d_{i j}\right)\right), \mathrm{x}_{j}^{k} \in \mathrm{N}_{c, i}^{*} \quad \quad \quad(9) wij?=exp(T?(α?dij?)),xjk?∈Nc,i??(9)
 注意到,相對于任何嵌入的梯度幅度在等式(8)中始終為1。數學上:
 ∥?Lm(xi,xj;f)?f(xj)∥2=∥f(xi)?f(xj)∥f(xi)?f(xj)∥2∥2=1(10)\left\|\frac{\partial L_{\mathrm{m}}\left(\mathrm{x}_{i}, \mathrm{x}_{j} ; f\right)}{\partial f\left(\mathrm{x}_{j}\right)}\right\|_{2}=\left\|\frac{f\left(\mathrm{x}_{i}\right)-f\left(\mathrm{x}_{j}\right)}{\left\|f\left(\mathrm{x}_{i}\right)-f\left(\mathrm{x}_{j}\right)\right\|_{2}}\right\|_{2}=1 \quad \quad (10) ∥∥∥∥??f(xj?)?Lm?(xi?,xj?;f)?∥∥∥∥?2?=∥∥∥∥?∥f(xi?)?f(xj?)∥2?f(xi?)?f(xj?)?∥∥∥∥?2?=1(10)
 因此,任何嵌入的梯度大小僅由加權策略wijw_ijwi?j確定。在這種情況下,評估其影響也很方便。在等式中(9),T≥0T≥0T≥0是控制加權負例的程度(斜率)的溫度參數。如果T=0T = 0T=0,它將平等對待所有非平凡的否定例子。如果T=+∞T = +∞T=+∞,它將成為最難的負示例挖掘。
Optimisation Objective
 對于每個anchor, 希望使得它與正樣本集PPP的距離越近越好,并且與負樣本集Nc,iN_{c,i}Nc,i?之間存在著mmm的間隔,同時,我們還希望使得負樣本的之間大于邊界α\alphaα。因此相當于使得同一類別位于一個半徑為α?m\alpha-mα?m大小的超球體內。
 為了將Pc,i?P ^?_{c,i}Pc,i??中所有非平凡的正樣本點匯集在一起并學習一個類超球面,最小化下列損失:
 LP(xic;f)=1∣Pc,i?∣∑xjc∈Pc,i?Lm(xic,xjc;f)(11)L_{\mathrm{P}}\left(\mathrm{x}_{i}^{c} ; f\right)=\frac{1}{\left|\mathbf{P}_{c, i}^{*}\right|} \sum_{\mathbf{x}_{j}^{c} \in \mathbf{P}_{c, i}^{*}} L_{\mathrm{m}}\left(\mathrm{x}_{i}^{c}, \mathrm{x}_{j}^{c} ; f\right) \quad \quad(11)LP?(xic?;f)=∣∣?Pc,i??∣∣?1?xjc?∈Pc,i??∑?Lm?(xic?,xjc?;f)(11)
 不加勸正樣本是因為僅僅存在很少正樣本。同理,為了拉遠Nc,i?N_{c,i}^*Nc,i??中的非平凡負樣本超過邊界α\alphaα,需要最小化下列式子:
 LN(xic;f)=∑xjk∈[Nc,i?]wij∑xjk∈[Nc,1?]wijLm(xic,xjk;f)(12)L_{\mathrm{N}}\left(\mathrm{x}_{i}^{c} ; f\right)=\sum_{\mathbf{x}_{j}^{k} \in\left[\mathbf{N}_{c, i}^{*}\right]} \frac{w_{i j}}{\sum_{\mathbf{x}_{j}^{k} \in\left[\mathbf{N}_{c, 1}^{*}\right]} w_{i j}} L_{\mathrm{m}}\left(\mathrm{x}_{i}^{c}, \mathrm{x}_{j}^{k} ; f\right) \quad \quad (12)LN?(xic?;f)=xjk?∈[Nc,i??]∑?∑xjk?∈[Nc,1??]?wij?wij??Lm?(xic?,xjk?;f)(12)
 因此,整個損失函數為:
 LRLL(xic;f)=LP(xic;f)+λLN(xic;f)(13)L_{\mathrm{RLL}}\left(\mathrm{x}_{i}^{c} ; f\right)=L_{\mathrm{P}}\left(\mathrm{x}_{i}^{c} ; f\right)+\lambda L_{\mathrm{N}}\left(\mathrm{x}_{i}^{c} ; f\right) \quad \quad(13) LRLL?(xic?;f)=LP?(xic?;f)+λLN?(xic?;f)(13)
 λ\lambdaλ控制正負樣本集間的平衡,實驗中設為1。將其他樣本的特征視為常量。 因此,只有f(xic)f(x^c_i)f(xic?)是根據其他元素加權組合的影響進行更新的。
算法流程如下:
 
論文鏈接 : https://arxiv.org/pdf/1903.03238.pdf
總結
以上是生活随笔為你收集整理的Ranked List Loss for Deep Metric Learning | 阅读笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Motivated Word(4)
 - 下一篇: UDP服务器客户端编程流程