2021-12-15

論文閱讀:《A Simple Framework for Contrastive Learning of Visual Representations》

論文地址:https://arxiv.org/abs/2002.05709

SimCLR v1

論文閱讀:《Big Self-Supervised Models areStrong Semi-Supervised Learners》

論文地址:https://arxiv.org/abs/2006.10029

論文翻譯:https://zhuanlan.zhihu.com/p/213737892

SimCLR v2

論文代碼:https://github.com/google-research/simclr

代碼主要包含一下幾個部分:數(shù)據(jù)增強:simclr/tf2/data.py? ? ? ? ? 網(wǎng)絡結構:simclr/tf2/resnet.py? ? ? ? ? ? ?Loss函數(shù):simclr/tf2/objective.py? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?網(wǎng)絡模型:simclr/tf2/model.py

SimCLR v1

作者們構建了一種用于視覺表示的對比學習簡單框架?SimCLR,它不僅優(yōu)于此前的所有工作,也優(yōu)于最新的對比自監(jiān)督學習算法,而且結構更加簡單:這個結構既不需要專門的架構,也不需要特殊的存儲庫。由于采用了對比學習,這個框架可以作為很多視覺相關的任務的預訓練模型,可以在少量標注樣本的情況下,拿到比較好的結果。

主要發(fā)現(xiàn):

多個數(shù)據(jù)增強方法對于對比預測任務產生有效表示非常重要

與監(jiān)督學習相比,數(shù)據(jù)增強對于無監(jiān)督學習更加有用;

在表示和對比損失之間引入一個可學習的非線性變換可以大幅提高模型學到的表示的質量;

與監(jiān)督學習相比,對比學習得益于更大的批量和更多的訓練步驟。

SimCLR的模型結構
SimCLR具體流程
SinnCLR流程圖
更加簡單明了的理解

創(chuàng)新點

1.數(shù)據(jù)增強

實驗得出的結論是:單獨使用一種數(shù)據(jù)增強,對比學習的效果會很差;random cropping與random color distortion進行組合效果最好;數(shù)據(jù)增強對對比學習的影響非常明顯,這不是一個好的性質,很多時候我們需要進行窮舉試錯。

一些主要的數(shù)據(jù)增強的方法

2.projection head


在representation與contrastive loss間使用可學習的non-linear projection,并證明效果較好。這邊使用可學習的網(wǎng)絡的優(yōu)勢在于避免計算 similarity 的 loss function 在訓練時丟掉一些重要的feature。論文中使用非常簡單的單層MLP,配上ReLU activation function作為non-linear projection。

3.對比損失函數(shù)

NT-Xent(the normalized temperature-scaled cross entropy loss),重點在于normalized embedding與appropriately adjusted temperature parameter

NT-Xent

sim(z_{i} ,z_{j} )表示計算兩個向量的余弦相似度,\tau 為超參數(shù),2N張圖像的損失函數(shù)之和求平均,得到最終的損失函數(shù),其實就是在進行2N-1的分類。

算法偽代碼

4.加點負例

計算loss時多加了負例。以前都是拿右側數(shù)據(jù)的N-1個作為負例,SimCLR將左側的N-1個也加入了進來,總計2(N-1)個負例。另外SImCLR不采用memory bank,而是用更大的batch size,最多的時候batch size為8192,有16382個負例。為了穩(wěn)定訓練,對所有批量使用LARS優(yōu)化器。我們使用云TPU訓練我們的模型,根據(jù)批量大小使用32到128個核心。

在具有數(shù)據(jù)并行性的分布式訓練中,BN均值和方差通常在每個設備上進行局部聚合。在我們的對比學習中,由于正對是在同一個設備中計算的,該模型可以利用局部信息泄漏來提高預測精度,而不需要改進表示。我們通過在訓練期間對所有設備的BN均值和方差進行匯總來解決這個問題。其他方法包括洗牌數(shù)據(jù)示例,或用層規(guī)范替換BN

In distributed training with data parallelism, the BN mean and variance are typically aggregated locally per device. In our contrastive learning, as positive pairs are computed in the same device, the model can exploit the local information leakage to improve prediction accuracy without improving representations. We address this issue by aggregating BN mean and variance over all devices during the training. Other approaches include shuffling data examples across devices , or replacing BN with layer norm .

拆分步驟:

數(shù)據(jù)增強
數(shù)據(jù)增強后的效果
編碼部分
對比損失函數(shù)? NT-Xent

稍微回顧一下:

unsupervised:是使用沒有標注的數(shù)據(jù)訓練模型

supervised:是使用了有標注的數(shù)據(jù)訓練模型

semi-supervised:是同時使用了有標注與沒有標注的數(shù)據(jù)訓練模型。

而self-supervised翻成中文大概是自監(jiān)督學習,也就是沒有標注資料也會自己會學習的方法,屬于unsupervised learning。

對比學習(Contrastive learning)

Contrastive learning是self-supervised learning中非常naive的想法之一。像小孩子學習一樣,透過比較貓狗的同類之間相同之處與異類之間不同之處,在即使是在不知道什么是貓、什么是狗的情況下 (甚至沒有語言定義的情況),也可以學會分辨貓狗。對比學習的基本概念,其實很簡單,這是一種試圖教會機器區(qū)分相似和不同的東西。


SimCLR v2

SimCLR v2模型結構























參考資料:https://blog.csdn.net/weixin_42764932/article/details/112787761

? ? ? ? ? ? ? ? ??https://blog.csdn.net/dhaiuda/article/details/117906514

? ? ? ? ? ? ? ? ??https://blog.csdn.net/m0_37929824/article/details/104440694

? ? ? ? ? ? ? ? ??https://www.cnblogs.com/mpeter/p/14119217.html? ? ? ?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容