对比聚类CC:Contrastive Clustering论文详解

937 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情

论文地址:www.aaai.org/AAAI21Paper…

对比学习

对比学习近几年在计算机视觉领域可谓是'火遍全网',在ICLR2020上深度学习三巨头 Bengio 、 LeCun和Hinton就一致认定自监督学习(Self-Supervised Learning)是AI的未来。作为一种有前途的无监督学习范式,对比学习在表示学习中也取得了最先进的性能。

对比学习的基本思想是将原始数据映射到一个特征空间,其中正对的相似性最大化,而负对的相似性最小化。在早期的作品中,正负对被称为先验,大量的数据对 对 对比模型的性能至关重要,在无监督设置下可以使用以下两种策略来构建正负实例对:

  1. 使用聚类结果作为伪标签来指导正负实例对的构建。
  2. 将每个实例视为由特征向量表示的类,并通过数据增强构造实例对。具体来说,正对由同一实例的两个增强视图组成,其他对被定义为负。

论文创新点

这篇论文 Contrastive Clustering(下文简称 CC)的创新点呢,我认为主要是:
提出一种单阶段端到端在线聚类的方法CC,将实例层(instance-level)和集群层(cluster-level)进行对比学习。对比学习的基本思想是:将原始数据映射到一个特征空间,然后最大化正对的相似性,最小化负对的相似性。

对于此,论文中也有相应图,如下所示:

image.png

这张图包含的方法,如果用文字表达,就是:
给定数据集,首先通过数据增强构建正负实例对,然后投影到特征空间。其中特征空间的行空间和列空间分别进行实例层次和集群层次的对比学习。特征矩阵的每行可以看做实例的softlabel(每个cluster分配的概率,即该实例属于每个簇的概率,通过softmax得到),每列为聚类表示(每个cluster在实例上的分布,即该簇包含哪些实例)。

论文中所用方法

这篇论文呢,主要包含三个部分,PCB、ICH、CCH,我们依次来具体讲解一下每一部分用到的方法和损失函数。

论文框架

image.png 上图是 CC 的整体框架,使用两个数据增强来构造数据对,然后使用一个共享的深度神经网络从不同的增强图中提取特征。两个单独的MLP(o表示ReLU激活和~表示Softmax操作(用于生成软标签)用于将特征投影到行和列空间,在其中分别进行实例级和聚类级对比学习。

PCB(Pair Construction Backbone)

选定一个数据增强的方法集合T(文中选择的是ResizedCrop,Colorlitter, Grayscale, HorizontalFlip,GaussianBlur)。对输入的图片x,T中随机抽取两种数据增强方法TaTb从T中随机抽取两种数据增强方法T^a、T^b,分别对 x进行转换,得到增广后的图片xaxbx^a,x^b。接着构造一个神经网络(常规的卷积网络如resnet等),分别以xaxbx^a、x^b作为输入,得到它们的特征向量(1F1*F的向量)。按照这个方法对所有输入的图片进行处理,将使用 TaT^a 方法进行增广的图片对应的特征向量拼接在一起,就得到了特征矩阵 hah^a,同理可以得到 hbh^b.

ICH(Instance-level Contrastive Head)

首先,要定义对比训练中的正负样本对是什么,论文中让由同一个图像x增广出的图像xaxbx^a,x^b为正样本对,而与除此之外的所有图像互为负样本对(2N-2个)。然后,在得到上述的特征矩阵 hahbh^a、h^b后,先经过非线性的MLP(激活函数为ReLu),将它们映射到子空间,得到zazbz^a、z^b后,再进行之后的操作。

在ICH中,Zik(i[0,N),ka,b)Z_i^k (i∈[0,N),k∈{a,b}), 下标 i 代表着 z 的第i行,即第i张图片;上标 k 代表着第 k 种数据增强。zikz_i^k 是经过第k种数据增强后的第i张图的特征向量,两张图之间的相似性可以用余弦距离来比较,即

image.png

对于一个样本xiax_i^a ,损失为:(最大化由同一张图片增广出来的 xaxbx^a 、x^b 的相似度)

image.png

其中,分母是经过变换a中第i个图片与变换a中所有图片的相似度之和,再加上变换a中第i个图片与变换b中所有图片的相似度之和。分子是变换a,b中第i个图片的相似度。τ 是温度参数,它越大,得到的结果越平滑,同时loss也就越大。

ICH损失函数如下:

image.png

CCH (Cluster-level Contrastive Head)

与ICH部分相同,只不过在MLP最后连接了一层sigmoid函数。得到的 yayby^a 、y^b 是 N*M 矩阵,其中N为输入图片的数量,M为簇的个数。yik(i[0,M),ka,b)y_i^k (i∈[0,M),k∈{a,b}) yky^k 矩阵的第i列,表示经过第 k 种增强后第i簇的特征向量,对于 yky^k 中的点 yijky_ij ^k 代表了 yky^k 中第 i 个图属于第 j 簇的概率,所以 yiky_i^k 可以表示该簇的特征向量。

两张图的相似性度量如下:

image.png

损失函数如下

image.png

整体损失函数如下:

image.png