原文翻译自这里
视觉:图像嵌入(Image Embedding)
图像增强
在视觉领域,大多数面向对比表征学习的方案均依赖于通过应用数据增强技术的序列组合来创建样本的噪声形式。而这种增强需要满足保持语义不变的同时极大的改变其视觉外观。
基本图像增强技术
以下列举了一些修改图像但保持其语义的方法。我们可以使用以下任一增强或几种的组合。
- 随即裁剪,然后调整尺寸与原图一致
- 随机色彩失真
- 随机高斯模糊
- 随机色彩抖动(color jittering)
- 随机水平翻转
- 随机灰度转换
- Multi-crop 增强:使用两个标准分辨率的裁剪块,并采样一组额外的低分辨率的裁剪块,将其覆盖在原图的部分区域,以降低计算消耗。
- 。。。
增强策略
许多框架的设计初衷是学习优秀的数据增强策略(可能是多种变换的一个组合)。这有一些例子。
- AutoAugment:受 NAS 启发,AutoAugment将最优数据增强搜寻视为强化学习问题,通过验证集上的最优精确度来确定增强组合。
- RandAugment:RandAugme通过使用幅度参数控制不同变换操作的幅度,极大的减小了AutoAugment的搜索空间。
- PBA(Population based augmentation):PBA将AutoAugment与PBT结合在一起,使用进化算法训练子模型群体同时进化出最优策略。
- UDA(Unsupervised Data Augmentation):给出一系列可能的增强策略,UDA选择能够最小化无标签示例的预测分布和其无标签增强版本之间KL距离的策略。
图像混合
图像混合方法能够从现有数据点中构建出新的训练样本。
- Mixup:该方法通过对两幅图像使用一种加权逐像素结合的方法实现全局混合: I m i x u p ← α I 1 + ( 1 − α ) I 2 I_{mixup}\leftarrow \alpha I_1+(1-\alpha)I_2 Imixup←αI1+(1−α)I2 and α ∈ [ 0 , 1 ] \alpha \in[0,1] α∈[0,1].
- Cutmix: Cutmix通过生成一个新样本来实行区域混合。该样本由一张图片的局部区域与任一张其他图片混合组成。 I c u t m i x ← M b ⨀ I 1 + ( 1 − M b ) ⨀ I 2 I_{cutmix}\leftarrow M_b\bigodot I_1+(1-M_b)\bigodot I_2 Icutmix←Mb⨀I1+(1−Mb)⨀I2,其中 M b ∈ { 0 , 1 } I M_b\in \{0,1\}^I Mb∈{0,1}I为二进制mask, ⨀ \bigodot ⨀是逐像素乘法。当区域内不放图时,与Cutout等效。
- MoCHi(Mixing of Contrastive Hard Negatives)给一query q q q,MoCHi维持 K K K个负样本特征 Q = { n 1 , . . . , n K } Q=\{n_1,...,n_K\} Q={n1,...,nK}的队列,并通过比较与 q q q的相似程度 q T n q^Tn qTn进行降序排序。队列中的前 N N N个项目 Q N Q^N QN被视为最复杂负样本。 然后通过以下形式生成复杂示例: h = h ~ / ∣ h ~ ∣ h=\tilde{h}/|\tilde{h}| h=h~/∣h~∣。其中, h ~ = α n i + ( 1 − α ) n j \tilde{h}=\alpha n_i+(1-\alpha)n_j h~=αni+(1−α)nj, α ∈ ( 0 , 1 ) \alpha\in(0,1) α∈(0,1)。更复杂的样本甚至可以通过与query q q q混合而得到: h ′ = h ′ / ∣ h ′ ∣ 2 ~ h^{'}=\tilde{h^{'}/|h^{'}|_2} h′=h′/∣h′∣2~。其中 h ′ ~ = β q + ( 1 − β ) n j \tilde{h^{'}}=\beta q+(1-\beta)n_j h′~=βq+(1−β)nj, β ∈ ( 0 , 0.5 ) \beta\in (0,0.5) β∈(0,0.5)
并行增强
该类别方法生成一张锚图(anchor image)的两个带噪声版本,其目标为学习某种表征以使这两种增强的样本具有同样的嵌入形式
SimCLR
SimCLR 提出了一种用于视觉表征对比学习的简单的框架。其通过在潜在空间中最大化同一样本不同增强版本的对比损失的一致性来学习视觉输入的表征。
一口气说完不累吗,真是无语啊
It learns representations for visual inputs by maximizing agreement between differently augmented views of the same sample via a contrastive loss in the latent space.
- 样本集中随机采样 N N N个样本,对每个样本执行两种不同的数据增强操作,得到 2 N 2N 2N个增强后的样本。
x ~ i = t ( x ) , x ~ j = t ′ ( x ) , t , t ′ ∼ T \tilde{x}_i = t(x), \tilde{x}_j = t^{'}(x), t, t^{'}\sim T x~i=t(x),x~j=t′(x),t,t′∼T
其中上述两种不同的数据增强操作子 t t t 和 t ′ t^{'} t′,采样于增强集合 T T T中的同一系列。数据增强操作包括随机裁剪,带有随机翻转的尺寸缩放,颜色失真,以及高斯模糊。 - 给一正样本对,其他 2 ( N − 1 ) 2(N-1) 2(N−1)个数据点被认为是负样本。表达式可通过一基础编码器 f ( ⋅ ) f(\cdot) f(⋅)给出:
h i = f ( x ~ i ) , h j = f ( x ~ j ) h_i = f(\tilde{x}_i), h_j = f(\tilde{x}_j) hi=f(x~i),hj=f(x~j) - 对比学习损失函数使用余弦相似度 s i m ( . , . ) sim(.,.) sim(.,.)定义。这里注意,损失函数并不直接针对表征空间 g ( . ) g(.) g(.),而是作用于该表征的额外一映射层。但最终只有表征 h h h被用于下游任务中。
z i = g ( h i ) , z j = g ( h j ) \mathbf{z}_i = g(h_i), \mathbf{z}_j = g(h_j) zi=g(hi),zj=g(hj)
L S i m C L R ( i , j ) = − l o g e x p ( s i m ( z i , z j ) / τ ) ∑ k = 1 2 N I k ≠ i e x p ( s i m ( z i , z k ) / τ ) L_{SimCLR}^{(i,j)}=-log\frac{exp(sim(\mathbf{z}_i,\mathbf{z}_j)/\tau)}{\sum_{k=1}^{2N}\mathbb{I}_{k\neq i}exp(sim(\mathbf{z}_i,\mathbf{z}_k)/\tau)} LSimCLR(i,j)=−log∑k=12NIk=iexp(sim(zi,zk)/τ)exp(sim(zi,zj)/τ)
其中 I k ≠ i \mathbb{I}_{k\neq i} Ik=i是指示函数: 1 1 1 if k ≠ i k\neq i k=i 0 0 0 otherwise。
SimCLR需要很大的batch size来引入足够的负样本,以实现最终优秀的性能。
BYOL
与上述方法(SimCLR)不同,BYOL (Bootstrap Your Own Latent; Grill, et al 2020)在不使用负样本地情况下实现了SOTA性能。其依赖于两个神经网络,名为在线和目标网络,它们彼此交互并互相学习。目标网络(参数化为 ξ \xi ξ)与在线网络(参数化为 θ \theta θ)具有相同的结构,但使用了 polyak 均值权重, ξ ← τ ξ + ( 1 − τ ) θ \xi \leftarrow \tau \xi + (1-\tau)\theta ξ←τξ+(1−τ)θ。
该方法旨在学习某一可被用于下游任务中的表征 y y y。由 θ \theta θ参数化的在线网络包含:
- 编码器 f θ f_\theta fθ
- 映射器 g θ g_\theta gθ
- 预测器 q θ q_\theta qθ
sg表示停止梯度。
给一图像 x \mathbf{x} x,BYOL损失由以下方式构建:
- 利用采样于 t ∼ T , t ′ ∼ T t\sim\mathcal{T}, t^{'}\sim\mathcal{T} t∼T,t′∼T的增强技术得到 x \mathbf{x} x的增强版本 v = t ( x ) ; v ′ = t ′ ( x ) \mathbf{v}=t(\mathbf{x});\mathbf{v}^{'}=t^{'}(\mathbf{x}) v=t(x);v′=t′(x);
- 将其编码为表征, y θ = f θ ( v ) , y ′ = f ξ ( v ′ ) \mathbf{y}_\theta=f_\theta(\mathbf{v}),\mathbf{y}^{'}=f_{\xi}(\mathbf{v}^{'}) yθ=fθ(v),y′=fξ(v′);
- 将其映射为潜变量, z θ = g θ ( y θ ) , z ′ = g ξ ( y ′ ) \mathbf{z}_\theta=g_\theta(\mathbf{y}_\theta), \mathbf{z}^{'}=g_\xi (\mathbf{y}^{'}) zθ=gθ(yθ),z′=gξ(y′)
- 在线网络输出预测 q θ ( z θ ) q_\theta(\mathbf{z}_\theta) qθ(zθ);
- 对 q θ ( z θ ) q_\theta(\mathbf{z}_\theta) qθ(zθ)和 z ′ \mathbf{z}^{'} z′做L2规范化,得到 q ˉ θ ( z θ ) = q θ ( z θ ) / ∣ ∣ q θ ( z θ ) ∣ ∣ 2 \bar{q}_\theta(\mathbf{z}_\theta)=q_\theta(\mathbf{z}_\theta)/||q_\theta(\mathbf{z}_\theta)||_2 qˉθ(zθ)=qθ(zθ)/∣∣qθ(zθ)∣∣2;
- 计算规范化项 q ˉ θ ( z θ ) \bar{q}_\theta(\mathbf{z}_\theta) qˉθ(zθ)和 z ′ \mathbf{z}^{'} z′之间的MSE损失函数 L θ B Y O L \mathcal{L}_\theta^{\mathbf{BYOL}} LθBYOL;
- 其对称损失 L ~ θ B Y O L \tilde{\mathcal{L}}_\theta^{\mathbf{BYOL}} L~θBYOL可以通过交换 v ′ \mathbf{v}^{'} v′和 v \mathbf{v} v得到;即,将 v ′ \mathbf{v}^{'} v′送入在线网络, v \mathbf{v} v送入目标网络。
- 最终损失项为 L θ B Y O L + L ~ θ B Y O L \mathcal{L}_\theta^{\mathbf{BYOL}}+\tilde{\mathcal{L}}_\theta^{\mathbf{BYOL}} LθBYOL+L~θBYOL,且只有 θ \theta θ被优化。
与现有多数基于对比学习的方法不同,BYOL不使用负样本。大多数自举法(Bootstrap approaches) 都依赖于伪标签或聚类索引,但是BYOL直接对潜在表征进行bootstrap。
没有负样本,BYOL依然表现很好。Abe Fetterman & Josh Albrecht 的博客列出了两个关于复现BYOL的意外发现:
- 移除 batch normalization 后,BYOL 的性能与随机输出无异。
- Batch normalization操作隐式带入了对比学习。他们相信使用负样本对避免模型崩塌具有重要作用(比如,如果你使用全零向量表示每个数据点该怎么办?)。Batch normalization 隐式地带入了对负样本地依赖,因为不论一组输入有多相似,输出值总会被重分布(re-distributed, 服从 ∼ N ( 0 , 1 ) \sim\mathcal{N}(0,1) ∼N(0,1))。因此 batch normalization避免了模型崩塌。
Barlow Twins
Barlow Twins (Zbontar et al.2021) 将某一样本的两个失真版本输入同一网络来提取特征,同时试着令两组输出特征之间的互相关矩阵趋于单位阵。其目标在于使属于同一样本的不同失真版本的表征向量保持相似,同时最小化向量之间的冗余。
我们令 C C C为计算得的由同一网络预测的不同输出间的互相关矩阵。其为方阵,尺寸等于特征网络输出的维度。矩阵 C i j C_{ij} Cij中的每个条目为网络输出的,位于索引 i , j i, j i,j和batch索引 b b b的向量 z b , i A \mathbf{z}_{b,i}^{A} zb,iA和 z b , j B \mathbf{z}_{b,j}^{B} zb,jB维度之间的余弦相似度。其值域为 − 1 -1 −1(完全负相关)与 1 1 1(完全相关)之间。
L B T = ∑ i ( 1 − C i i ) 2 ⏟ 不变项 + λ ∑ i ∑ i ≠ j C i j 2 ⏟ 减少冗余项 L_{BT}=\underbrace{\sum_{i}(1-C_{ii})^2}_{不变项}+\lambda\underbrace{\sum_{i}\sum_{i\neq j}C_{ij}^2}_{减少冗余项} LBT=不变项 i∑(1−Cii)2+λ减少冗余项 i∑i=j∑Cij2
其中 C i j = ∑ b z b , i A z b , j B ∑ b ( z b , i A ) 2 ∑ b ( z b , j B ) 2 C_{ij}=\frac{\sum_{b}\mathbf{z}_{b,i}^A\mathbf{z}_{b,j}^B}{\sqrt{\sum_{b}(\mathbf{z}_{b,i}^A)^2}\sqrt{\sum_{b}(\mathbf{z}_{b,j}^B)^2}} Cij=∑b(zb,iA)2∑b(zb,jB)2∑bzb,iAzb,jB
Barlow Twins 在自监督学习方面的表现丝毫不弱于SOTA。它很自然地避免了琐碎的常数(比如,塌陷表征),并且对不同训练batch都很鲁棒 ∗ ^* ∗。
原文:It naturally avoids trivial constants (i.e. collapsed representations), and is robust to different training batch sizes.