notebook notebook
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)

学习笔记

啦啦啦,向太阳~
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)
  • 深度学习

    • Posts

      • 机器学习模型评估方法和优化
      • Dropout 技术一览
      • NLP 中的 Tokenization 方法总结
      • 基于深度神经网络的聚类算法
        • 1. Background
          • 1.1 什么是聚类?
          • 1.2 什么是深度聚类?
          • 1.3 从两个视角来看 Deep Clustering
        • 2. 从聚类模型看 Deep Clustering
          • 2.1 基于 K-Means 的 Deep Clustering
          • 2.2 基于谱聚类的深度聚类
          • 2.3 基于子空间聚类的深度聚类
      • ERNIE 系列的设计思路
    • PyTorch 入门

    • 鱼书进阶-自然语言处理

    • 深度学习-李宏毅

    • 李宏毅-2017版

    • 李宏毅-2019版

    • 预训练语言模型-邵浩2021版

    • 王树森

  • 机器学习

  • 知识图谱

  • AI
  • 深度学习
  • Posts
yubin
2022-12-29
目录

基于深度神经网络的聚类算法

参考视频:第40期:基于深度神经网络的聚类算法 —— 郭西风 (opens new window)

更多资料:

  • 深度聚类算法研究综述 - 博客园 (opens new window)
  • 基于深度神经网络的图像聚类算法研究 - 知网 (opens new window)
  • 物以类聚人以群分:聚类分析的一些挑战和进展 - 博客园 (opens new window)
  • Deep Clustering | Deep Learning Notes (opens new window)

# 1. Background

# 1.1 什么是聚类?

物以类聚,人以群分:

image-20221229135048148

# 1.2 什么是深度聚类?

image-20221229135149171
  • 传统聚类存在的问题主要是,这种手工设计的 feature extractor 得到的 feature 并不一定是好的 feature,而且 extractor 与聚类模型也没有交互
  • 深度聚类在提取 feature 的时候就已经会考虑 clustering 的目的,两个过程会相互促进,从而达到好的效果。

因此深度聚类的核心思想:学习到的高质量的特征有助于提升聚类算法的性能,而聚类结果反过来可以引导神经网络学习更好的特征。其流程与有监督深度学习类似,都是同时完成特征学习任务和后续任务(分类、回归)。

深度聚类的一般范式:网络损失与聚类损失的组合

image-20221229135712368

# 1.3 从两个视角来看 Deep Clustering

image-20221229140116041

# 2. 从聚类模型看 Deep Clustering

# 2.1 基于 K-Means 的 Deep Clustering

先看一下 K-Means 是怎么做的:

review: K-Means

给定 n 个样本 x 和 K 个初始化的聚类中心 ,K-Means 通过最小化类内均方误差实现对样本的划分。对应的损失函数为:

其中, 指示样本 i 是否属于类别 j,是为 1,否为 0.

  • 这里的损失其实就是每个样本距离它最近聚类中心的距离的累加
  • K-means 所要优化的是聚类的中心 和样本的标签 s

这种方式存在的一个问题是,x 是一个样本 feature,如果 x 在它所在的 feature space 中不容易被区分,那整体的聚类效果将不太好。所以一个想法是如果 x 经过某种变换,变换到一个新的空间里面,如果在新的 space 里面比较容易做 clustering,那效果就会不错,而基于神经网络的 deep clustering 其实就是这种思路,这种 feature space 的变换就交给了神经网络。

用 表示以 w 为参数的神经网络,则基于 K-means 的 deep clustering 的 loss function 如下:

这里需要使用 loss 同时对 、、 进行优化更新,实现特征学习与聚类过程的联合训练。

但由于神经网络的映射能力特别强,直接最小化这个 loss function 有可能得到退化解:神经网络 将所有样本 x 都映射到同一个点,此时损失函数为 0,但所有样本都在同一个类里。

因此需要加入额外约束消除退化解,比如加入网络损失 [1-4],或显式约束样本在各类均匀分布[5]。

优缺点:

  • 优点:简单直观,与单独使用 KMeans 相比聚类性能有较大幅度提升。
  • 缺点:继承了 KMeans 受初始化影响大、不能处理簇形状非凸的数据、无法得到全局最优解等

参考文献:

[1] YANG B, et al. Towards kmeansfriendly spaces: Simultaneous deep learning and clustering[C]//ICML. 2017: 3861-3870. [2] TIAN K, et al. Deepcluster: A general clustering framework based on deep learning[C]//ECML/PKDD. 2017: 809-825. [3] ALQAHTANI A, et al. A deep convolutional autoencoder with embedded clustering[C]//ICIP. 2018: 4058-4062. [4] MA Q, et al. Learning representations for time series clustering[C]//NeurIPS. 2019: 3776-3786. [5] CARON M, et al. Deep clustering for unsupervised learning of visual features[C]//ECCV. 2018: 139-156.

# 2.2 基于谱聚类的深度聚类

review 一下 spectral clustering,它把聚类的过程转换成了一个图分割的问题。

Spectral Clustering

给定样本集 x 和聚类个数 K 后,先根据样本之间的距离构建相似性矩阵 A,然后通过最小化下列损失 函数求解谱嵌入特征 Z:

其中 是 Z 的第 i 行,对应第 i 个样本 的谱嵌入特征。

扩展到 deep clustering 也很自然,谱聚类并没有显式求出样本 到特征 的映射 ,很自然的想法是使用深度神经网络来实现映射 ,使用以下的 loss function 来训练神经网络 ,称为 SpectralNet:

image-20221229143141321

它的核心思想就是:用神经网络来显式地刻画样本 x 到它谱空间的嵌入。

当然它也存在不少问题:

  • 性能受限于相似性矩阵 A 的质量,Yang等[1]使用自编码器的嵌入层特征作为 SpectralNet[2] 输入。
  • Huang等[3]将 SpectralNet 扩展到多视图场景。
  • Yang等[4]扩展了谱嵌入的方式,由原来的最小化在嵌入空间的欧式距离变为最小化样本之间的 后验概率分布

但是以上的改进的核心思想仍然不变。

优缺点:

  • 优点:通过显式求解特征映射,可以使用批量训练的策略,提高向大规模数据的可扩展性。同时与基于 K-Means 的深度聚类算法相比,能充分利用数据的拓扑结构,实现对非凸数据的聚类。
  • 缺点:显式求解的特征映射不能保证是全局最优的。使用同样的相似性矩阵 A,性能更差。

参考文献:

[1] YANG X, et al. Deep spectral clustering using dual autoencoder network[C]//CVPR. 2019:4066-4075. [2] SHAHAM U, et al. Spectralnet: Spectral clustering using deep neural networks[C]//ICLR. 2018. [3] HUANG S, et al. Multi-spectralnet: Spectral clustering using deep neural network for multiview data[J]. IEEE Transactions on Computational Social Systems, 2019, 6:749-760. [4] YANG L, et al. Deep clustering by gaussian mixture variational autoencoders with graph embedding[C]//ICCV. 2019:6439-6448.

# 2.3 基于子空间聚类的深度聚类

// TODO

编辑 (opens new window)
上次更新: 2022/12/29, 06:39:48
NLP 中的 Tokenization 方法总结
ERNIE 系列的设计思路

← NLP 中的 Tokenization 方法总结 ERNIE 系列的设计思路→

最近更新
01
Deep Reinforcement Learning
10-03
02
误删数据后怎么办
04-06
03
MySQL 一主多从
03-22
更多文章>
Theme by Vdoing | Copyright © 2021-2024 yubincloud | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×