您當前的位置:首頁 > 收藏

Multi-Similarity Loss使用通用對加權進行深度度量學習-CVPR2019

作者:由 鷹隼王間 發表于 收藏時間:2020-02-22

Multi-Similarity Loss with General Pair Weighting for Deep Metric Learning

原文

code

摘要

在深度度量學習(

deep metric learning

)中,有一系列的基於對(

pair-based

)的損失函式被提出。但是都沒有提出一個統一的框架去理解這些損失函式,論文中提出了一種通用的加權框架,去理解這些基於對(

pair-based

)的損失函式。文中將這種框架稱為通用的對加權(

General Pair Weighting, GPW

),其將深度度量學習中的取樣問題看成透過梯度分析的對加權問題。透過使用

GPW

,可以比較並且更好的理解現有的基於對(

pair-based

)的方法的明顯不足與關鍵限制。論文中還在GPW的框架下提出了一個新的損失函式叫多相似性損失(

multi-similarity loss, MS loss

),該方法主要分為兩個迭代步驟,即挖掘(

mining

)和加權(

weighting

)。

MS loss

在影象檢索任務中達到了目前最好,在CUB200和In-Shop Clothes Retrieval dataset。

General Pair Weighting(GPW)

GPW框架

x_i\in \mathbb{R}^d

是一個實值的例項向量(可以理解為CNN中的

fc

的輸出),然後我們有一個例項矩陣

X\in \mathbb{R}^{m\times d}

(其中

m

可以理解為

batch_size

),和一個標籤向量

y\in \{1,2,\ldots ,C\}^m

。然後例項

x_i

透過一個函式

f(\cdot;\theta):\mathbb{R} \rightarrow S^l

對映到一個一個

l

維度的單位空間,這裡的

f

指的是帶有引數

\theta

的神經網路。然後我們定義兩個樣例的相似性

S_{ij}:=<f(x_i;\theta),f(x_j;\theta)>

,其中

<\cdot,\cdot>

指的是點成(dot product),得到一個相似性矩陣

S

,其

(i,j)

位置的元素表示為

S_{ij}

對於一個基於對(pair-based)的損失函式

\mathcal{L}

,其可以表示為

S

y

的函式:

\mathcal{L}(S,y)

。對於模型引數

\theta

在第

t

次迭代中的導數可以表示為:

\begin{array}[l] s \frac{\partial\mathcal{L}(S,y)}{\partial\theta}\mid_t&=\frac{\partial \mathcal{L}(S,y)}{\partial S}|_t\frac{\partial S}{\partial\theta}|_t \\ &=\sum_{i=1}^{m}\sum^{m}_{j=1}\frac{\partial\mathcal{L}(S,y)}{\partial S_{ij}}|_t\frac{\partial S_{ij}}{\partial\theta}|_t   \tag{1} \end{array}

公式(

1

)為了對加權,可以透過一個新的函式

\mathcal{F}

寫成一個新的形式,

\mathcal{F}

可以寫成下式:

\mathcal{F}(S,y)=\sum_{i=1}^m\sum_{j=1}^m \frac{\partial\mathcal{L}(S,y)}{\partial S_{ij}}|_t S_{ij}.  \tag{2}

其中

 \frac{\partial\mathcal{L}(S,y)}{\partial S_{ij}}|_t

是不包含

\theta

的常量。

因為深度度量學習的中心思想就是讓正例對更近,讓反例對更遠。對於一個基於對(pair-based)的損失函式

\mathcal{L}

,假設

\frac{\partial\mathcal{L}(S,y)}{\partial S_{ij}}|_t \geq 0

是反例對,並且

\frac{\partial\mathcal{L}(S,y)}{\partial S_{ij}}|_t \leq 0

是正例對。因此公式(

2

)可以變換成下面這種對加權的形式:

\begin{align} \mathcal{F}&=\sum_{i=1}^m(\sum_{y_j\neq y_i}^m\frac{\partial\mathcal{L}(S,y)}{\partial S_{ij}}|_t S_{ij}+\sum_{y_j=y_i}^m \frac{\partial\mathcal{L}(S,y)}{\partial S_{ij}}|_t S_{ij})\\ &=\sum_{i=1}^m(\sum_{y_j\neq y_i}^mw_{ij}S_{ij}-\sum_{y_j=y_i}^mw_{ij}S_{ij}),  \tag{3} \end{align}

其中

w_{ij}=\left| \frac{\partial\mathcal{L}(S,y)}{\partial S_{ij}}|_t \right|.

正如公式(

3

)中表示的一樣,基於對(

pair-based

)的方法能夠被公式化為一個逐對(

pair-wise

)加權的相似性表達,這裡對於對

\{x_i,x_j\}

的權重是

w_{ij}

。公式(

3

)就是通用的對加權(

GPW

)公式。

Contrastive loss

[1]

可以表示成下式:

