文章目录

  • Contrastive Clustering
    • 文章介绍
    • 问题背景
    • 拟解决问题
      • 联合优化的应用
    • 主要贡献
    • 相关工作
      • 对比学习
      • 深度聚类
      • 实例级和聚类级的含义
    • 提出的方法
      • 模型结构
      • PCB模块
      • ICH模块
      • CCH模块
      • 算法流程
      • 损失构建
    • 实验
      • 数据集介绍
      • 实验结果
      • 类簇演化过程
      • 数据增强的消融实验
      • 两种对比方式的消融实验
      • 不同数据增强方式的消融实验

Contrastive Clustering

文章介绍

出处: AAAI-2021

摘要:本文提出了一种称为对比聚类(CC)的单阶段在线聚类方法,该方法采用实例级和聚类级的对比学习。具体来说,对于给定的数据集,正实例对和负实例对是通过数据扩充构建然后投影到特征空间中。其中,实例级和聚类级对比学习分别在空间中进行,通过最大化正对的相似性,最小化负对的相似性进行对比聚类。得出的结论为,特征矩阵的行可以被视为实例的软标签,相应地,列可以被视为聚类表示。通过同时优化实例和聚类级对比损失,该模型以端到端的方式联合学习表示和聚类分配。

问题背景

  • 大部分聚类算法在复杂数据集上的表现都很差
  • 大部分深度聚类方法无法满足在线聚类需求

拟解决问题

  • 现有的大部分深度聚类算法需要迭代进行表示学习和聚类这两个过程,利用聚类结构来优化表示,再对更优的表示进行聚类,迭代聚类的过程中容易出现误差累计(联合优化)
  • 聚类过程通常采用k-means等需要全局相似性的算法,使得需要数据全部准备好后才能进行聚类工作,故面临不能处理在线数据的局限性

联合优化的应用

  • A Deep Neural Network for Unsupervised Anomaly Detection and Diagnosis in Multivariate Time Series Data(AAAI-2019) MESCRED 时间序列异常检测,对异常检测、异常原因识别、异常严重程度进行联合处理
  • Learning Representations for Incomplete Time Series Clustering (AAAI-2021)CRLI 不完整时间序列聚类,将不完整时间序列补全和表示学习进行联合优化
  • Contrastive Clustering 本文做到了将表示学习和聚类进行联合优化

主要贡献

  • 基于“标签即表示”的思想,即特征矩阵的行和列本质上分别对应于实例和集群表示,将聚类任务统一到表示学习框架下,对每个样本学习其聚类软标签作为特征表示
  • 该方法不仅在实例层面上进行对比学习,而且在聚类层面上进行对比学习,这种双重对比学习框架可以产生聚类偏好表征
  • 该模型采用单阶段、端到端的工作方式,只需批量优化,因此可以应用于大规模数据集,并且该方法可以在不访问整个数据集的情况下及时预测每个新数据点的聚类分配,适合在线场景

相关工作

对比学习

对比思想: 同时从积极的信息(学习)和消极的信息(区分)中获取知识

过程: 尽可能拉近正样本与正样本之间的距离,同时尽可能的与负样本进行区分

距离度量: 欧几里得距离,余弦相似度,马氏距离

目标: 给定锚点,通过空间变换,使得锚点与正样本间距离尽可能小,与负样本距离尽可能大

深度聚类

神经网络结构: 多层全连接网络、卷积神经网络、深度信念网络、自编码器、生成对抗网络

损失定义: 目前深度聚类模型的损失函数普遍采用聚类损失(聚类方法评价指标)与网络辅助损失组合的方式

网络辅助损失: 由于聚类问题没有监督信息作为指导,单独使用聚类损失作为目标函数很容易导致模型退化. 网络辅助损失则可以理解为模型的正则项,虽然优化该损失函数不能直接获得聚类结果,但是通过对模型参数进行相应的约束,可以帮助模型稳定地训练,提升特征学习的有效性,避免出现退化解。一类是由于网络模型的结构特点自带的损失项,另一类则是基于对网络模型的约束期望而设计

实例级和聚类级的含义

构造输入样本和聚类标签的特征矩阵,矩阵的每一行代表样本属于每个类的概率,每一列代表每个样本属于当前类的概率。即行表示当前样本的标签,列表示分布在数据集上的聚类表示。因此,可以同时在矩阵的行空间和列空间中进行实例级和聚类级的对比学习

提出的方法

模型结构

模型分为三个模块样本对构建模块(PCB)、实例级对比模块(ICH)、聚类级对比模块(CCH)

