Self-Supervised Learning的新高度:從SimCLR認識SSL與Contrastive Learning

Self-Supervised Learning的新高度:從SimCLR認識SSL與Contrastive Learning

今年 (2020年) Google release了SimCLR ,與Facebook AI團隊 (FAIR)提出的MoCo 都是近年self-supervised learning的重要里程碑。Google Brain團隊的SimCLR在ImageNet的分類問題上展示了SimCLR訓練出的線性分類器不輸給與supervised learning訓練的ResNet-50 ,在top-1上達到了76.5% 的準確率。

驚人的SimCLR數據 (figure from SimCLR paper )

但實際上在 SimCLR的超人數據背後,其實藏有一些小小的細節 (或說某種程度上的偷吃步),因此並不是真正的超越了 supervised learning。

SimCLR這篇論文不僅僅是簡單易懂的方法與優秀的數據,更是一個認識self-supervised learning與contrastive learning的大門。這篇文章雖然以SimCLR為主幹,也會著重介紹**self-supervised learning (SSL)contrastive learning (CL)**這兩個比較新的名詞。

Tip

文章難度:★★★☆☆

閱讀建議:本篇文章前段可以做為 self-supervised learning (SSL) 與 contrastive learning (CL)的入門或科普式閱讀,後段包含 SimCLR細節,適合對於 SSL與 CL有進階興趣與知識的人閱讀。

推薦背景知識:supervised learning, unsupervised learning, data augmentation, image classification。

SimCLR概念

首先,不管知不知道SSL與CL,這邊先粗淺地看一下SimCLR的方法。其實概念相當簡單:(1) 先sample一些圖片(batch);(2) 對batch裡的image做兩種不同的data augmentation;(3) 希望同一張影像、不同augmentation的結果相近,並互斥其他結果。概念上的流程就這樣,具體細節晚點再回頭介紹。

GIF for SimCLR (from Google AI Blog )

SimCLR的學習目標來自自己-也就是來源同一張影像 (SSL),並不需要額外的標註資料。學習的目標是透過理解不同影像之間的對比性 (CL)來達成。

Self-Supervised Learning (SSL)

SSL其實算是近幾年迸出來的新名詞,定義上回顧一下,unsupervised代表使用沒有標註的資料,supervised代表使用了有標註的資料、而semi-supervised 代表同時使用了有標註與沒有標註的資料。而self-supervised翻成中文大概是自監督學習,也就是沒有標註資料也會自己會學習的方法。這似乎越搞越糊塗了,感覺跟unsupervised learning有87%相似。

事實上,目前用self-supervised learning definition這個關鍵字在google上還真的搜不到明確的定義。好吧!那先從DeepMind的說法理解一下。

Definition of SSL (slides from DeepMind )

依照個人對領域的理解,我會這樣描述SSL:(1) SSL屬於unsupervised learning、(2) SSL的資料必須擁有或是透過轉換得到某些可學習性的資訊,透過設計的loss可以進行supervised learning。

Contrastive Learning

Contrastive learning是self-supervised learning中非常naive的想法之一。像小孩子學習一樣,透過比較貓狗的同類相同之處與異類不同之處,在即使在不知道什麼是貓、什麼是狗的情況下 (甚至沒有語言定義的情況),也可以學會分辨貓狗。

這個方法的想法大概可以推到2006年LeCun的論文 ”Dimensionality Reduction by Learning an Invariant Mapping” ,論文中將許多高維的點投到低維上,並argue說相似的點投到低微空間中,會有較近的距離。

Figure from the paper

相信閱讀到這邊,要理解contrastive learning的觀念是不難的。實際上目前大部分的做法也都脫離不了LeCun當初的框架:降維後計算contrastive loss。然而,難點就在降維度的過程、contrastive loss與對比性samples的設計。

SimCLR的設計

而實際上SimCLR在contrastive loss的設計相當簡單,主要元件有三個:

  1. 在representation與contrastive loss間使用可學習的non-linear projection,並證明效果較好。這邊使用可學習的網路的優勢在於避免計算 similarity 的 loss function在訓練時抹掉一些重要的feature。論文中使用非常簡單的單層MLP,配上ReLU activation function實作non-linear projection。
  2. 在算contrastive loss時使用在NT-Xent (the normalized temperature-scaled cross entropy loss),並證明效果會比較好。這段文字描述超難用中文表示,重點在於normalized embedding與appropriately adjusted temperature parameter,細節可以參考Appendix的數學式。不過這個很數學,不想懂的人可以先跳過,把它當成一種算similarity的延伸方法就好。
  3. 而SimCLR的對比性學習主要來自兩個部分:(1) 同張圖片,通過不同data augmentation的互相拉引;與(2) 不同圖片的互相推離。論文相當關鍵的一部份就是研究了data augmentation對於unsupervised contrastive learning的幫助。