\mathcal{L}_{contrast}:=(1-\mathcal{I}_ij)[S_{ij}-\lambda]_+-\mathcal{I_{ij}}S_{ij}  \tag{4}

其中

\lambda

是設定的閾值,

\mathcal{I_{ij}}=1

指的是一個正例對,

\mathcal{I_{ij}}=0

是一個反例對。透過公式(

4

)可以看出所有的正例對和

S_{ij}>\lambda

的反例對是相等權重。

Triplet loss

[2]

可以表示成下式:

\mathcal{L}_{triplet}:=[S_{an}-S_{ap}+\lambda]_+ \tag{5}

其中

\lambda

是設定的閾值,

S_{an}

S_{ap}

指的是反例對

\{x_a,x_n\}

和正例對

\{x_a,x_p\}

的相似性。雖然其和

Contrastive loss

選擇對的機制不同,但是還是等權重的去選擇對。

Lifted Structure Loss

[3]

:利用了

mini-batch

中的所有正反例對,表示如下:

\mathcal{L}_{lifted}:=\sum_{i=1}^m\left[\log\sum_{y_k=y_i}e^{\lambda -S_{ik}} +\log\sum_{y_k\neq y_i}e^{S_{ik}}   \right ]_+ \tag{6}

其中

\lambda

是設定閾值,在公式(

6

)中,我們有一個加權值

w_{ij}

