論文閱讀:《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
代碼主要包含一下幾個(gè)部分:數(shù)據(jù)增強(qiáng):simclr/tf2/data.py? ? ? ? ? 網(wǎng)絡(luò)結(jié)構(gòu):simclr/tf2/resnet.py? ? ? ? ? ? ?Loss函數(shù):simclr/tf2/objective.py? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?網(wǎng)絡(luò)模型:simclr/tf2/model.py
SimCLR v1
作者們構(gòu)建了一種用于視覺(jué)表示的對(duì)比學(xué)習(xí)簡(jiǎn)單框架?SimCLR淌实,它不僅優(yōu)于此前的所有工作阅畴,也優(yōu)于最新的對(duì)比自監(jiān)督學(xué)習(xí)算法,而且結(jié)構(gòu)更加簡(jiǎn)單:這個(gè)結(jié)構(gòu)既不需要專門的架構(gòu),也不需要特殊的存儲(chǔ)庫(kù)堪嫂。由于采用了對(duì)比學(xué)習(xí)偎箫,這個(gè)框架可以作為很多視覺(jué)相關(guān)的任務(wù)的預(yù)訓(xùn)練模型抗愁,可以在少量標(biāo)注樣本的情況下闸餐,拿到比較好的結(jié)果茬高。
主要發(fā)現(xiàn):
多個(gè)數(shù)據(jù)增強(qiáng)方法對(duì)于對(duì)比預(yù)測(cè)任務(wù)產(chǎn)生有效表示非常重要
與監(jiān)督學(xué)習(xí)相比堵第,數(shù)據(jù)增強(qiáng)對(duì)于無(wú)監(jiān)督學(xué)習(xí)更加有用吧凉;
在表示和對(duì)比損失之間引入一個(gè)可學(xué)習(xí)的非線性變換可以大幅提高模型學(xué)到的表示的質(zhì)量;
與監(jiān)督學(xué)習(xí)相比踏志,對(duì)比學(xué)習(xí)得益于更大的批量和更多的訓(xùn)練步驟阀捅。
創(chuàng)新點(diǎn)
1.數(shù)據(jù)增強(qiáng)
實(shí)驗(yàn)得出的結(jié)論是:?jiǎn)为?dú)使用一種數(shù)據(jù)增強(qiáng),對(duì)比學(xué)習(xí)的效果會(huì)很差针余;random cropping與random color distortion進(jìn)行組合效果最好饲鄙;數(shù)據(jù)增強(qiáng)對(duì)對(duì)比學(xué)習(xí)的影響非常明顯凄诞,這不是一個(gè)好的性質(zhì),很多時(shí)候我們需要進(jìn)行窮舉試錯(cuò)忍级。
2.projection head
在representation與contrastive loss間使用可學(xué)習(xí)的non-linear projection帆谍,并證明效果較好。這邊使用可學(xué)習(xí)的網(wǎng)絡(luò)的優(yōu)勢(shì)在于避免計(jì)算 similarity 的 loss function 在訓(xùn)練時(shí)丟掉一些重要的feature颤练。論文中使用非常簡(jiǎn)單的單層MLP既忆,配上ReLU activation function作為non-linear projection。
3.對(duì)比損失函數(shù)
NT-Xent(the normalized temperature-scaled cross entropy loss)嗦玖,重點(diǎn)在于normalized embedding與appropriately adjusted temperature parameter
表示計(jì)算兩個(gè)向量的余弦相似度患雇,
為超參數(shù),2N張圖像的損失函數(shù)之和求平均宇挫,得到最終的損失函數(shù)苛吱,其實(shí)就是在進(jìn)行2N-1的分類。
4.加點(diǎn)負(fù)例
計(jì)算loss時(shí)多加了負(fù)例器瘪。以前都是拿右側(cè)數(shù)據(jù)的N-1個(gè)作為負(fù)例翠储,SimCLR將左側(cè)的N-1個(gè)也加入了進(jìn)來(lái),總計(jì)2(N-1)個(gè)負(fù)例橡疼。另外SImCLR不采用memory bank援所,而是用更大的batch size,最多的時(shí)候batch size為8192欣除,有16382個(gè)負(fù)例住拭。為了穩(wěn)定訓(xùn)練,對(duì)所有批量使用LARS優(yōu)化器历帚。我們使用云TPU訓(xùn)練我們的模型滔岳,根據(jù)批量大小使用32到128個(gè)核心。
在具有數(shù)據(jù)并行性的分布式訓(xùn)練中挽牢,BN均值和方差通常在每個(gè)設(shè)備上進(jìn)行局部聚合谱煤。在我們的對(duì)比學(xué)習(xí)中,由于正對(duì)是在同一個(gè)設(shè)備中計(jì)算的禽拔,該模型可以利用局部信息泄漏來(lái)提高預(yù)測(cè)精度刘离,而不需要改進(jìn)表示。我們通過(guò)在訓(xùn)練期間對(duì)所有設(shè)備的BN均值和方差進(jìn)行匯總來(lái)解決這個(gè)問(wèn)題睹栖。其他方法包括洗牌數(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 .
拆分步驟:
稍微回顧一下:
unsupervised:是使用沒(méi)有標(biāo)注的數(shù)據(jù)訓(xùn)練模型
supervised:是使用了有標(biāo)注的數(shù)據(jù)訓(xùn)練模型
semi-supervised:是同時(shí)使用了有標(biāo)注與沒(méi)有標(biāo)注的數(shù)據(jù)訓(xùn)練模型。
而self-supervised翻成中文大概是自監(jiān)督學(xué)習(xí)磨淌,也就是沒(méi)有標(biāo)注資料也會(huì)自己會(huì)學(xué)習(xí)的方法疲憋,屬于unsupervised learning。
對(duì)比學(xué)習(xí)(Contrastive learning)
Contrastive learning是self-supervised learning中非常naive的想法之一梁只。像小孩子學(xué)習(xí)一樣缚柳,透過(guò)比較貓狗的同類之間相同之處與異類之間不同之處埃脏,在即使是在不知道什么是貓、什么是狗的情況下 (甚至沒(méi)有語(yǔ)言定義的情況)秋忙,也可以學(xué)會(huì)分辨貓狗彩掐。對(duì)比學(xué)習(xí)的基本概念,其實(shí)很簡(jiǎn)單灰追,這是一種試圖教會(huì)機(jī)器區(qū)分相似和不同的東西堵幽。
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? ? ? ?