0%

论文阅读-contrastive-learning-Unsupervised Learning of Visual Features by Contrasting Cluster Assignments

动机

  • 现有的对比学习方法依靠两两特征之间的显式比较,计算开销较大;
  • 有证据表明在训练过程中比较更多的视图可以改进得到的模型,但大多数的对比方法对每幅图像只进行一对变换;

贡献

  • 提出了一种新的在线聚类损失,即通过将图像特征映射到一组可训练的原型向量来避免对每一对图像进行比较,它对batchsize的敏感度不高,且无需巨大的memory bankmomentum encoder
  • 提出了一种新的图像增强策略multi-crop,简单地随机抽样不同分辨率的视图来代替两个全分辨率视图,带来性能上的提升且无额外的计算和内存开销。

本文的方法

本文提出了一种基于聚类的在线自监督方法,典型的基于聚类的方法是离线的,即在聚类分配步骤和训练步骤之间交替进行,前者是对整个数据集的图像特征进行聚类,后者是对不同图像视图预测的聚类分配,即codes。本文则不将codes作为目标,而只是加强同一图像的视图之间的映射的一致性,即可认为是比较多个图像视图之间的codes而不是特征。

即从图像的一个增强视图计算codes,而从其它增强视图上去预测codes。给定同一图像两种不同增强视图的特征 \mathbf{z}_t \mathbf{z}_s ,通过将这些特征匹配到一组原型 \{\mathbf{c}_1,…,\mathbf{c}_K\} 来计算对应的codes \mathbf{q}_t \mathbf{q}_s ,则设置为一个交换预测问题,损失如下:

L\left(\mathbf{z}_{t}, \mathbf{z}_{s}\right)=\ell\left(\mathbf{z}_{t}, \mathbf{q}_{s}\right)+\ell\left(\mathbf{z}_{s}, \mathbf{q}_{t}\right)

其中 \ell\left(\mathbf{z}, \mathbf{q}\right)​ 是测量特征 \mathbf{z}​ code \mathbf{q}​ 之间的契合度,即如下图所示,使用codes \mathbf{q}_t​ \mathbf{q}_s​ 来比较特征 \mathbf{z}_t​ \mathbf{z}_s​ ,如果两个特征捕获了相同的信息,则从另一个特征预测codes也是可行的。

Online clustering

如上图,应用从图像变换集合 \mathcal{T}​ 中采样的变换 t​ ,将每张图像 \mathbf{x}_n​ 变换为增强视图 \mathbf{x}_{nt}​ ,通过应用非线性映射 f_{\theta}​ 将增强视图映射到到向量表示,再投影到单位球面上得到 \mathbf{z}_{nt}=f_{\theta}(\mathbf{x}_{nt})/|f_{\theta}(\mathbf{x}_{nt})|_2​ ,再映射到 K​ 可训练的原型向量 \{\mathbf{c}_1,…,\mathbf{c}_K\}​ 来计算对应的code \mathbf{q}_{nt}​ ,用 \mathbf{C}​ 表示列为 \mathbf{c}_1,…,\mathbf{c}_K​ 的矩阵。

交换预测问题

损失的每一项表示code和概率值的交叉熵损失,该概率由 \mathbf{z}_i​ \mathbf{C}​ 中所有原型 \mathbf{c}_i​ 的点积经softmax得到,即:

\ell\left(\mathbf{z}_{t}, \mathbf{q}_{s}\right)=-\sum_{k} \mathbf{q}_{s}^{(k)} \log \mathbf{p}_{t}^{(k)}, \quad \text { where } \quad \mathbf{p}_{t}^{(k)}=\frac{\exp \left(\frac{1}{\tau} \mathbf{z}_{t}^{\top} \mathbf{c}_{k}\right)}{\sum_{k^{\prime}} \exp \left(\frac{1}{\tau} \mathbf{z}_{t}^{\top} \mathbf{c}_{k^{\prime}}\right)}

对所有图像和数据增强对执行此损失,将得到如下的交换预测问题的损失函数:

-\frac{1}{N} \sum_{n=1}^{N} \sum_{s, t \sim \mathcal{T}}\left[\frac{1}{\tau} \mathbf{z}_{n t}^{\top} \mathbf{C q}_{n s}+\frac{1}{\tau} \mathbf{z}_{n s}^{\top} \mathbf{C} \mathbf{q}_{n t}-\log \sum_{k=1}^{K} \exp \left(\frac{\mathbf{z}_{n t}^{\top} \mathbf{c}_{k}}{\tau}\right)-\log \sum_{k=1}^{K} \exp \left(\frac{\mathbf{z}_{n s}^{\top} \mathbf{c}_{k}}{\tau}\right)\right]

通过最小化上述损失来联合优化原型 \mathbf{C} 和图像编码器 f_{\theta}

在线计算code

参考博客:representation learning与clustering的结合(3): SwAV

使用原型 \mathbf{C}​ 来计算codes,使得在minibatch的所有实例都被原型等分,这种均分约束保证minibatch中不同图像的codes是不同的,从而防止出现每个图像都有相同的codes这种崩溃解情况。【补充:本来离线的聚类需要遍历整个数据集,而在线聚类只能在当前的batch中计算,故采用均分约束来防止崩溃解】给定 B​ 个特征向量 \mathbf{Z}=[\mathbf{z}_1,…,\mathbf{z}_B]​ ,去匹配原型 \mathbf{C}​ codes \mathbf{Q}=[\mathbf{q}_1,…,\mathbf{q}_B]​ ,通过优化 \mathbf{Q}​ 去最大化特征和原型之间的相似度,即:

\max _{\mathbf{Q} \in \mathcal{Q}} \operatorname{Tr}\left(\mathbf{Q}^{\top} \mathbf{C}^{\top} \mathbf{Z}\right)+\varepsilon H(\mathbf{Q})

其中, H 为熵, \varepsilon 为控制映射平滑度的参数,文中使用较小的 \varepsilon ,一个强的熵正则化可能导致崩溃解。【补充:假设 \mathbf{z}_1,…,\mathbf{z}_B 的维度均为 d ,则 \mathbf{Z}\in \mathbb{R}^{d\times B} \mathbf{C}\in \mathbb{R}^{d\times K} \mathbf{Q}\in \mathbb{R}^{K\times B} ,则每个元素 q_{kb} 表示第 b 个样本与第 k 个聚类中心的相似度】作者参考以前的方法通过均分约束限制原型去使得在minibatch上有效:

\mathcal{Q}=\left\{\mathbf{Q} \in \mathbb{R}_{+}^{K \times B} \mid \mathbf{Q} \mathbf{1}_{B}=\frac{1}{K} \mathbf{1}_{K}, \mathbf{Q}^{\top} \mathbf{1}_{K}=\frac{1}{B} \mathbf{1}_{B}\right\}

其中 \mathbf{1}_{K}​ 表示维度为 K​ 的向量,上述约束使得在batch中每个原型至少被选择 \frac{B}{K}​ 次。

由于上式的解是连续值,【补充:可以将 \mathbf{Q} 理解为标签, \mathbf{C}^{\top} \mathbf{Z} 理解为预测值,一般来说标签采用one-hot的形式,本文验证连续值更好】如果通过四舍五入得到离散值对于小批量的在线学习效果较差,作者解释可能是变为离散值后收敛速度变快,优化过于激进,作者在实现时采用迭代以下公式求解:

\mathbf{Q}^{*}=\operatorname{Diag}(\mathbf{u}) \exp \left(\frac{\mathbf{C}^{\top} \mathbf{Z}}{\varepsilon}\right) \operatorname{Diag}(\mathbf{v})

其中 \mathbf{u}​ \mathbf{v}​ 为重正则化向量,由Sinkhorn-Knopp算法迭代计算得到。

如果batchsize很小时,即当 B​ 相对 K​ 太小,不可能平均划分为 K​ 个原型,则使用之前的batch中的特征来增大 \mathbf{Z}​ 的大小,在计算训练损失时只使用当前batch特征的codes,实践中一般会存储 3k​ 的特征,远小于传统对比方法的 65k​

Multi-crop

对于捕捉场景或目标的部分区域之间的关系信息,比较随机的图像crop发挥了重要作用,但增加crop或视图的数量会显著增加内存和计算需求,故作者使用两个正常分辨率的crop和采样 V 个低分辨率的部分图像信息的crop

L\left(\mathbf{z}_{t_{1}}, \mathbf{z}_{t_{2}}, \ldots, \mathbf{z}_{t_{V+2}}\right)=\sum_{i \in\{1,2\}} \sum_{v=1}^{V+2} \mathbf{1}_{v \neq i} \ell\left(\mathbf{z}_{t_{v}}, \mathbf{q}_{t_{i}}\right)

在这里,只使用标准分辨率的crop来计算codes,为所有crop计算codes会增加计算时间且影响网络性能(可能是由于部分图像信息会降低特征到codes的映射能力)。

部分实验结果

无监督学习在imagenet的表现:

将无监督学习得到的特征迁移到下游任务:

小批量的训练: