Deep Clustering Algorithms

作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

本文研究路线:深度自编码器(Deep Autoencoder)->Deep Embedded Clustering(DEC)->Improved Deep Embedded clustering(IDEC)->Deep Convolutional Embedded Clustering(DCEC)->Deep Fuzzy K-means(DFKM),其中Deep Autoencoder已经在深度自编码器(Deep Autoencoder)MATLAB解读中提到,也有很多深度自编码器的改进方法,不详细讲解,重点谈深度聚类算法。如有不对之处,望指正。

深度聚类算法的网络架构图

深度聚类算法的损失函数

1. Deep Embedded Clustering

1.1 Stochastic Neighbor Embedding (SNE)

SNE是一种非线性降维策略,两个特征之间存在非线性相关性,主要用于数据可视化,PCA(主成成分分析)是一种线性降维策略,两个特征之间存在线性相关性。SNE在原始空间(高维空间)中利用Gauss分布将数据点之间的距离度量转化为条件概率,在映射空间(低维空间)中利用Gauss分布将映射点之间的距离度量转化为条件概率,并利用KL散度来最小化高维空间与低维空间的条件概率。

SNE面临的问题有两个:(1)KL散度是一种非对称度量,(2)拥挤问题。对于非对称问题,定义pij,将非对称度量转化为对称度量。但对称度量仍然面临拥挤问题,映射到低维空间中,映射点之间不能根据数据本身的特性很好地分开。

对于拥挤问题(The Crowding Problem)的解决,提出t-SNE,一种非线性降维策略,主要用于可视化数据。引入厚尾部的学生t分布,将低维空间映射点之间的距离度量转化为概率分布t分布qij,使得不同簇之间的点能很好地分开。

1.2 t-SNE

1.3 Deep Embedded Clustering(DEC)

受t-SNE的启发,提出DEC算法,重新定义原始空间(高维空间)的度量pij。微调阶段,舍弃掉编码器层,最小化KL散度作为损失函数,迭代更新参数。DEC通过降噪自编码,逐层贪婪训练后组合成栈式自编码,然后撤去解码层,仅使用编码层,对提取出来的特征使用相对熵作为损失函数对网络进行微调,该结构可以同时对数据进行特征学习和聚类。但是DEC算法没有考虑微调会扭曲嵌入式空间,削弱嵌入式特征的代表性,从而影响聚类效果。

DEC算法先使用整个网络进行预训练,得到原始数据经过非线性映射到潜在特征空间的数据表示,即特征。然后对得到的特征用K-means算法进行网络初始化,得到初始聚类中心。再使用相对熵迭代,微调网络,直至满足收敛性判定准则停止。

2. Improved Deep Embedded Clustering(IDEC)

DEC丢弃解码器层,并使用聚类损失Lc对编码器进行微调。作者认为这种微调会扭曲嵌入空间,削弱嵌入特征的代表性,从而影响聚类性能。因此,提出保持解码器层不变,直接将聚类损失附加到嵌入空间。IDEC算法是对DEC算法的改进,通过保存局部结构防止微调对嵌入式空间的扭曲,即在预训练时,使用欠完备自编码,微调时的损失函数采用相对熵和重建损失之和,以此来保障嵌入式空间特征的代表性。

基于局部结构保留的深度嵌入聚类IDEC是对DEC算法的改进,通过保存局部结构方式避免微调时对嵌入空间的扭曲。IDEC算法在预训练结束后,对重建损失和聚类损失的加权和进行微调,在最大限度保证不扭曲嵌入空间的前提下,得到最优聚类结果。

3. Deep Convolutional Embedded Clustering(DCEC)

深度卷积嵌入聚类算法(deep convolutional embedded clustering, DCEC),是在DEC原有网络基础上,加入了卷积自编码操作,并在特征空间保留数据局部结构,从而取得了更好聚类效果。

深度卷积嵌入聚类算法DCEC是在IDEC算法基础上进行的改进,将编码层和解码层中的全连接换成卷积操作,这样可以更好地提取层级特征。图中编码层和解码层各有3层卷积,卷积层后加了一个flatten操作拉平特征向量,以获得10维特征。DCEC只是将IDEC的所有全连接操作换成卷积操作,其损失函数依旧是重建损失和聚类损失之和。

4. Deep Fuzzy K-means(DFKM)

Deep Fuzzy K-means同样在低维映射空间中加入聚类过程,将特征提取与聚类同时进行,引入熵加权的模糊K-means,不采用原来的欧氏距离,而是自己重新定义度量准则,权值偏置的正则化项防止过拟合,提高泛化能力。

5. 参考文献

[1] Maaten L, Hinton G. Visualizing data using t-SNE[J]. Journal of machine learning research, 2008, 9(Nov): 2579-2605.

[2] Vincent P, Larochelle H, Lajoie I, et al. Stacked denoising autoencoders: Learning useful representations in a deep network with a local denoising criterion[J]. Journal of machine learning research, 2010, 11(Dec): 3371-3408.

[3] Xie J, Girshick R, Farhadi A. Unsupervised deep embedding for clustering analysis[C]//International conference on machine learning. 2016: 478-487.

[4] Guo X, Gao L, Liu X, et al. Improved deep embedded clustering with local structure preservation[C]//IJCAI. 2017: 1753-1759.

[5] Guo X, Liu X, Zhu E, et al. Deep clustering with convolutional autoencoders[C]//International Conference on Neural Information Processing. Springer, Cham, 2017: 373-382.

[6] Zhang R, Li X, Zhang H, et al. Deep Fuzzy K-Means with Adaptive Loss and Entropy Regularization[J]. IEEE Transactions on Fuzzy Systems, 2019.

[7] t-SNE相关资料:t-SNE完整笔记An illustrated introduction to the t-SNE algorithm从SNE到t-SNE再到LargeVist-SNE算法-CSDN

[8] DEC与IDEC的Python代码-GithubDEC-Keras-Githubpiiswrong/dec-GithubDCEC-Github

[9] DFKM的Python代码-Github

[10] 谢娟英,侯琦,曹嘉文. 深度卷积自编码图像聚类算法[J]. 计算机科学与探索, 2019, 13(4): 586-595.DOI:10.3778/j.issn.1673-9418.1806029.

[11] Deep Clustering: methods and implements-Github深度聚类会议论文汇总

[12] Deep Clustering | Deep Learning Notes

Deep Clustering Algorithms的更多相关文章

  1. 【论文阅读】Deep Clustering for Unsupervised Learning of Visual Features

    文章:Deep Clustering for Unsupervised Learning of Visual Features 作者:Mathilde Caron, Piotr Bojanowski, ...

  2. Introduction to Deep Learning Algorithms

    Introduction to Deep Learning Algorithms See the following article for a recent survey of deep learn ...

  3. 基于图嵌入的高斯混合变分自编码器的深度聚类(Deep Clustering by Gaussian Mixture Variational Autoencoders with Graph Embedding, DGG)

    基于图嵌入的高斯混合变分自编码器的深度聚类 Deep Clustering by Gaussian Mixture Variational Autoencoders with Graph Embedd ...

  4. 论文解读SDCN《Structural Deep Clustering Network》

    前言 主体思想:深度聚类需要考虑数据内在信息以及结构信息. 考虑自身信息采用 基础的 Autoencoder ,考虑结构信息采用 GCN. 1.介绍 在现实中,将结构信息集成到深度聚类中通常需要解决以 ...

  5. PP: Deep clustering based on a mixture of autoencoders

    Problem: clustering A clustering network transforms the data into another space and then selects one ...

  6. 论文解读(DAEGC)《Improved Deep Embedded Clustering with Local Structure Preservation》

    Paper Information Title:<Attributed Graph Clustering: A Deep Attentional Embedding Approach>Au ...

  7. 论文解读DEC《Unsupervised Deep Embedding for Clustering Analysis》

    Junyuan Xie, Ross B. Girshick, Ali Farhadi2015, ICML1243 Citations, 45 ReferencesCode:DownloadPaper: ...

  8. 【神经网络】自编码聚类算法--DEC (Deep Embedded Clustering)

    1.算法描述 最近在做AutoEncoder的一些探索,看到2016年的一篇论文,虽然不是最新的,但是思路和方法值得学习.论文原文链接 http://proceedings.mlr.press/v48 ...

  9. 论文解读(DFCN)《Deep Fusion Clustering Network》

    Paper information Titile:Deep Fusion Clustering Network Authors:Wenxuan Tu, Sihang Zhou, Xinwang Liu ...

随机推荐

  1. 安装python3.7

    首先安装依赖包,centos里面是-devel,如果在ubuntu下安装则要改成-dev,依赖包缺一不可,一步一步复制到终端执行就可以! sudo yum -y groupinstall " ...

  2. 数据库主从监控脚本,数据传到influxdb

    #!/bin/bash port=`/usr/sbin/ss -ntlp | | awk '{print $4}' | awk -F":" '{print $2}'` array= ...

  3. 《SQL基础教程》+ 《SQL进阶教程》 学习笔记

    写在前面:本文主要注重 SQL 的理论.主流覆盖的功能范围及其基本语法/用法.至于详细的 SQL 语法/用法,因为每家 DBMS 都有些许不同,我会在以后专门介绍某款DBMS(例如 PostgreSQ ...

  4. 将jsp页面转化为图片或pdf升级版(二)(qq:1324981084)

    java高级架构师全套vip教学视频,需要的加我qq1324981084 上面我们已经将jsp页面转化成html页面了,那么接下来我们的目标是利用这个html页面形成pdf或图片格式.这里我用到的是w ...

  5. Android中通过数组资源文件xml与适配器两种方式给ListView列表视图设置数据源

    场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...

  6. PostgreSQL将日期转为当前年、月、日的函数date_trunc

    PostgreSQL将日期转为年.月.日的函数date_trunc: 当前年: select  date_trunc('year',now()) 当前月: select  date_trunc('mo ...

  7. VMware使用与安装

    VMware安装 下载完Vmware -> 双击打开安装包 -> 选择下一步(如下图界面) 选择接受协议,点击下一步 选择经典进行安装.这个是默认安装,会把默认插件安装到相对应的路径 选择 ...

  8. junit 常用注解 + junit 断言详解

    @Test: 在junit3中,是通过对测试类和测试方法的命名来确定是否是测试,且所有的测试类必须继承junit的测试基类.在junit4中,定义一个测试方法变得简单很多,只需要在方法前加上@Test ...

  9. P1197 [JSOI2008]星球大战 [删边求连通块个数]

    展开 题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治着整个星系. 某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的 ...

  10. C++关于锁的总结(一)

    C++关于锁的总结(一) 线程中的锁分为两种,互斥锁和共享锁. 相关的头文件有<mutex>,<shared_mutex>,前者具有std::unique_lock操作,用于实 ...