1. 程式人生 > 其它 >2021_PCL 《Prototypical Contrastive Learning of Unsupervised Representations》

2021_PCL 《Prototypical Contrastive Learning of Unsupervised Representations》

  論文標題:Prototypical Contrastive Learning of Unsupervised Representations

  論文方向:影象領域,提出原型對比學習,效果遠超MoCo和SimCLR

  論文來源:ICLR2021

  論文連結:https://arxiv.org/abs/2005.04966

  論文程式碼:https://github.com/salesforce/PCL


Part1 概述

  本文提出了一個將對比學習與聚類聯絡起來的無監督表示學習方法:Prototypical Contrastive Learning (PCL) 。該方法解決了逐例項(instance wise)對比學習的基本缺陷。PCL不僅可以為例項判別任務學習低層(low level)特徵,更重要的是它將通過聚類發現的語義結構編碼到學習的嵌入空間中。

  在 PCL 中,作者引入了一個「原型」作為由相似影象形成的簇的質心將每個影象分配給不同粒度的多個原型(每個例項的原型是其增強特徵)。訓練的目標是使每個影象嵌入更接近其相關原型,這是通過最小化一個 ProtoNCE 損失函式來實現的。

        

  fine-grained:細粒度,fine-grained classification是細粒度的影象分類,類內細分。
  coarse-grained:粗粒度,coarse-grained classification是粗粒度的影象分類,類間細分。


Part2介紹

2.1 例項對比學習

  優點:本質上,例項對比學習會產生嵌入空間(embedding space),其中所有例項都很好地分離,並且每個實例都是區域性平滑

的。

  缺點

    1. 利用低層線索就可以區分不同的例項,因此學習到的嵌入不一定捕獲高階語義(有用的語義知識)。 例項分類的準確性通常迅速上升到高水平(10 個時期內> 90%)並且進一步訓練提供的資訊訊號有限。
    2. 不鼓勵表示對資料的語義結構進行編碼。原因:例項對比學習將兩個樣本視為負對,只要它們來自不同的例項,而不管它們的語義相似性。由於生成了數千個負樣本以形成對比損失,導致許多負對共享相似的語義但在嵌入空間中被不希望地分開,這一事實放大了這一點。

  許多最先進的對比學習方法(例如 MoCo 和 SimCLR )都是基於例項辨別的任務。

  例項判別訓練一個網路來分類兩個影象是否來自同一個源影象,如 Figure 1 (a)所示。該網路將每個影象裁剪投影到一個嵌入中,並將同源的嵌入彼此拉近,同時將不同源的嵌入分開。通過解決例項判別任務,期望網路學習到一個有用的影象表示。

         

  Q:區域性平滑?

  A:個人理解:解決零概率問題。為避免在計算中某情況概率計算為0,但實際上是存在(>0)的的情況。參考

  Q:嵌入(Embedding)

  A:Embedding 是一種分散式表示方法,即把原始輸入資料分佈地表示成一系列特徵的線性組合。Embedding 的本質是“壓縮”,用較低維度的 k 維特徵去描述有冗餘資訊的較高維度的 n 維特徵,也可以叫用較低維度的 k 維空間去描述較高維度的 n 維空間。在思想上,與線性代數的主成分分析 PCA,奇異值分解 SVD 異曲同工。

  NLP 中的 Embedding,每一個詞都被表示成指定維度(比如 300 或者 768)的向量,每一個維度對應詞的一種語義特徵。在NLP中,顯然不可能從語言學角度先驗地知道每一個維度具體表示哪一種語義特徵,也沒法知道一個Token對應的特徵值具體是多少,所以這就需要通過語言模型訓練來得到對應的值。

2.2 原型對比學習

  為每個例項分配了幾個不同粒度的原型,並構建了一個對比損失,與其他原型相比,它強制樣本的嵌入與其對應的原型更相似($\Longrightarrow$ 在高層次上,PCL 的目標是找到給定觀測影象的最大似然估計模型引數)。 在實踐中,可以通過對嵌入進行聚類來找到原型。

  作者將原型對比學習制定為一種期望最大化 (EM) 演算法,其目標是通過迭代地逼近和最大化對數似然函式來找到最能描述資料分佈的深度神經網路 (DNN) 的引數。

  具體來說,引入原型作為額外的潛在變數,並通過執行 k 均值聚類來估計它們在 E 步驟中的概率。在 M 步中,通過最小化我們提出的對比損失來更新網路引數,即 ProtoNCE。


Part3PCL

4.1例項對比學習Preliminaries

  給定訓練資料集 $X=\left\{x_{1}, x_{2}, \ldots, x_{n}\right\} $ 即 $n$ 張 image,無監督表示學習網路 $f_{\theta}$ 將 $X$ 對映到 $V=\left\{v_{1}, v_{2}, \ldots, v_{n}\right\}, v_{i}$ 是 $x_{i}$ 的最佳表示,該目標通過逐例項 (instance wise) 的對比學習得到

    $\mathcal{L}_{\mathrm{InfoNCE}}=\sum \limits _{i=1}^{n}-\log \frac{\exp \left(v_{i} \cdot v_{i}^{\prime} / \tau\right)}{\sum_{j=0}^{r} \exp \left(v_{i} \cdot v_{j}^{\prime} / \tau\right)}$

  其中 $v_{i}^{\ \prime}$ 和 $v_{i}$ 是例項 $i$ 的正樣本對,$v_{j}^{\ \prime}$ 包含了一個正樣本嵌入,$r$ 個負樣本嵌入。

  Review:MoCo   

     

  • $v_{i}=f_{\theta}\left(x_{i}\right)$,其中 $f_{\theta}$ 是 encoder 。$v_{i}$ 是從 encoder 中得到。
  • $v_{i}^{\ \prime}=f_{\theta^{\ \prime}}\left(x_{i}\right)$ ,其中 $\theta^{\prime}$ 是$\theta$ 的移動平均(moving average),$f_{\theta^{\ \prime}}$ 為 momentum encoder。$v_{i}^{\ \prime}$ 和 $v_{j}^{\ \prime}$ 是通過 momentum encoder 獲得。

  對於每個 batch :

  1. 隨機增強出 $x^{q} 、 x^{k} $ 兩種 view ;
  2. 分別用 $f_{q} $ , $ f_{k} $ 對輸入進行編碼得到歸一化的 $q $ 和 $ \mathrm{k} $ , 並去掉 $\mathrm{k} $ 的梯度更新 ;
  3. 將 $\mathrm{q} $ 和 $\mathrm{k} $ 中的唯一一個正例做點積得 cosine相似度 ($\mathrm{N \times } 1$) , 再將 $\mathrm{q}$ 和佇列中儲存的K個負樣本做點積得 cosine相似度 ($\mathrm{N \times K}$) , 拼接起來的到 $\mathrm{N \times}(1+\mathrm{K}) $ 大小 的矩陣, 這時第一個元素就是正例,直接計算交叉摘損失, 更新 $f_{q}$ 的引數;
  4. 動量更新 $f_{k} $ 的引數 $\theta_{k}$ : $ \theta_{\mathrm{k}} \leftarrow m \theta_{\mathrm{k}}+(1-m) \theta_{\mathrm{q}}$;
  5. 將 $ \mathrm{k}$ 加入佇列,把隊首的舊編碼出隊,負例最多時有 65536 個。

4.2 PCL

  在PCL中,用 prototype $c$代替$v^{\prime }$,用 per-prototype 集中程度估計(concentration estimation)代替 $\tau$,PCL結構圖如下

        

  在 PCL 中,引入了一個 原型(prototype)作為由相似影象形成的簇的質心。將每個影象分配給不同粒度的多個原型。訓練的目標是使每個影象嵌入更接近其相關原型,這是通過最小化一個 ProtoNCE 損失函式來實現的。

  PCL 的目標是找到給定觀測影象的最大似然估計(MLE)模型引數 $\theta$

    $\theta^{*}= \underset{\theta}{arg \ max} \sum \limits _{i=1}^{n} \log p\left(x_{i} ; \theta\right) $

  我們假設觀察到的資料 $\left\{x_{i}\right\}_{i=1}^{n}$ 與表示資料原型的潛在變數 $C=\left\{c_{i}\right\}_{i=1}^{k}$ 相關。 這樣,我們可以將對數似然函式重寫為:

    $\theta^{*}=\underset{\theta}{\arg \max } \sum \limits _{i=1}^{n} \log p\left(x_{i} ; \theta\right)=\underset{\theta}{\arg \max } \sum \limits_{i=1}^{n} \log \sum \limits_{c_{i} \in C} p\left(x_{i}, c_{i} ; \theta\right) $

  由於無法直接優化上式( $C$ 未知),則根據 Jensen 不等式構建其下界

    $\sum \limits _{i=1}^{n} \log \sum \limits_{c_{i} \in C} p\left(x_{i}, c_{i} ; \theta\right)=\sum \limits_{i=1}^{n} \log \sum \limits_{c_{i} \in C} Q\left(c_{i}\right) \frac{p\left(x_{i}, c_{i} ; \theta\right)}{Q\left(c_{i}\right)} \geq \sum \limits_{i=1}^{n} \sum \limits_{c_{i} \in C} Q\left(c_{i}\right) \log \frac{p\left(x_{i}, c_{i} ; \theta\right)}{Q\left(c_{i}\right)}$

  其中 $Q\left(c_{i}\right)$ 表示原型 c 上的某種分佈,這裡 $\sum \limits _{c_{i} \in C} Q\left(c_{i}\right)=1$。

  為了讓不等式取等號需要 $\frac{p\left(x_{i}, c_{i} ; \theta\right)}{Q\left(c_{i}\right)}$ 為常數

    $\frac{p\left(x_{i}, c_{i} ; \theta\right)}{Q\left(c_{i}\right)}=m$

    $\sum \limits _{c_{i}} p\left(x_{i}, c_{i} ; \theta\right)=\sum \limits _{c_{i}} Q\left(c_{i}\right) m$

    $p\left(x_{i} ; \theta\right)=m$

  進一步使用上述結論 $p\left(x_{i} ; \theta\right)=m$,帶入 $\frac{p\left(x_{i}, c_{i} ; \theta\right)}{Q\left(c_{i}\right)}=m$可得

    $\frac{p\left(x_{i}, c_{i} ; \theta\right)}{Q\left(c_{i}\right)}=m$

    $Q\left(c_{i}\right)=\frac{p\left(x_{i}, c_{i} ; \theta\right)}{m}$

    $Q\left(c_{i}\right)=\frac{p\left(x_{i}, c_{i} ; \theta\right)}{p\left(x_{i} ; \theta\right)}$

    $Q\left(c_{i}\right)=p\left(c_{i} ; x_{i} , \theta\right)$

  上式為E步所需計算的式子(即得到 $Q\left(c_{i}\right)$) ,M步固定$Q\left(c_{i}\right)$(看作常數)最大化下界函式,由於$Q\left(c_{i}\right)$被看作常數,則有

    $\underset{\theta}{\arg \max } \sum \limits _{i=1}^{n} \sum \limits_{c_{i} \in C} Q\left(c_{i}\right) \log \frac{p\left(x_{i}, c_{i} ; \theta\right)}{Q\left(c_{i}\right)}=\underset{\theta}{\arg \max } \sum \limits_{i=1}^{n} \sum \limits_{c_{i} \in C} Q\left(c_{i}\right) \log p\left(x_{i}, c_{i} ; \theta\right)$

  • E Step

  該步驟目的是估計 $p\left (c_{i} ; x_{i} , \theta\right)$,作者在 $v_{i}^{\ \prime}=f_{\theta^{ \ \prime}}\left(x_{i}\right)$特徵上執行k-means演算法,將 prototype $c_i$看作第 $i$ 個簇的中心點,作者定義

    $p\left(c_{i} ; x_{i} , \theta\right)=\left\{\begin{array}{lr}1 & \text { if } x_{i} \text { belongs to cluster } c_{i} \\0 & \text { otherwise }\end{array}\right.$

  • M Step

  基於E步,現在可以最大化下界函式

  $\sum \limits _{i=1}^{n} \sum \limits _{c_{i} \in C} Q\left(c_{i}\right) \log p\left(x_{i}, c_{i} ; \theta\right)=\sum \limits _{i=1}^{n} \sum \limits _{c_{i} \in C} p\left(c_{i} ; x_{i}, \theta\right) \log p\left(x_{i}, c_{i} ; \theta\right) =\sum \limits _{i=1}^{n}\sum \limits_{c_{i} \in C} \mathbb{1}\left(x_{i} \in c_{i}\right) \log p\left(x_{i}, c_{i} ; \theta\right)$

  作者假設每個 cluster $c_i$ 的先驗分佈都滿足均勻分佈,因為我們沒有提供任何樣本,即

    $p\left(x_{i}, c_{i} ; \theta\right)=p\left(x_{i} ; c_{i}, \theta\right) p\left(c_{i} ; \theta\right)=\frac{1}{k} \cdot p\left(x_{i} ; c_{i}, \theta\right)$

  作者假設每個prototype周圍的分佈是各向同性的高斯分佈,則可得出

    $p (x_{i} ; c_{i}, \theta )=\exp ({\large \frac{- (v_{i}-c_{s} )^{2}}{2 \sigma_{s}} } ) / \sum \limits _{j=1}^{k} \exp ({\large \frac{- (v_{i}-c_{j} )^{2}}{2 \sigma_{j}^{2}} } )$

  其中 $x_{i} \in c_{s}, v_{i}=f_{\theta}\left(x_{i}\right) $, 如果給 $c$ 和 $v$ 都施加 $\ell_{2}$ 正則化,則 $(v-c)^{2}=2-2 v \cdot c$ 。

  綜合上述內容,M步需要優化的式子如下

    $\theta^{*}=\underset{\theta}{\arg \min } \sum \limits _{i=1}^{n}-\log {\large \frac{\exp \left(v_{i} \cdot c_{s} / \phi_{s}\right)}{\sum_{j=1}^{k} \exp \left(v_{i} \cdot c_{j} / \phi_{j}\right)}} $

  其中$\phi$表示原型周圍特徵分佈的集中程度。

  發現上式與 InfoNCE 相似,因此 $\operatorname{lnfoNCE}$ 可以看作最大對數似然估計的特例:$v_{i}$ 的 prototype 是與其相同例項的增強特徵 $v_{i}^{\prime}$ (即 $c=v^{\prime}$) ,並且每個例項周圍的特徵分佈集中程度(concentration) 都是固定的(即 $\phi=\tau$ )。

  在實際實現中,作者採用與NCE相同的方法,取樣 r 個負 prototype 來計算正則化項。為了能對 編碼層次結構的 prototype 有更 robust 的概率估計,作者用不同的聚類數量 $ K=\left\{k_{m}\right\}_{m=1}^{M}$ 進行 M 次聚類,此外作者增加 InfoNCE loss 來保持區域性光滑性並引導聚類。最終的目標函式 ProtoNCE 如下

    $\mathcal{L}_{\text {ProtoNCE }}=\sum \limits _{i=1}^{n}- {\large (\log \frac{\exp (v_{i} \cdot v_{i}^{\prime} / \tau )}{\sum \limits_{j=0}^{r} \exp (v_{i} \cdot v_{j}^{\prime} / \tau )}} +\frac{1}{M} \sum \limits_{m=1}^{M} \log {\large \frac{\exp (v_{i} \cdot c_{s}^{m} / \phi_{s}^{m} )}{\sum \limits_{j=0}^{r} \exp (v_{i} \cdot c_{j}^{m} / \phi_{j}^{m} )} )} $

4.3Concentration estimation

  由於不同 prototype 周圍的 embedding 的分佈都有不同程度的集中程度(concentration),因此作者使用 $\phi$對其估計($\phi$值越小集中程度越大),我們使用同一簇 $c$ 內的 momentum 特徵 $\left\{v_{z}^{\prime}\right\}_{z=1}^{Z}$ 計算 $\phi$ 。

  我們期望$\phi$在以下兩個情況時值很小:

    • $v_{z}^{\prime}$和$c$之間的平均距離很小。
    • 簇包含的很多特徵點(即 $Z$ 很大)。

  因此定義$\phi$為

    $\phi=\frac{\sum \limits _{z=1}^{Z}\left\|v_{z}^{\prime}-c\right\|_{2}}{Z \log (Z+\alpha)}$

  其中,$\alpha$為平滑變數保證小簇不會出現過大的$\phi$,我們對每組 prototype ($C^M$ 組)的$\phi$ 進行歸一化,使其為 $\tau$ 的均值。

4.4 演算法

        

        


5 實驗

5.1Low-shot image classification

        

  實驗在VOC07和Places205資料集上利用框架學到的表示使用 SVM 做影象分類實驗。左 mAP、右ACC。

5.2Semi-supervised image classification

  執行半監督學習實驗來評估學習的表示是否可以為微調提供良好的基礎。(半監督)

        

  PCL 的 batch size =256

  SwAV uses multi-crop augmentation.

  SimCLR, BYOL, and SwAV use alarge batch size of 4096

5.3 IMAGE CLASSIFICATION BENCHMARKS

        

    帶 * 的是預訓練模型,帶 + 的是經過10-crop的。

    SwAV uses multi-crop augmentation.

    SimCLR, BYOL, and SwAV use alarge batch size of 4096

  1-crop和10-crop顧名思義就是進行1次和10次裁剪。舉個例子輸入影象是256×256的,網路訓練所需影象是224×224的。

  1-corp是從256×256影象中間位置裁一個224×224的影象進行訓練,而10-corp是先從中間裁一個224×224的影象,然後從影象左上角開始,橫著數224個畫素,豎著數224個畫素開始裁剪,同樣的方法在右上,左下,右下各裁剪一次。就得到了5張224*224的影象,映象以後再做一遍,總共就有10張圖片了。

5.4CLUSTERING EVALUATION

        

       

    比較不同聚類數下,使用K-means的AMI。

  AMI 用來衡量兩個分佈的吻合程度,取值範圍[-1,1],值越大聚類效果與真實情況越吻合。

5.5OBJECT DETECTION

        

    Table 6 reports the average mAP across three runs

-----------------------------------------------完-----------------------------------------------

因上求緣,果上努力