論文解讀(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。


Part3 PCL

3.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 個。

3.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} )} )} $

3.3 Concentration 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$ 的均值。

3.4 算法

        

        


Part4 實驗

4.1 Low-shot  image classification

        

   實驗在VOC07和Places205數據集上利用框架學到的表示使用 SVM 做圖像分類實驗。左 mAP、右ACC。

4.2 Semi-supervised image classification

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

        

4.3 IMAGE CLASSIFICATION BENCHMARKS

        

  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張圖片了。

4.4 CLUSTERING EVALUATION

        

       

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

4.5 OBJECT DETECTION

        

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM