A Simple Framework for Contrastive Learning of Visual Representations


Chen T., Kornblith S., Norouzi M., Hinton G. A Simple Framework for Contrastive Learning of Visual Representations. arXiv: Learning, 2020.

@article{chen2020a,
title={A Simple Framework for Contrastive Learning of Visual Representations},
author={Chen, Ting and Kornblith, Simon and Norouzi, Mohammad and Hinton, Geoffrey E},
journal={arXiv: Learning},
year={2020}}

SimCLR 主要是利用augmentation來生成正負樣本對, 雖然沒有花里胡哨的結構, 但是通過細致的tricks比之前的方法更為有效.

主要內容

在這里插入圖片描述

流程

流程是很簡單的, 假設有一個batch的樣本\(x\), 然后從augmentation\(\mathcal{T}\)中隨機選取倆個\(t,t'\), 由此得到兩批數據\(\tilde{x}_i=t(x), \tilde{x}_j=t'(x)\), 經過第一個encoder得到特征表示\(h_i,h_j\), 再經由一個非線性變化\(g\)得到\(z_i,z_j\)(注意這一步是和以往方法不同的點), 再由\(z_i, z_j\)生成正負樣本對(對應同一個樣本的倆個樣本構成正樣本對, 否則為負樣本對).

在這里插入圖片描述

接下來先介紹一些比較重要的特別的tricks, 再介紹別的.

projection head g

一般方法只有一個encoder \(f(\cdot)\), SimCLR多了一個projection head \(g(\cdot)\), 它把第一次提到的特征再進行一次過濾:

\[z_i = g(h_i)=W^{(2)} \sigma(W^{(1)}h_i), \]

其中\(\sigma\)為ReLU.

作者說, 這是為了過濾到由augmentation帶來的額外的可分性, 讓區分特征\(z\)變得更為困難從而學習到更好的特征\(h\).
注: 用於下游任務的特征是\(h\)而非\(z\)!

在這里插入圖片描述

上表是將特征\(h\)或者\(z\)用於一個二分類任務, 區分輸入是否經過了特定的augmentation, 結果顯示\(h\)能夠更好的分類, 意味着\(h\)\(z\)含有更多的augmentation的信息.

constractive loss

\[\tag{1} \ell_{ij}=-\log \frac{\exp(\mathrm{sim}(z_i,z_j)/\tau)}{\sum_{k\not=i} \exp(\mathrm{sim}(z_i,z_k)/\tau)}, \]

其中\(\mathrm{sim}(u,v)=u^Tv/\|u\|\|v\|\).

實驗顯示這個損失比別的都好用.
在這里插入圖片描述

augmentation

在這里插入圖片描述

SimCLR中augmentation是很重要的構造正負樣本對的配件, 經過消融實驗發現, 最有效的的是crop和color distortion.

在這里插入圖片描述

另外, 實驗還顯示, 監督學習比起對比學習來講, 對augmentation的依賴程度很低, 甚至可以說是不依賴.

other

  1. 大的模型充當encoder效果更好;
  2. 大的batch size 和 更多的 training epoches有助於學習到更好的特征表示;

代碼

原文代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM