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的中心思想。實現上述內容的方法分成了幾個階段:
- 對圖像作隨機的augmentation,包含random crop, color distortion和Gaussian blur,使得同一張圖片會衍生出兩種變體,文章中將這一對變體稱作Positive Pair
- 以ResNet作為encoder,負責萃取圖像中的特徵,以向量形式輸出
- 用MLP作為projection head,把上一步的特徵再進行一次轉換
- 透過contrastive loss,訓練模型能對Positive Pair輸出近乎相同的向量
下圖是模型的大致結構Contrasive Loss計算
訓練過程中,數量為N的minibatch會經由隨機augmentation變成2N筆資料。取其中一對源自同一張圖片的資料當作positive pair,剩下的2(N-1)筆資料作為反例,並對每一組positive pair算出一個loss
該loss function中,分子部分為positive pair的餘弦相似度,分母則是positive pair以及剩下所有反例的餘弦相似度之總和。當loss最小化時,該function可被簡化為下圖右上角的樣子。可以發現,當N極大的時候,分母會變得很大,導致分子的權重變得很小,模型效果不佳。因此,加上一個T參數,將分子變大,分母縮小,能改善上述現象。
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
作者對圖像增強提出了系統性的分類,大致上可分為:
- 空間/幾何上的轉換(cropping/resizing/flipping/rotation/cutout)
- 外觀上的轉換(color distortion/Gaussian blur/Sobel filtering)
為進一步分析各種圖像增強手段的影響,作者對上述的方法以兩個為一組做測試(也有包含只使用一種augmentation)。由於論文中使用的ImageNet資料集中,圖像尺寸不一,本來就必須有crop的處理使尺寸標準化。為了消除這個步驟帶來的影響,當只要測試一種增強手段時,作者將模型Augmentation的兩個branch其中之一固定為crop後的圖片,另一個則是以crop後的圖片再加上其他處理。當使用兩種增強手段的時候,則是交替使用兩者在同一個branch,另一個branch照樣維持是crop後的圖片。
以上結果顯示,使用color distortion和crop的組合下,linear evaluation訓練出的效果最好。上圖對角線上的accuracy,代表只使用一種augmentation,可以看出只有單一方法無法讓模型學到好的特徵。造成此結果的原因基本上可以歸納成以下幾項:
- 即便positive pair能被準確辨認,不代表模型移至下游任務也能擁有高準確率。透過augmentation繼續增加辨識難度才能使下游任務表現更好
- crop的操作能夠使模型學習到局部與整體、相鄰與相鄰之間切片的相關性
- 如果不使用color distortion,crop出的圖片可能會具有類似的色階分布,造成模型有機會透過該特徵找出positive pair
模型結構
- Unsupervised模型比起Supervised模型,更能獲益於模型深度和寬度的增加。由下圖可見,模型複雜度的增加使得兩者的差距越來越小
- Projection head的選擇
作者設計了在encoder後加或不加MLP的作法,結果證明加上MLP(有activation)的模型在ImageNet上的表現比較好。作者推斷在使用contrasive loss下,輸出的資訊會有所流失,因此若把encoder作為輸出層,勢必會犧牲資訊量。因此加上MLP能使資訊的篩選責任落在MLP上,有效避免encoder忽略太多資訊。
為了證實此假設,作者實驗將encoder的輸出和MLP的輸出分別去預測不同的圖像transformation,的確MLP的表現較差,顯示其保留的資訊較少。
Loss Functions and Batch Size
- loss funtion選擇
上表中,作者比較了幾個常用contrasive loss的梯度,可以發現NT-Xent的設計使得hard negative的權重可以被T這個參數控制(T的調降可以使negative的權重遽增),使得模型能夠加強hard negative的學習。
- 大batch size與長時間training使模型性能持續上升
反正就是暴力出奇蹟,想一想也很合理,batch越大,negative sample越多。training越久就能學更多,反正直到loss完全收斂以前,模型都還能繼續學習,而且也沒有overfitting的問題
結語
這篇論文算是奠定了用augmentation做contrasive learning的基礎,尤其是說明了color distortion對性能的影響。但老實說,SimCLR的方法確實暴力,用巨大的batchsize和大把的計算資源得到逼近Supervised的結果,一般人確實難以實作。
撰寫此文時適逢研究所推甄,導致這篇文章拖了快兩個禮拜才完成,我心中還有很多篇論文跟基礎觀念想記錄下來,但時間只怕越來越少。如果之後運氣不好,推甄失敗,大概率也沒心情就再繼續寫文章了,回家種田去比較實在…
回到目錄
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的中心思想。實現上述內容的方法分成了幾個階段:Contrasive Loss計算
訓練過程中,數量為N的minibatch會經由隨機augmentation變成2N筆資料。取其中一對源自同一張圖片的資料當作positive pair,剩下的2(N-1)筆資料作為反例,並對每一組positive pair算出一個loss
該loss function中,分子部分為positive pair的餘弦相似度,分母則是positive pair以及剩下所有反例的餘弦相似度之總和。當loss最小化時,該function可被簡化為下圖右上角的樣子。可以發現,當N極大的時候,分母會變得很大,導致分子的權重變得很小,模型效果不佳。因此,加上一個T參數,將分子變大,分母縮小,能改善上述現象。
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
作者對圖像增強提出了系統性的分類,大致上可分為:
為進一步分析各種圖像增強手段的影響,作者對上述的方法以兩個為一組做測試(也有包含只使用一種augmentation)。由於論文中使用的ImageNet資料集中,圖像尺寸不一,本來就必須有crop的處理使尺寸標準化。為了消除這個步驟帶來的影響,當只要測試一種增強手段時,作者將模型Augmentation的兩個branch其中之一固定為crop後的圖片,另一個則是以crop後的圖片再加上其他處理。當使用兩種增強手段的時候,則是交替使用兩者在同一個branch,另一個branch照樣維持是crop後的圖片。
以上結果顯示,使用color distortion和crop的組合下,linear evaluation訓練出的效果最好。上圖對角線上的accuracy,代表只使用一種augmentation,可以看出只有單一方法無法讓模型學到好的特徵。造成此結果的原因基本上可以歸納成以下幾項:
模型結構
作者設計了在encoder後加或不加MLP的作法,結果證明加上MLP(有activation)的模型在ImageNet上的表現比較好。作者推斷在使用contrasive loss下,輸出的資訊會有所流失,因此若把encoder作為輸出層,勢必會犧牲資訊量。因此加上MLP能使資訊的篩選責任落在MLP上,有效避免encoder忽略太多資訊。
為了證實此假設,作者實驗將encoder的輸出和MLP的輸出分別去預測不同的圖像transformation,的確MLP的表現較差,顯示其保留的資訊較少。
Loss Functions and Batch Size
上表中,作者比較了幾個常用contrasive loss的梯度,可以發現NT-Xent的設計使得hard negative的權重可以被T這個參數控制(T的調降可以使negative的權重遽增),使得模型能夠加強hard negative的學習。
反正就是暴力出奇蹟,想一想也很合理,batch越大,negative sample越多。training越久就能學更多,反正直到loss完全收斂以前,模型都還能繼續學習,而且也沒有overfitting的問題
結語
這篇論文算是奠定了用augmentation做contrasive learning的基礎,尤其是說明了color distortion對性能的影響。但老實說,SimCLR的方法確實暴力,用巨大的batchsize和大把的計算資源得到逼近Supervised的結果,一般人確實難以實作。
撰寫此文時適逢研究所推甄,導致這篇文章拖了快兩個禮拜才完成,我心中還有很多篇論文跟基礎觀念想記錄下來,但時間只怕越來越少。如果之後運氣不好,推甄失敗,大概率也沒心情就再繼續寫文章了,回家種田去比較實在…
回到目錄