论文阅读“Nearest Neighbor Matching for Deep Clustering”(CVPR2021)

论文标题

Nearest Neighbor Matching for Deep Clustering

论文作者、链接

作者:Dang, Zhiyuan and Deng, Cheng and Yang, Xu and Wei, Kun and Huang, Heng

链接:CVPR 2021 Open Access Repository

代码:GitHub - ZhiyuanDang/NNM: The PyTorch official implementation of the CVPR2021 Poster Paper NNM: Nearest Neighbor Matching for Deep Clustering.


Introduction逻辑(论文动机&现有工作存在的问题)

无监督学习\聚类——传统聚类,聚焦于低维信息——深度聚类,通过非线性变换将样本点映射到嵌入空间——如何提高聚类的语义可信度——现有的深度聚类根据训练策略可以分成两类:(1)交替进行聚类验证和网络训练(2)同时进行特征学习和聚类分配——SCAN:通过挖掘最近邻信息来进行语义聚类——这些方法都没有从局部和全局特征进行考虑

论文核心创新点

局部和全局两个角度来考虑最近邻匹配问题


相关工作

深度聚类:两阶段方法:容易受到邻域估计不一致的影响,因此在训练时存在严重的误差传播问题。单阶段方法:最新的研究大多基于互信息最大化的聚类分配。

对比学习:分三种(1)端到端,受制于显卡显存(2)memory-bank,内存库中的样本特征与DNN的当前样本特征是异步更新的,因此有时不太一致(3)动量编码器


论文方法

本文模型流程:(1)预训练一个带有对比损失的无监督学习模型(2)根据特征相似性寻找结点的最近邻(3)使用本文的最近邻居匹配算法Nearest Neighbor Matching (NNM) 去得到更优的聚类结果

无监督特征学习模型

本文介绍两种:(1)SimCLR(2)MoCo

(1)SimCLR:假设有一个样本s和它的增广s^\prime,以及其分别对应的uu^\prime。损失函数为:

 其中sim()是相似性函数,比如余弦相似性,B是batch-size,\tau是温度函数。1_{k \neq i}是指示函数,当{k \neq i}时为1,否则为0。

(2)MoCo:维护一个动态更新的队列q去存储特征:

其中,M是队列大小。 

最近邻匹配Nearest Neighbor Matching

将最近邻的点视为原样本的正例。将这些正例输入到聚类网络\phi _{cls}中。从没有对比头的预训练网络\phi _{pre}中读取权重。将主干网络最后一层的分类头作为聚类头,其中batch-size为B,类的数目为C

可以使用InfoNCE将样本与其邻居靠近,与其他的点远离。但由于小批量中存在同类样本,直接采用InfoNCE损失可能会导致性能退化。于是,决定只最大化样本与其邻居的相似度通过以下公式:

 其中,p \in \mathbb{R}^{B \times C}\mathcal{N}_{\text {pre }}(p) \in \mathbb{R}^{B \times C}为样本u及其邻居点\mathcal{N}_{\text {pre }}(u)的聚类分布。\mathcal{N}_{\text {pre }}代表从预训练模型提取的邻居结点。<\cdot,\cdot>代表点乘操作用来衡量相似性。因为每一轮的样本分配情况都不一样,于是对经典的对比损失函数做出改进,如下:

 其中q \in \mathbb{R}^{C \times B}以及\mathcal{N}_{\text {pre }}(q) \in \mathbb{R}^{C \times B}\left(q_{i}\right.$ and $\left.\mathcal{N}_{\text {pre }}(q)_{i} \in \mathbb{R}^{B}\right)。为了减小约束的力度,此处的\tau设为1。点乘为聚类分配提供了更强的点对点约束。对于sim(\cdot,\cdot),我们想在每个较近的类和较远的类中做出相同的预测分布。

不仅如此,还引入交叉熵避免琐碎解:

 其中M(p) \in \mathbb{R}^{1 \times C}p的平均值。挖掘最近邻居的简单方法是基于聚类分配(即p)。因为模型中有多个聚类头,所以聚类的分配结果可能不一样,这可能导致误差的传播。于是,比较好的选择最近邻的方法是从嵌入特征中选择。此外,随着网络\phi _{cls}的优化,得到的特征会越来越好。如果为了挖掘更有价值的邻居而忽略这些有用的特征,那就太遗憾了。

在下面的小节中,将从本地(批处理)和全局(整体)级别挖掘这些语义邻居。这样,我们就可以在局部和全局NNM损失中自由地采用多个聚类头策略进行鲁棒预测。

局部最近邻挖掘

假设有f \in \mathbb{R}^{B \times D}p的嵌入特征(在聚类头之前),其中D是嵌入维度。示例图如下

 对于局部水平,从f中选择最近邻,并在每个batch中记作\mathcal{N}_{\text {local }}(f)。根据每个batch对于\mathcal{N}_{\text {local }}(f)的标号,可以获得p对应的邻居即\mathcal{N}_{\text {local }}(p),与上文使用相同的公式即:

 给定有用的\mathcal{N}_{\text {pre}}(p),可以沿着batch维度将它们连接在一起,然后将上述损失重写为:

 其中,\left[\begin{array}{l} p \\ p \end{array}\right] \in \mathbb{R}^{2 B \times C}。相似的,类对比损失也被重写为:

 全局最近邻匹配

经过一个epoch后,获得了最新的整体数据集预测h \in \mathbb{R}^{N \times C}以及特征g \in \mathbb{R}^{N \times D}其中N是训练数据数量。示例图如下。

 从全局的角度,选择g的最近邻并且记为\mathcal{N}_{\text {global }}(h)。以p作为批索引,我们可以得到具有batch大小的预测,即\mathcal{N}_{\text {global }}(h)_{b} \in \mathbb{R}^{B \times C}。与上文相似,损失函数重写为:

 于是全局目标损失为:

 其中\lambda是超参。


算法流程


消融实验设计

损失函数的消融

聚类头数量的消融

最近邻个数选取的消融


一句话总结

从局部和全局两个角度选取邻居点做对比学习


论文好句摘抄(个人向)

(1)Unsupervised learning approach becomes emerging recently since the expensive label acquisition.

(2)It is too regretful to ignore these useful features for mining more valuable neighbors

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值