深度學習方法(二十):Hinton組最新無監督學習方法SimCLR介紹,以及Momentum Contrastive(MoCo)

本篇文章記錄一下最近發表的兩個比較類似的無監督representation learning工作:

  • SimCLR——Hinton組的工作,第一作者Ting Chen
  • MoCo v2——He Kaiming組的工作,第一作者Xinlei Chen

SimCLR

該研究一次就把無監督學習(學習後再用於分類等後續任務)的指標提升了 7-10%,甚至可以媲美有監督學習的效果。在這篇論文中,研究者發現[4]:

  • 多個數據增強方法組合對於對比預測任務產生有效表示非常重要。此外,與有監督學習相比,數據增強對於無監督學習更加有用;
  • 在表示和對比損失之間引入一個可學習的非線性變換(MLP)可以大幅提高模型學到的表示的質量;
  • 與監督學習相比,對比學習得益於更大的批量和更多的訓練步驟。

基於這些發現,他們在 ImageNet ILSVRC-2012 數據集上實現了一種新的半監督、自監督學習 SOTA 方法——SimCLR。在線性評估方面,SimCLR 實現了 76.5% 的 top-1 準確率,比之前的 SOTA 提升了 7%。在僅使用 1% 的 ImageNet 標籤進行微調時,SimCLR 實現了 85.8% 的 top-5 準確率,比之前的 SOTA 方法提升了 10%。在 12 個其他自然圖像分類數據集上進行微調時,SimCLR 在 10 個數據集上表現出了與強監督學習基線相當或更好的性能。

在這裏插入圖片描述

總體思路如下圖:對一個Batch中的每一個樣本xx,先隨機進行兩次數據增強,然後經過Encoder ff得到特徵表達hh,這個特徵表達是用於後續finetune任務的特徵表達。而在無監督學習loss之前,還要經過一個projection head gg,這個head可以由簡單的MLP網絡組成,作者採用:zi=g(hi)=W(2)σ(W(1)hi)z_i = g(h_i)=W^{(2)}\sigma (W^{(1)} h_i) 兩層MLP,中間是ReLU。

在這裏插入圖片描述

Loss採用contrastive loss,目的是讓相似的圖片特徵相似度儘可能高,不同圖片特徵相似度儘可能低。
在這裏插入圖片描述
詳細的程序流程如下:

在這裏插入圖片描述
數據預處理方法包括:

在這裏插入圖片描述

實驗結果:無監督方法效果大躍進,在預訓練之後,直接拿特徵去訓練一個線性分類器,精度已經可以達到ResNet50的精度了。算是最近幾年的大突破了。

在這裏插入圖片描述

MoCo [2][3]

這個工作其實在去年就已經有一個版本了,當時效果還沒有很好。在SimCLR出來以後借鑑了不少思路,得到了很大的提升。工作原理和SimCLR很相近,有一些優化。

下圖總體介紹了一下兩個算法的區別,左圖是上面的SimCLR,需要有一個相對比較大的batch size N,而在計算loss的時候需要對batch內的所有NNN*N的對都需要計算similarity,計算量比較大,而且在SimCLR算法也得益於大Batch,比較喫硬件內存。

在這裏插入圖片描述
右圖是本文算法,可以看到,只需要把query送到encoder中去,而不需要很大的Batch。比較有趣的地方在於Momentum encoder,這邊是用於計算positive和negative encoding的,但是這個encoder是不用反向梯度來更新的。而是直接用左邊的encoder來做一個moving average。
在這裏插入圖片描述

而且,不需要一個很大的Batch(因爲不需要把當前的Batch當做Negative Sample)。在Figure 1b中,兩個輸入表達的意思和SimCLR是類似的:一個小batch中的圖片經過隨機的兩種數據增強,分別送到encoder和momentum encoder中去,兩兩對應之間會產生positive pairs。而negative pair哪裏來呢?作者維護了一個queue,把之前已經產生過的batch embedding記錄在queue裏面,每次只需要從queue中取出來當做negative sample用(因爲是之前舊的圖像batch產生的,因此就假設和當前batch是不一樣的,自然就是negative sample了。很聰明的想法,也不需要再計算了。)因此計算loss的代價對一個小的batch來說不論是計算量還是內存都要小很多。

訓練的loss和SimCLR是一致的,Contrastive loss:
在這裏插入圖片描述
算法的流程如下,前面大致也介紹了。

在這裏插入圖片描述

V2版本在V1版本之上做的優化:MLP的head,採用SimCLR的數據增強方法,cos的LR,可以看到加一個兩層的MLP head效果最明顯。最後全部加起來用。

在這裏插入圖片描述
下面是實驗結果,直接和前面結果最好的SimCLR比較,在256 Batchsize下,ImageNet線性分類結果已經超越SimCLR在採用標準的ResNet50 encoder下的結果。但是作者沒有比較用2x或者4x模型size時候的效果,因爲SimCLR在更大模型size下效果可以大幅提升。
在這裏插入圖片描述

參考資料

[1] A Simple Framework for Contrastive Learning of Visual Representations
[2] Improved Baselines with Momentum Contrastive Learning
[3] Momentum Contrast for Unsupervised Visual Representation Learning
[4] https://www.jiqizhixin.com/articles/2020-02-15-3
[5] 如何評價Kaiming He的Momentum Contrast for Unsupervised?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章