對於對(

pair

\{x_i,x_j\}

,根據公式(

3

\mathcal{L}_{lifted}

關於

S_{ij}

求導,得到正例對的權重如下:

w_{ij}^+=\frac{e^{\lambda-S_{ij}}}{\Sigma_{y_k=y_i}e^{\lambda -S_{ik}}}=\frac{1}{\Sigma_{y_k=y_i}e^{S_{ij}-S_{ik}}} \tag{7}

反例對的權重:

w_{ij}^-=\frac{e^{S_{ij}}}{\Sigma_{y_k\neq y_i}e^{S_{ik}}}=\frac{1}{\Sigma_{y_k\neq y_i}e^{S_{ik}-S_{ij}}} \tag{8}

Binomial Deviance Loss

[4]

:利用

softplus

函式而不是

Contrastive loss

中的鉸鏈函式,可表示如下:

\mathcal{L}_{binomial}=\sum_{i=1}^m\left\{ \frac{1}{P_i}\sum_{y_j=y_i} \log\left[1+e^{\alpha(\lambda-S_{ij})} \right] + \frac{1}{N_i}\sum_{y_j\neq y_i}\log \left[1+e^{\beta(S_{ij}-lambda)} \right] \right\} \tag{9}

其中

P_i

N_i

指的是正例對和反例對的數,

\lambda,\alpha, \beta

是固定的超引數。其對於對(

pair

\{x_i,x_j\}

的加權值,由

\mathcal{L}_{binomial}

S_{ij}

求導得:

\begin{align} w_{ij}^+=\frac{1}{P_i}\frac{\alpha e^{\alpha(\lambda-S_{ij})}}{1+e^{\alpha(\lambda-S_{ij})}}, &   &y_j=y_i\\ \tag{10} w_{ij}^-=\frac{1}{N_i}\frac{\beta e^{\beta(S_{ij}-\lambda)}}{1+e^{\beta(S_{ij}-\lambda)}},&     &y_j\neq y_i   \end{align}

Binomial Deviance Loss

是一個軟版本的

Contrastive loss

,即加權版本的,會對反例對中有更高相似性的賦予更大的權重去最佳化。

多重相似性(

Multiple Similarities)

Multi-Similarity Loss使用通用對加權進行深度度量學習-CVPR2019

S:Self-similarity:

從自身對計算而來,是最重要的相似性。一個反例對有一個更大的餘弦相似對意味著從不同的類別中區分兩對樣例是更困難的。這樣的對被視為硬反例對(

hard negative pairs

),他們有更多的資訊並且更有意義去學習一個可區分的特徵。

Contrastive loss

Binomial Deviance Loss

就是基於這個準則,如圖

case-1

,當反例樣例變得更近的時候,三個反例對的權重是被增加的。

N: Negative relative similarity

:透過考慮附近反例對的關係計算而來的,如圖

case-2

,即使自相似度(

self-similarity

)不變,相對相似度也減少。這是因為附近的反例樣例變得更近,增加了這些對的自相似度(

self-similarity

),所以減少了相對相似度。

Lifted Structure Loss

就是基於這個的。

P:Positive relative similarity

:相對相似度也考慮其他的正例對的關係,如果

case-3,

當這些正例樣例變得和

anchor

更近的時候,當前對的相對相似度就變小了,因此該對的權重也變小。

Triplet loss

就是基於這個相似度。

Multi-Similarity Loss

主要分為兩步:

1.

首先透過

Similarity-P

來將資訊豐富的對取樣;2。 然後使用

Similarity-S

Similarity-N

一起給選擇的對加權。

Pair mining:

首先透過計算

Similarity-P

來選擇資訊豐富的對。明確的說就是,一個反例對是和最難的正例(hardest positive pair,就是有最小的相似度)比較,一個反例對是和有最大相似性的反例對比較。設

x_i

是一個

anchor

,一個反例對

\{x_i,x_j\}

被選中滿足下面的情況:

S_{ij}^->\min_{y_k=y_i}S_{ik}-\epsilon, \tag{11}

一個正例對

\{x_i,x_j\}

被選中滿足下面的情況:

S_{ij}^+<\max_{y_k\neq y_i}S_{ik}+\epsilon.  \tag{12}

其中

\epsilon

是一個給定的閾值。文中的難例挖掘(

hard mining strategy

)靈感來源於

[5]

Pair weighting:Pair ming

中能夠粗濾的選中豐富資訊的對,丟掉資訊匱乏的對。文中透過考慮

Similarity-S

Similarity-N

,進一步的軟加權選中的樣例。文中的軟加權是靈感來源於

Binomial Deviance Loss

(考慮了

Similarity-S

)和

Lifted Sturcture Loss

(使用了

Similarity-N

)。明確的說,對一個選中的反例對

\{x_i,x_j\}\in \mathcal{N}_i

其權重

w_{ij}^-

被計算如下

\begin{align} w_{ij}^-&=\frac{1}{e^{\beta(\lambda-S_{ij})}+\sum_{k\in\mathcal{N}_i}e^{\beta(S_{ik}-S_{ij})}}\\ &=\frac{e\beta(S_{ij}-\lambda)}{1+\sum_{k\in\mathcal{N_i}}e^{\beta(S_{ij}-\lambda)}}.\tag{13} \end{align}

正例對

\{x_i,x_j\}\in\mathcal{P_i}

的權重

w_{ij}^+

計算如下:

w_{ij}^+=\frac{1}{e^{-\alpha(\lambda-S_{ij})}+ \sum_{k\in\mathcal{P_i}} e^{-\alpha(S_{ik}-S_{ij})}}, \tag{14}

其中

\alpha,\beta,\lambda

是超引數。公式(13)中的反例對的權重是透過聯合計算其自相似度(

self-similarity

)和相對相似度中的

Similarity-N

而來,正例對的權重與之類似。

透過整合

Pair mining

Pair weighting

得到

multi-similarity(MS) loss

如下:

\mathcal{L}_{MS}=\frac{1}{m} \sum_{i=1}^m \left\{ \frac{1}{\alpha}         \log[1+\sum_{k\in\mathcal{P_i}}e^{-\alpha(S_{ik}-\lambda)}]+ \frac{1}{\beta}        \log[1+\sum_{k\in\mathcal{N_i}}e^{\beta(S_{ik}-\lambda)}] \right\}.\tag{15}

實驗結果

Multi-Similarity Loss使用通用對加權進行深度度量學習-CVPR2019

Multi-Similarity Loss使用通用對加權進行深度度量學習-CVPR2019

Multi-Similarity Loss使用通用對加權進行深度度量學習-CVPR2019

Multi-Similarity Loss使用通用對加權進行深度度量學習-CVPR2019

總結

本文主要是提出了一個統一的框架(

GPW

)去度量每一個基於對的損失函式,然後提出了一個逐對挖掘(pair mining)和軟加權(

pair weighting

)的損失函式。其中的

pair mining

和目標檢測中的

hard sample mining

很像,

pair weighting

focal loss

中軟加權很像,該文章公式比較多,如果一次讀不懂,建議多讀幾遍。有什麼問題歡迎各位留言討論。

參考

^

R。 Hadsell, S。 Chopra, and Y。 LeCun。 Dimensionality reduction by learning an invariant mapping。 In CVPR, 2006。 1, 2, 3, 4

http://yann。lecun。com/exdb/publis/pdf/hadsell-chopra-lecun-06。pdf

^

E。 Hoffer and N。 Ailon。 Deep metric learning using triplet network。 In SIMBAD, 2015。 1, 2, 3, 4

https://arxiv。org/pdf/1412。6622

^

H。 Oh Song, Y。 Xiang, S。 Jegelka, and S。 Savarese。 Deep metric learning via lifted structured feature embedding。 In CVPR, 2016。 1, 2, 3, 4, 5, 6, 7

http://cvgl。stanford。edu/papers/song_cvpr16。pdf

^

D。 Yi, Z。 Lei, and S。 Z。 Li。 Deep metric learning for practical person re-identification。 arXiv:1407。4979, 2014。 1, 2, 3, 4

https://arxiv。org/pdf/1407。4979

^

K。 Q。 Weinberger, J。 Blitzer, and L。 K。 Saul。 Distance metric learning for large margin nearest neighbor classification。 In NIPS。 2006。 6

https://papers。nips。cc/paper/2795-distance-metric-learning-for-large-margin-nearest-neighbor-classification。pdf

標簽: 反例  pair  正例  loss  Similarity