PCB模块

使用数据扩充方式构建数据对,给定一个数据实例xix_ixi​和两种数据增强方式Ta,TbT_a,T_bTa​,Tb​,得到两个相关样本(正样本)xia,xibx_i^a,x_i^bxia​,xib​,使用了五种类型的数据增强方法,包括调整作物、色抖动、灰度、水平翻转和高斯模糊,以一定的概率独立地应用每个增强量。利用一个共享的深度神经网络f(⋅)f(\cdot)f(⋅),通过hia=f(xia)h^a_i=f(x^a_i)hia​=f(xia​)和hib=f(xib)h^b_i=f(x^b_i)hib​=f(xib​)从增强的样本中提取特征。本文中采用ResNet34进行数据特征提取。

ICH模块

给定一个大小为NNN的batch,每个样本xix_ixi​通过两种数据扩充方式得到2N2N2N个样本对x1a,x2a,xNa,…,x1b,x2b,xNbx_1^a,x_2^a,x_N^a,\dots,x_1^b,x_2^b,x_N^bx1a​,x2a​,xNa​,…,x1b​,x2b​,xNb​,其中的正样本选择为xia,xibx_i^a,x_i^bxia​,xib​,其余样本为负样本,这样每个输入样本有一个正样本对,和2N−22N-22N−2个负样本。为了减轻对比损失引起的信息损失,不直接对特征矩阵进行对比学习。堆叠了一个两层非线性MLP gI(⋅)g_I(\cdot)gI​(⋅),通过zia=gI(hia)z_i^a=g_I(h^a_i)zia​=gI​(hia​)将特征矩阵映射到一个子空间。样本对的相似性是用余弦距离来衡量的,即:

为了优化成对相似性,在不丧失一般性的情况下,给定样本xiax^a_ixia​的损失形式为:

其中,τI\tau _IτI​为实例级对比中超参数(control the softness),由于我们希望识别数据集上的所有正对,因此在每个增强样本上计算实例级的对比损失,即:

CCH模块

按照“标签为表示”的思想,当将数据样本投影到一个维数等于簇数的空间时,其特征的第i个元素可以解释为其属于第i个簇的概率,特征向量相应地表示其软标签。

类簇级的对比抽取批量数据的表示矩阵,表示矩阵的行编码为one-hot形式,列为每个样本属于这一类的概率。与实例级对比类似,非线性MLP gC(⋅)g_C(\cdot)gC​(⋅),通过zia=gC(hia)z_i^a=g_C(h^a_i)zia​=gC​(hia​)将特征矩阵映射到一个子空间,其中yiay_i^ayia​为$ x_ia$的软标签,数据$xa_i通过数据增强转换为通过数据增强转换为通过数据增强转换为x_ia,x_ib,这样就可以得到一个正例的软标签组,这样就可以得到一个正例的软标签组,这样就可以得到一个正例的软标签组y_ia,y_ib$,和2N−22N-22N−2个负例的软标签组。使用余弦距离来衡量聚类对之间的相似性,即:

采用以下损失函数来区分集群y^ia\hat y_i^ay^​ia​与除y^ib\hat y_i^by^​ib​之外的所有其他集群,即:

其中,τC\tau _CτC​为实例级对比中超参数(control the softness),通过遍历所有的簇,最终计算出簇级的对比损失:

其中H(Y)H(Y)H(Y)为分配概率的熵,有助于避免大多数实例被分配给同一个类簇。

算法流程

损失构建

ICH和CCH的优化是一个单阶段和端到端的过程。同时优化两个头,整体目标函数由实例级和簇级对比损失组成,即:

实践中,发现简单地添加两个损失已经很有效,并不需要取设置两个损失的权重。

实验

数据集介绍

实验结果

评价指标:标准互信息(NMI),对比聚类精确度(ACC),调整兰德指数(ARI)

类簇演化过程

数据增强的消融实验

两种对比方式的消融实验

不同数据增强方式的消融实验

参考:

  1. 对比聚类简介

  2. 从对比学习(Contrastive Learning)到对比聚类(Contrastive Clustering)

  3. 深度聚类算法浅谈

  4. 对比学习(Contrastive Learning)综述

