SimCLR: 自監督學習領域的重大突破

回到目錄
撰寫日期: 2021/9/25

A Simple Framework for Contrastive Learning of Visual Representations(2020)

概述

大部分的Self-Supervised Learning做法都是discriminative approach,也就是資料集本身沒有label的情況下,透過設計出不同的pretext task,讓模型能直接從資料的本身學習(例如之前介紹過的Gidaris et al., 2018)而Contrasive Learning便是其中一種做法,這個想法最早大概來源自2006年的一篇論文。內容大致上在說,當高維的數據被降維後,相似的樣本在低維空間中的距離會比較接近。

若把以上概念運用在深度學習上,就是訓練一個降維的網路,並且設計出Contrasive Loss,使得相似的樣本降維後在空間上越近越好,差異大的樣本則盡可能的拉開距離。在上述的訓練過程中,模型會對資料的特徵有所歸納與認識,才能將原始數據去蕪存菁。這篇論文根據該原理提出了一種基於Contrasive Learning,能大幅提升SSL性能的方法,並對此方法的有效性提出了一系列的見解。

方法

Contrasive Learning設計

同一張圖片在經過不同Augmentation後,即便肉眼看起來有顯著差異,模型依舊能判斷他們屬於同源,這便是SimCLR的中心思想。實現上述內容的方法分成了幾個階段:

  1. 對圖像作隨機的augmentation,包含random crop, color distortion和Gaussian blur,使得同一張圖片會衍生出兩種變體,文章中將這一對變體稱作Positive Pair
  2. 以ResNet作為encoder,負責萃取圖像中的特徵,以向量形式輸出
  3. 用MLP作為projection head,把上一步的特徵再進行一次轉換
  4. 透過contrastive loss,訓練模型能對Positive Pair輸出近乎相同的向量
下圖是模型的大致結構
img01

Contrasive Loss計算

訓練過程中,數量為N的minibatch會經由隨機augmentation變成2N筆資料。取其中一對源自同一張圖片的資料當作positive pair,剩下的2(N-1)筆資料作為反例,並對每一組positive pair算出一個loss

該loss function中,分子部分為positive pair的餘弦相似度,分母則是positive pair以及剩下所有反例的餘弦相似度之總和。當loss最小化時,該function可被簡化為下圖右上角的樣子。可以發現,當N極大的時候,分母會變得很大,導致分子的權重變得很小,模型效果不佳。因此,加上一個T參數,將分子變大,分母縮小,能改善上述現象。
img02

Large Batch Size

論文中,使用了非常大的batch size做訓練(256~8192),目的正是透過大量的反例來使模型效果最佳化。太大的batch size會有訓練不穩定的問題(參數修正緩慢),因此文中使用LARS(Layer-wise Adaptive Rate Scaling)作為optimizer。LARS簡單來說就是使網路各層的learning rate不一樣,使不應該變動太大的layer有比較小的learning rate;反之,Fully Connect這樣的layer變動可以比較大。總之,這樣的方法可以允許在大batch size及較高的learning rate下,使用較快的速度收斂、避免發散。

結果與分析

Data Augmentation

img

作者對圖像增強提出了系統性的分類,大致上可分為:

  1. 空間/幾何上的轉換(cropping/resizing/flipping/rotation/cutout)
  2. 外觀上的轉換(color distortion/Gaussian blur/Sobel filtering)

為進一步分析各種圖像增強手段的影響,作者對上述的方法以兩個為一組做測試(也有包含只使用一種augmentation)。由於論文中使用的ImageNet資料集中,圖像尺寸不一,本來就必須有crop的處理使尺寸標準化。為了消除這個步驟帶來的影響,當只要測試一種增強手段時,作者將模型Augmentation的兩個branch其中之一固定為crop後的圖片,另一個則是以crop後的圖片再加上其他處理。當使用兩種增強手段的時候,則是交替使用兩者在同一個branch,另一個branch照樣維持是crop後的圖片。

img01

以上結果顯示,使用color distortion和crop的組合下,linear evaluation訓練出的效果最好。上圖對角線上的accuracy,代表只使用一種augmentation,可以看出只有單一方法無法讓模型學到好的特徵。造成此結果的原因基本上可以歸納成以下幾項:

  1. 即便positive pair能被準確辨認,不代表模型移至下游任務也能擁有高準確率。透過augmentation繼續增加辨識難度才能使下游任務表現更好
  2. crop的操作能夠使模型學習到局部與整體、相鄰與相鄰之間切片的相關性
    img01

  3. 如果不使用color distortion,crop出的圖片可能會具有類似的色階分布,造成模型有機會透過該特徵找出positive pair
img01

模型結構

img01

img01

Loss Functions and Batch Size

img01

結語

這篇論文算是奠定了用augmentation做contrasive learning的基礎,尤其是說明了color distortion對性能的影響。但老實說,SimCLR的方法確實暴力,用巨大的batchsize和大把的計算資源得到逼近Supervised的結果,一般人確實難以實作。

撰寫此文時適逢研究所推甄,導致這篇文章拖了快兩個禮拜才完成,我心中還有很多篇論文跟基礎觀念想記錄下來,但時間只怕越來越少。如果之後運氣不好,推甄失敗,大概率也沒心情就再繼續寫文章了,回家種田去比較實在…

回到目錄