Improving Contrastive Learning by Visualizing Feature Transformation【ICCV21Oral】【閱讀筆記】


目前正負樣本的構造和選擇大部分還是采用數據增強,依賴於人的經驗和直覺,可能並不是有效的,也缺少可解釋性。

本文在特征層面進行data manipulation來提供更加explainable和effective的正負樣本。
首先,觀察訓練過程中anchor/positive以及anchor/negative對之間的相似度變化
然后,通過改變MoCo中的momentum值,觀察相似度變化對性能的影響
最后基於上述觀察,提出針對正樣本的extrapolation操作和針對負樣本的interpolation操作。

實際上作者說了一堆,在代碼層面具體只是改動了InfoNCE loss的計算公式。

對比學習流程

image
anchor x經過兩個不同的數據增強\(𝑡_𝑞,𝑡_𝑘\),分別會得到兩個view,構成了正樣本。然后經過兩個encoder分別映射到不同的特征空間,最后用L2 norm規范化到unit sphere得到\(𝑧_𝑞,𝑧_𝑘\). 用\(z_q,z_k\)計算內積得到余弦相似度,也就是對應的positive pair score \(S_{q\cdot k^+}\) 和K個negative pair score \(S_{q\cdot k^-}\).用這些score計算得到InfoNCE loss:$$L = -log[\frac{exp(S_{q\cdot k^+}/\tau)}{exp({S_{q\cdot k^+}/\tau})+\sum_Kexp(S_{q\cdot k^-}/\tau)}]$$
文章中所指的特征變換的過程就是對encoder的embedding進行操作的過程,目前最常用的就是L2規范化。文章當中選取了正負樣本對的score進行可視化。一個原因是可視化InfoNCE的輸入對可以幫助理解對比學習的過程;另一個原因是特征是高維的,不利於觀察樣本特性,而score是一維且值域在[-1,1]。

Visualization with MoCo

使用MoCo架構進行可視化。
首先通過調整momentum參數對性能的影響。隨着m的減小(encoder更新速度增加),准確率呈現倒U型趨勢。

Neg score

而在對score分布數據的可視化中可以看到,m變小,encoder更新速度增大,每個training step中的特征變化變快,負樣本隊列中negative score的variance(或稱為incosistency)變大。variance相對比較穩定效果比較好。

neg score的均值反應的時memory queue中所有負樣本的approximate score。如果他在訓練過程中劇烈波動,那么對應的損失函數和梯度也會劇烈波動,就會導致不收斂。

總的來說,要訓練一個更好的pre-trained模型,和有監督學習也是類似的,需要使訓練過程中梯度以及負樣本在分數分布上保持穩定性和光滑性。

Pos score

比較小的m不僅表示的使更快的更新速度,還表示encoder之間具有更大的相似度。encoder之間越相似,那么\(z_q\)\(z_{k^+}\)之間不相似度越低,只留下了數據增強所帶來的view variance,positive score相對比較高。通過增大m,可以得到harder positive,transfer准確度也提高。實際上這和InfoMin原則使匹配的,提升view variance,增加互信息,那么encoder學到的embedding就更魯棒。

為了得到穩定光滑的score分布和梯度,使用一些特征變換減小positive score得到harder positives。

特征變換

InfoNCE的目標是在特征空間拉近anchor和正樣本的距離,推遠他和負樣本的距離。因此可以直接在pos/neg樣本特征上進行特征變換,提供更加合適的正則化或是讓學習過程更困難。具體到本文,對於正樣本作者設計了extrapolation來增加正樣本的難度,用interpolation增加負樣本的多樣性。作者在文中指明,這樣的操作並不是更改了loss項,而是改變了原來計算loss時使用的score。

image

Positive Extrapolation

前面已經通過可視化說明了,降低positive score可以得到難正樣本,對訓練結果有益。因此希望找到一種方式直接變換特征,使他們之間的view variance在訓練過程中增加。

首先用加權和的方式生成新特征:

\[\widehat{z}_q = \lambda_{ex}z_q+(1-\lambda_{ex})z_{k^+} \]

\[\widehat{z}_{k^+} = \lambda_{ex}z_{k^+}+(1-\lambda_{ex})z_q \]

這里參考Mixup的思想,讓兩個權值和為1.同時我們希望新的到的特征的pos score \(\widehat{S}_{q\cdot k^+}\)要小於原score \(S_{q\cdot k^+}\)

\[\widehat{S}_{q\cdot k^+}=2\lambda_{ex}(1-\lambda_{ex})(1-S_{q\cdot k^+})+S_{q\cdot k^+}\leq S_{q\cdot k^+} \]

為了保證上式成立,需要滿足\(\lambda_{ex}\geq1\).因此作者在文章從Beta分布中采樣得到\(\lambda_{ex}\backsim Beta(\alpha_{ex}, \alpha_{ex})+1\)

在實驗中發現,當\(\alpha_{ex} < 1\)時,會容易采樣得到極大或極小的\(\lambda_{ex}\),帶來過多或過少的hardness,效果不如\(\alpha_{ex} > 1\),此時 \(\lambda_{ex}=1.5\)概率比較高。

Negative Interpolation

定義MoCo中的負樣本隊列為\(Z_{neg}={z_1, z_2, ..., z_K}\)\(Z_{perm}\)是隊列的隨機排列。對兩個隊列進行插值得到新的隊列

\[\widehat{Z}_{neg}=\lambda_{in}\cdot Z_{neg}+(1-\lambda_{in})\cdot Z_{perm} \]

\[\lambda_{in}\backsim Beta(\alpha_{in}, \alpha_{in}) \]

對隊列隨機排列以及\(\lambda_{in}\)保證了訓練中負樣本隊列的多樣性。實際上是提升了sample variance(diversity)。這種方式並不是簡單的擴展隊列中的負樣本數,也不是圖像級的mixup。

Discussion

作者在實驗中比較了幾個問題:

  • FT和擴展負樣本數目:
    之前的工作說明了負樣本數目增加是有利於表現的,因為可以提升互信息的下界。實際上文中提出的negative interpolation也可以看作是一種增加負樣本的方式。實驗比較了\(Z_{neg}(K), Z_{neg}(2K), \widehat{Z}_{neg}, \widetilde{Z}_{neg}(\widehat{Z}_{neg}\bigcup Z_{neg})\)
    image
    根據這個實驗結果可以看到,\(\widetilde{Z}_{neg}\)\(\widehat{Z}_{neg}\)要好0.09%,而同樣增加相同的負樣本數\(Z_{neg}(2K)\)\(Z_{neg}(K)\)要好0.3%。同時\(\widehat{Z}_{neg}\)\(Z_{neg}(2K)\)要好3.24%,說明\(\widehat{Z}_{neg}\)中有很強的多樣性。

  • 加入FT的時機:
    image
    可以看到在不同階段加入FT都是有效的,在比較早的階段加入效果更好。

  • Dimension-level mixing:
    考慮\(\lambda\)是一個向量而不是一個標量,對不同的維度用不同的參數控制加權的比例。
    image
    可以看到不論是pos還是neg,這樣的效果都要更好。

  • FT帶來的增益是否可以被更長的訓練時間抵消
    訓練時間邊長可以縮小FT帶來的improvement,因為訓練時間變長意味着可以比較更多的正負樣本。但是FT可以加速這個過程,給出更豐富的多樣性讓結果更快收斂。


免責聲明!

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



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