论文笔记 -- Contrastive Clustering(对比聚类)相关推荐

  1. 论文笔记: 可解释神经聚类 (鹏鹏专用)

    摘要: 分享对论文的理解, 原文见 Xi Peng, Yunfan Li, Ivor W. Tsang, Hongyuan Zhu, Jiancheng Lv, Joey Tianyi Zhou, X ...

  2. 从对比学习(Contrastive Learning)到对比聚类(Contrastive Clustering)

    从对比学习(Contrastive Learning)到对比聚类(Contrastive Clustering) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailug ...

  3. 深度聚类方法之对比聚类(Contrastive Clustering,CC)

    深度聚类方法之对比聚类(Contrastive Clustering,CC) 1.参考文献 <Contrastive Clustering> 2.深度聚类方法 深度聚类方法大致分为以下几类 ...

  4. 【论文笔记】Unsupervised Deep Embedding for Clustering Analysis(DEC)

    [论文笔记]Unsupervised Deep Embedding for Clustering Analysis(DEC) 文章题目:Unsupervised Deep Embedding for ...

  5. 论文阅读“Graph Contrastive Clustering”(ICCV2021)

    论文标题 Graph Contrastive Clustering 论文作者.链接 作者:Zhong, Huasong and Wu, Jianlong and Chen, Chong and Hua ...

  6. 论文笔记-DEC (Deep Embedded Clustering)

    论文笔记-DEC (Deep Embedded Clustering) 知识点1.将聚类的度量参考T-SNE中的t-分布,将聚类的度量转换成一个概率值(软分配,qij 表示将样本 i 分配给 j 簇的 ...

  7. 论文笔记 | 标准误聚类问题

    关于标准误的选择,如是否选择稳健性标准误.是否采取聚类标准误.之前一直是困惑的,惯用的做法是类似主题的文献做法.所以这一次,借计量经济学课程之故,较深入学习了标准误的选择问题. 在开始之前推荐一个知乎 ...

  8. 【论文笔记】:《Lifelong Spectral Clustering》

    论文笔记:Lifelong Spectral Clustering 论文信息 个人总结 谱聚类 论文做了什么(Abstract) 公式解读 The Proposed L2SC Model 提出模型 M ...

  9. CS224W-图神经网络 笔记5.2:Spectral Clustering - 谱聚类主要思想及关键结论的证明

    CS224W-图神经网络 笔记5.2:Spectral Clustering - 谱聚类主要思想及关键结论的证明 本文总结之日CS224W Winter 2021只更新到了第四节,所以下文会参考202 ...

  10. CS224W-图神经网络 笔记5.1:Spectral Clustering - 谱聚类基础知识点

    CS224W-图神经网络 笔记5.1:Spectral Clustering - 谱聚类基础知识点 本文总结之日CS224W Winter 2021只更新到了第四节,所以下文会参考2021年课程的PP ...

最新文章

  1. 让你的网站提速:图片优化网站推荐
  2. 100%的程序员都想挑战的算法趣题!| 码书
  3. 计算机科学与技术专业的课程体系,基于业务的计算机科学与技术专业课程体系...
  4. EL调用java方法
  5. Hystrix面试 - 深入 Hystrix 断路器执行原理
  6. c语言怎么读取mhx文件内容,C语言重新学习――基础杂类
  7. Linux 切mms数据流,libmms MMSH Server响应解析缓冲区溢出漏洞
  8. python 代码命令大全-Python 命令行参数
  9. R学习笔记(4): 使用外部数据
  10. bilibili缓存视频批量转换成mp4格式,方便学习
  11. Avatar Scaler
  12. Hadoop MapReduce Splits 切片源码分析及切片机制
  13. 组装k39小钢炮(ubuntu16.04),了解一下!
  14. SSD可靠性影响因素、原理和解决方法
  15. 图论中握手定理的详细解释
  16. Flex布局实战:支付宝首页
  17. 湛蓝.Net软件国际化工具V1.0.0.发布了,欢迎大家使用
  18. CISA 督促VMware 管理员修复Workspace ONE UEM 中的严重漏洞
  19. 小程序点击video暂停/开始
  20. 通过源码安装python

热门文章

  1. bp网络拟合函数 matlab_神经网络案例分析—基于Matlab的预测
  2. php文件开头加数据,在PHP中附加到文件的开头
  3. wordpresd免登录发布接口php_实现wordpress的ajax接口请求学会admin-ajax.php的利用
  4. LLVM之clang
  5. 每天进步一点点013
  6. 使用AJAX如何得到数据库当中的值!
  7. Android中View的绘制过程 onMeasure方法简述 附有自定义View例子
  8. JavaScript 中的单例模式 (singleton in Javascript)
  9. java springmvc是什么意思_springmvc的简单理解与使用
  10. java 构造函数 this_Java面向对象2--构造器(Constructor),this关键字