A Simple Framework for Contrastive Learning of Visual Representations
@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)\), 它把第一次提到的特征再进行一次过滤:
\]
其中\(\sigma\)为ReLU.
作者说, 这是为了过滤到由augmentation带来的额外的可分性, 让区分特征\(z\)变得更为困难从而学习到更好的特征\(h\).
注: 用于下游任务的特征是\(h\)而非\(z\)!
上表是将特征\(h\)或者\(z\)用于一个二分类任务, 区分输入是否经过了特定的augmentation, 结果显示\(h\)能够更好的分类, 意味着\(h\)比\(z\)含有更多的augmentation的信息.
constractive loss
\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
- 大的模型充当encoder效果更好;
- 大的batch size 和 更多的 training epoches有助于学习到更好的特征表示;
代码
最新文章
- 广度优先搜索(BFS)
- 高性能MySQL笔记 第4章 Schema与数据类型优化
- RDIFramework.NET平台代码生成器V2.8发布-更新于2014-12-31(提供下载)
- android TypedValue.applyDimension()的作用
- as中的陷阱
- boost::token_compress_on
- 《mysql数据库备份小脚本》
- 12、在XAML中定义处理程序
- C#调用java程序
- IOS 类别与扩展的区别 (category &; extensions)
- ios--socket
- 01 if
- mnist数据集转换bmp图片
- opencv 边缘羽化,边缘过渡
- group()与groups()的区别
- ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用(一)—修改数据库连接
- 4-20模块 序列化模块 hashlib模块
- PAT 1056 组合数的和
- WIN7环境变量path误删(windows找不到文件‘%windir%\systempropertiesadvanced.exe’)的解决办法
- 网络安装OS(配置文件)