您當前的位置:首頁 > 體育

【ICCV2021】PaCo:將對比學習用在長尾識別上

作者:由 套娃的套娃 發表于 體育時間:2021-08-08

原文

motivation

之前工作有人將對比學習loss擴充套件到利用標籤資訊的有監督對比學習loss,利用該loss進行預訓練backbone,之後fix住backbone,訓練後續的線性分類層來進行第二階段的訓練。但作者透過理論分析發現對於頻率高的類別(head)會比低頻率類別(tail)有更高的lower bound,因此模型會更偏向head類別(即head類別能夠更有效的最佳化)

上述結論作者也經過了實驗證明,簡要說一下這個實驗,首先作者在MoCo模型的基礎上進行的實驗,給定一個具有兩個view的資料batch

B=(B_{v1},B_{v2})

和label

y

,其中

B_{v1}

為query網路的輸入得到

Z_{v1}

B_{v2}

為key網路的輸入得到

Z_{v2}

(key網路採取動量更新,

Z_{v2}

會被用於更新momentum queue),針對樣本

i

的對比學習損失定義如下:

\mathcal{L}_i=-\sum_{z_+\in\mathcal{P}(i)}\log\frac{\exp(z_+\cdot T(x_i))}{\sum_{z_k\in A(i)}\exp(z_k\cdot T(x_i))}\\

其中,

x_i

為在

 B_{v1}

中的影象

X_i

的特徵表示,

T()

為transform層,也屬於query網路,並且

A(i)=\{z_k\in queue\ \cup\ Z_{v1}\ \cup\ Z_{v2}\}\backslash\{z_k\in Z_{v1}:k=i\}

,即包含queue和query,key網路所有的輸出,但不包括query網路輸出的

x_i

自身,

P(i)=\{z_k\in A(i):y_k=y_i\}

,即

A(i)

中所有label與

i

相同的部分。則實際實現時對所有樣本的對比學習損失求和並用

\frac{1}{|P(i)|}

進行歸一化,並且和對比學習一樣加上了超引數

\tau

則實驗結果如下,其中第二行為上述損失函式的結果,第一行則是傳統的CE損失,最後一行是本文提出的損失函式結果(先不管)

【ICCV2021】PaCo:將對比學習用在長尾識別上

則作者透過理論分析得出

第一個結論1

:當supervised contrastive loss(即上述loss)收斂時,隨機兩個樣本是以 label 為

y

的正樣本對的機率的最優值為

\frac{1}{K_y}

,其中

K_y\approx len(queue)\cdot q(y)

,其中

q(y)

為整個資料集上 label 為

y

的機率

作者認為上述結論說明,高頻率類別(head類別)可以提供higher lower bound(即更好的lower bound),因此訓練過程會偏向這些類別,而為了解決這個問題,作者提出了新的損失函式

Rebalance in Contrastive Learning : Parametric Contrastive Learning (PaCo)

【ICCV2021】PaCo:將對比學習用在長尾識別上

整個loss的流程如上圖所示,首先作者構建一個class-wise的可學習變數集合

C=\{c_1,...,c_n\}

,並且將上述有監督對比學習loss函式更改為如下形式

\mathcal{L}_i=\sum_{z_+\in P(i)\cup\{c_y\}}-w(z_+)\log\frac{\exp(z_+\cdot T(x_i))}{\sum_{z_k\in A(i)\cup C}\exp(z_k\cdot T(x_i))}\\

其中

w(z_+)= \begin{align} \left\{ \begin{array} \ &\alpha,\quad z_+\in P(i)\\ &1.0,\quad z_+\in \{c_y\} \end{array} \right. \end{align}\\

z\cdot T(x_i)= \begin{align} \left\{ \begin{array} \ &z\cdot \mathcal{G}(x_i),\quad x_i\in A(i)\\ &z\cdot\mathcal{F}(x_i),\quad z\in C \end{array} \right. \end{align}\\

其中

\mathcal{G}

是兩層的mlp,

\mathcal{F}(x)=x

\alpha\in(0,1)

為超引數。實際實現是對所有

i

求和並用

\frac{1}{\sum_{z_+\in P(i)\cup\{c_y\}}w(z_+)}

歸一化,並且仍新增超引數

\tau

經過作者理論分析,又

得到一個結論2

:當 parametric contrastive loss(PaCo)收斂時,隨機兩個樣本是以 label 為

y

的正樣本對的機率的最優值為

\frac{\alpha}{1+\alpha\ \cdot\ K_y}

,並且一個樣本距離

C

中與自己對應的中心

c_y

最近的機率的最優值為

\frac{1}{1+\alpha\ \cdot\ K_y}

,其中

K_y\approx len(queue)\cdot q(y)

,其中

q(y)

為整個資料集上 label 為

y

的機率

假設最頻繁的類別

y_h

與最不頻繁的類別

y_t

,有

K_{y_h}\approx len(queue)\cdot q(y_h)

K_{y_t}\approx len(queue)\cdot q(y_t)

,則根據上面提到的兩個結論1,2,兩個樣本是正樣本對的機率最優值從head類到tail類的變化由結論1中的

\frac{1}{K_{y_h}}\rightarrow \frac{1}{K_{y_t}}

被rebalance成結論2中的

\frac{\alpha}{1+\alpha\ \cdot\ K_{y_h}}\rightarrow \frac{\alpha}{1+\alpha\ \cdot\ K_{y_t}}=\frac{1}{\frac1\alpha+\ K_{y_h}}\rightarrow \frac{1}{\frac1\alpha+K_{y_t}}

,而

\alpha

數值越小(分母中

\frac1\alpha

項佔主導),head類和tail類的機率越相似,越對tail類別友好

但當

\alpha

數值越低,樣本之間的對比強度會減小,而樣本和中心簇的對比強度會增大,則整個loss越趨向於有監督的交叉熵,因此作者設定

\alpha=0.05

PaCo under balanced setting

作者之後分析了資料是均衡的情況下,該loss的變化

首先當資料是均衡情況下,對於任何

i,j

都有

q^*=q(y_i)=q(y_j)

K^*=K_{y_i}=K_{y_j}

,而PaCo loss則變為一個基於CE和supervised contrastive loss 加權和的改進版本,具體推導如下

\begin{aligned} \mathcal{L}_{i} &=\sum_{z_{+} \in P(i) \cup\left\{c_{y}\right\}}-w\left(z_{+}\right) \log \frac{\exp \left(z_{+} \cdot T\left(x_{i}\right)\right)}{\sum_{z_{k} \in A(i) \cup {C}} \exp \left(z_{k} \cdot T\left(x_{i}\right)\right)} \\ &=-\log \frac{\exp \left(c_{y} \cdot \mathcal{F}\left(x_{i}\right)\right)}{E x p S u m}-\alpha \sum_{z_{+} \in P(i)} \log \frac{\exp \left(z_{+} \cdot \mathcal{G}\left(x_{i}\right)\right)}{\operatorname{ExpSum}} \\ &=\mathcal{L}_{\text {sup }}+\alpha \mathcal{L}_{\text {supcon }}-\left(\log P_{\text {sup }}+\alpha K^{*} \log P_{\text {supcon }}\right) \\ &=\mathcal{L}_{\text {sup }}+\alpha \mathcal{L}_{\text {supcon }}-\left(\log P_{\text {sup }}+\alpha K^{*} \log \left(1-P_{\text {sup }}\right)\right) \end{aligned}\\

其中

ExpSum=\sum_{c_k\in C}\exp(c_k\cdot\mathcal{F}(x_i))+\sum_{z_k\in A(i)}\exp(z_k\cdot \mathcal{G}(x_i))\\

P_{sup}=\frac{\sum_{c_k\in C}\exp(c_k\cdot \mathcal{F}(x_i))}{ExpSum}\\ P_{supcon}=\frac{\sum_{z_k\in A(i)}\exp(z_k\cdot \mathcal{G}(x_i))}{ExpSum}

上述推導部分解釋:首先很顯然我們為了書寫方便定義了

ExpSum

:在

A(i)\cup C

上的

exp

操作之和。第二個等號為按照之前的 PaCo loss的定義將其按照

z_+

P(i)

\{c_y\}

上展開。第三個等號中因為

c_y

為可學習變數,其表示類別

y

的中心簇,即相當於fc層關於類別

y

的權重,因此第二個等號的第一項

\log

裡面可以看作一個 softmax 操作,因此整體第一項可以看作是一個交叉熵

\mathcal{L}_{sup}

,後面應該就是變形能得到的了(後面我也沒太推出來,有時間再更完整)

Analysis of PaCo under balanced setting

由於相比於正常的多工學習損失,PaCo損失函式後面還帶了一項額外的損失

\mathcal{L}_{extra=}-\log P_{\text {sup }}-\alpha K^{*} \log \left(1-P_{\text {sup }}\right)\\

則針對該額外 loss 項作者又給出了進一步的分析,有時間再補~~~~

標簽: loss  類別  樣本  paco  head