About data augmentation: 大都是很常見的技巧 (figure from the paper )

最後提一個隱藏在SimCLR的細節:SimCLR宣稱的 SSL與 CL的效果是在做在 visual representation上,白話點就是指一組高維空間的 latent feature。最後在做 ImageNet的分類問題時,還是需要標註資料。而為了限制分類器強度、降低supervised程度,分類器是線性的,這個評估方法稱為 linear evaluation protocol。總地來說,雖然不是真的單靠 SSL超越 supervised learning,SimCLR的方法與成果還是相當驚豔。

好了!關於self-supervised learning、contrastive learning與SimCLR概念式介紹到這裡為止,文章的最後還會有一段Appendix是關於SimCLR的細節,就看各人狀況斟酌閱讀囉~

下一篇延續的文章,預計會是一樣來自Google的厲害作品“Supervised Contrastive Learning” ,是將contrastive learning放到supervised learning上,帶來驚人的模型優勢,個人認為是今年CL的巔峰之一。

老話一句:Deep Learning領域每年都會有大量高質量的論文產出,說真的要跟緊不是一件容易的事。所以我的觀點可能也會存在瑕疵,若有發現什麼錯誤或值得討論的地方,歡迎回覆文章或來信一起討論 :)

Appendix

詳細的NT-Xent計算方式如下,這個方法之前就有被不少論文使用,並不是SimCLR提出的。

NT-Xent,看起來很數學,但其實不難。

除了基本訓練邏輯以外,這邊還想提提SimCLR的三個重要觀點:(1) Data augmentation is crucial to UCL;(2) More variables and training steps give better performance;(3) Large batch size benefit SimCLR。

Data augmentation對於訓練好unsupervised contrastive learning的模型非常的關鍵。以下是一張來自論文的圖表,可以看出來一些強力的augmentation技巧可以大幅提升SimCLR,但對於原本supervised的方法卻不見得有幫助。

About strong data augmentation (figure from the paper )

論文中提到一個細節:單純使用random crop其實沒什麼效果,要加上color distortion後才會有顯著的效果。這是因為原本的 random crop 切出來的圖片 在pixel value的分布其實相差不大,主要是在scale與offset上的不同,相當不利於CNN的CL,而這兩種加上color distortion後的 pixel value的分布就會有明顯的變化,使得適合作為CL的學習對象,

Random crop w & w/o color distortion (figure from the paper )

相比於supervised learning,SSL不容易overfitting。因此加大網路或增加訓練時間在模型表現上升的幅度,會比supervised learning來的明顯。這點其實是相當令人興奮的結果,代表圖片自身可能存有比label還要來的豐富的資訊,而且透過CL是真的有辦法從中提取並學習的。

(figure from the paper )

夠大且有效的batch相當有幫助,不過隨著時間的拉長,大batch的效果漸漸淡出。

About batch size: 一張有資源的人才做得起的實驗表格 (figure from the paper )

關於使用SimCLR的self-supervised pre-training研究,可以參考:

關於SimCLR的同期作品,同樣來自Google Brain的Noisy Student可以參考這篇文章:

References

  1. Ting Chen, Simon Kornblith, Mohammad Norouzi, and Geoffrey Hinton. “A Simple Framework for Contrastive Learning of Visual Representations“[arXiv]
  2. Ting Chen, and Geoffrey Hinton. “Advancing Self-Supervised and Semi-Supervised Learning with SimCLR”[Google AI Blog]
  3. Kaiming He, Haoqi Fan, Yuxin Wu, Saining Xie and Ross Girshick. “Momentum Contrast for Unsupervised Visual Representation Learning”[arXiv]
  4. Prannay Khosla, Piotr Teterwak, Chen Wang, Aaron Sarna, Yonglong Tian, Phillip Isola, Aaron Maschinot, Ce Liu, and Dilip Krishnan. “Supervised Contrastive Learning”[arXiv]
  5. Raia Hadsell, Sumit Chopra, and Yann LeCun. Dimensionality Reduction by Learning an Invariant Mapping[CVPR 2006]
  6. Andrew Zisserman. “Self-Supervised Learning”[Slides from Google DeepMind]
  7. kv zh. “簡介 Self-Supervised Learning 的近期發展 (2018–2020)”[Medium]
comments powered by Disqus