[文献阅读] Unsupervised Deep Embedding for Clustering Analysis (无监督的深度嵌入式聚类)

news/2024/12/23 18:07:57 标签: embedding, 聚类, 数据挖掘

文章目录

  • Abstract:
  • 摘要
  • 聚类
  • KL散度
  • 深度嵌入式聚类(DEC)
    • KL散度聚类
    • 软分配(soft assignment)
    • KL散度损失
    • 训练
    • 编码器的初始化
    • 聚类中心的初始化
  • 实验评估
  • 总结

Abstract:

This week I read Unsupervised Deep Embedding for Clustering Analysis .It discusses the concept of Unsupervised Deep Embedding for Clustering Analysis (DEC), a method that employs KL divergence for clustering loss to adjust a pre-trained neural network encoder. DEC is an approach that leverages deep neural networks to simultaneously learn feature representations and cluster assignments.

摘要

无监督的深度嵌入式聚类 Unsupervised Deep Embedding for Clustering Analysis http://arxiv.org/abs/1511.06335

k-means和高斯混合模型(GMM)是流行的聚类方法。但是它们的距离指标仅限于原始数据空间,并且在输入维度较高时它们往往会失效。

该论文首先提出将KL散度用于聚类损失,并使用这一损失调整一个预训练的神经网络编码器。称为深度嵌入聚类(DEC),这是一种使用深度神经网络同时学习特征表示聚类分配的方法。为了使KL散度更好应用于聚类任务,文章创设性的设置了KL散度中两个分布,目标分布P真实分布Q。DEC学习从数据空间到低维特征空间的映射,并在其中迭代优化聚类目标,解决了原始数据点高维而失效的问题。对图像和文本语料库的实验评估表明,与最先进的和传统的聚类方法,有了显著的改进。

聚类

聚类是机器学习中的一种无监督的分类方法,给定一组数据点,我们可以使用聚类算法将每个数据点划分为一个特定的组。理论上,同一组中的数据点应该具有相似的属性和/或特征,而不同组中的数据点应该具有高度不同的属性和/或特征,依据此分类。常见的聚类算法比如K-means高斯混合模型(GMM)

深度聚类

在这里插入图片描述

引入了深度学习的聚类深度聚类。通过神经网络的特征学习或者非线性映射,替代传统的手工特征提取器,学习到更高质量的特征。深度聚类算法大都由聚类损失网络损失两部分构成,高质量的特征有助于提升聚类效果,聚类结果可以引导神经网络学习更好的特征。

KL散度

kmeans和高斯混合模型(GMM)是流行的聚类方法的一个分支。这些方法快速且适用于各种各样的问题。但是,它们的距离指标仅限于原始数据空间,并且在输入维度较高时它们往往会失效。

KL散度(Kullback-Leibler divergence),可以以称作相对熵(relative entropy)或信息散度(information divergence)。KL散度的理论意义在于度量两个概率分布之间的差异程度,当KL散度越大的时候,说明两者的差异程度越大;而当KL散度小的时候,则说明两者的差异程度小。如果两者相同的话,则该KL散度应该为0。

离散的情况下用q(x)去近似p(x)的KL散度的公式(对于聚类问题,我们往往只会关心离散的情况):
K L ( P ∣ ∣ Q ) = ∑ p ( x ) p ( x ) q ( x ) KL(P||Q)=\sum {p(x){\frac{p(x)}{q(x)}}} KL(P∣∣Q)=p(x)q(x)p(x)
对上面的式子进行展开:

在这里插入图片描述

最后得到的第一项称作P和Q的交叉熵(cross entropy),后面一项就是P的自身交叉熵

H§代表着基于P分布自身的编码长度,也就是最优的编码长度(最小字节数)。而H(P,Q)则代表着用Q的分布去近似P 分布的信息,自然需要更多的编码长度。并且两个分布差异越大,需要的编码长度越大。所以两个值相减是大于等于0的一个值,代表冗余的编码长度,也就是两个分布差异的程度

公式上可以看出,KL散度具有非对称性,也就是说,分布P到分布Q的KL散度,并不一定等于分布Q到分布P的KL散度。

深度嵌入式聚类(DEC)

聚类问题的数学描述:
考虑将n个点 x i ∈ X , n i = 1 {x_i\in X}, n_i=1 xiX,ni=1的集合聚类为k个类的问题,每个聚类由质心 µ j µ_j µj表示, j = 1 , . . . , k j = 1,... ,k j=1,...,k

首先使用非线性映射 f θ f_θ fθ:X→Z变换数据,而不是直接在数据空间X中进行聚类,其中θ是可学习的参数,Z是潜在特征空间。 Z的维度通常比X小得多,以避免“维度的诅咒”。为了对fθ进行参数化,深层神经网络(DNN)由于其理论函数逼近特性和已证明的特征学习能力而成为最好的选择。

DEC算法通过同时学习特征空间Z中的k个聚类中心 { μ j ∈ Z } k j = 1 k \{{μ_j\in Z}\}^k_{k_j = 1} {μjZ}kj=1k和将数据点映射到Z的神经网络参数θ来对数据进行聚类。DEC有两个阶段:

  1. 非线性映射f_θ:X→Z,使用深度自动编码器进行参数初始化。
  2. KL聚类,其中我们在计算辅助目标分布与最小化KL散度之间进行迭代。

KL散度聚类

给定非线性映射 f θ f_θ fθ的初始估计值和初始聚类质心 { μ j ∈ Z } k j = 1 k \{{μ_j\in Z}\}^k_{k_j = 1} {μjZ}kj=1k,使用在两步之间交替的无监督算法来改善聚类。在第一步中,我们计算嵌入点和聚类质心之间的软分配概率, 第二步,我们通过使用辅助目标分布,从当前的高置信度分配中,学习来更新映射f(θ)的参数,并更新聚类质心。重复该过程,直到满足收敛标准(数据点与其对应的质心不再改变)为止。

软分配(soft assignment)

软分配不同于硬分配,硬分配只给每个数据点分配到一个质心,软分配为每个数据点给出它分配到每个质心的概率

通过**软分配(soft assignment)**策略,将每个数据点分配到每个聚类的概率分布上,而不是硬分配到一个聚类。这种策略可以更好地处理数据点的边界情况和噪声,提高聚类的鲁棒性和准确性。

使用t分布(student学生分布)作为概率分布,来衡量嵌入点 z i z_i zi和质心 µ j µ_j µj之间的相似性:

在这里插入图片描述

其中 z i = f θ ( x i ) ∈ Z z_i=f_θ(x_i)∈Z zi=fθ(xi)Z对应于嵌入后的xi∈X,其中α是t分布的自由度,而 q i j q_{ij} qij可解释为将样本 z i z_i zi分配给聚类j的概率(即软分配)。由于我们无法在无监督的环境中对验证集上的α进行交叉验证,因此对于所有实验,我们使α= 1。

为什么使用t-分布

使用t-分布这一灵感来自t-SNE可视化算法。t-分布是一种长尾分布,与正态分布相比之下,t分布的尾部较高,对异常点不敏感,保证了其鲁棒性,因此其拟合结果更为合理,较好的捕获了数据的整体特征。

KL散度损失

我们希望通过最小化将软分配与目标分布之间的损失来训练我们的模型。为此,我们将目标损失定义为软分配 q i j q_{ij} qij和辅助分布 p i j p_{ij} pij之间的KL散度损失,如下所示:

在这里插入图片描述

从KL散度公式看,分布Q就是软分配使用的t分布,而目标分布P则需要自行拟定,来表示通过迭代质心的移动,使得真实分布Q朝着什么样的方向前进。

目标分布P的选择对于DEC的性能至关重要。

我们希望目标分布P具有以下属性:

  • (1)预测效果好(即提高簇纯度)
  • (2)更加重视具有高置信度的数据点
  • (3)归一化每个损失的贡献重心以防止大型簇扭曲隐藏的特征空间。

文章的实验中,通过先将 q i j q_{ij} qij升至第二次幂,然后通过每个聚类(簇)的频率进行归一化来计算 p i j p_{ij} pij

在这里插入图片描述

其中 f j = ∑ i q i j f_j = \sum_i q_{ij} fj=iqij 。意义是软分配情况下的簇频率。

训练

使用具有动量的随机梯度下降(SGD)来优化参数。

在这里插入图片描述

编码器的初始化

文中的解码-编码器实际就是一个预训练好的泛用的嵌入模型,它能很好的将自然语言通过语义映射到高维空间。

经过逐层训练之后,我们以反向逐层训练的顺序将所有编码器层与所有解码器层连接起来,形成一个深层的自动编码器,然后对其微调以最小化重建损失。最终结果是多层深层自动编码器,中间有一个瓶颈编码层。然后我们丢弃解码器层,并将编码器层用作数据空间和特征空间之间的初始映射

在这里插入图片描述

聚类中心的初始化

为了初始化聚类中心,我们通过初始化的DNN(就是上面的编码器)传递数据以获取嵌入的数据点,然后在特征空间Z中执行标准k-means聚类以获得k个初始质心 { μ j ∈ Z } k j = 1 k \{{μ_j\in Z}\}^k_{k_j = 1} {μjZ}kj=1k

实验评估

我们在一个文本数据集和两个图像数据集上评估了所提出的方法(DEC),并将其与其他算法(包括k-means,LDGMI和SEC)进行了比较。 LDGMI和SEC是基于谱聚类的算法,使用拉普拉斯矩阵和各种变换来提高聚类性能。我们展示了定性和定量结果,这些结果证明了DEC与LDGMI和SEC相比的优势。

为了研究不同算法的性能和通用性,我们对两个图像数据集和一个文本数据集进行了实验:

•MNIST:MNIST数据集由280000像素大小的70000个手写数字组成。这些数字居中并进行尺寸归一化。

•STL-10:96 x 96彩色图像的数据集。有10个类别,每个类别有1300个样本。它还包含100000张相同分辨率的无标签图像(Coates等,2011)。

•REUTERS:REUTERS包含大约810000个以类别树标签的英语新闻报道。我们使用了四个根类别:公司/工业,政府/社会,市场和经济学作为标签,并进一步修剪了由多个根类别标签的所有文档以得到685071个文章。

在这里插入图片描述

总结

无监督的深度嵌入式聚类 Unsupervised Deep Embedding for Clustering Analysis

文章在无监督聚类问题上,首先将KL散度引入,并提出深度嵌入式聚类(DEC)

KL散度是一种描述分布之间差异的函数,这对于离散数据点聚类问题具有很好的描述性。并通过KL散度作为损失,通过再训练的方式,使得预训练的深层神经网络编码器调整成同时学习特征表示聚类分配的网络。在网络的迭代映射和聚类收敛后,每个数据点将被分配到唯一的质心,完成聚类

DEC的创设性不仅在于引入了KL散度,同样在于KL散度中两个分布的设置,目标分布P真实分布Q。软分配中真实分布Q设置为t-分布,目标分布P则通过归一化的真实分布的二次幂计算。

正是这些性质使得DEC在聚类的鲁棒性和准确性都有更好的效果。


http://www.niftyadmin.cn/n/5796795.html

相关文章

HTTP协议及安全防范

由于图片解析问题,可以点击查看 👉🏻 博客原文 HTTP(Hypertext Transfer Protocol)超文本传输协议是一个用于 Web 应用程序通信的应用层协议。它是一种客户端-服务器协议,客户端通过发送请求到服务器来获取…

Vue 单表 CRUD模板 前端

结合后端CRUD模板食用更佳 后端CRUD模板 js文件 指向了后端的方法 页面基本模板 import request from /utils/request // 查询关键词列表 export function page(param) {return request({url: /systemConfig/page,method: post,params: param}) }// 新增 export function ad…

2024年图像处理、多媒体技术与机器学习

重要信息 官网:www.ipmml.org 时间:2024年12月27-29日 地点:中国-大理 简介 2024年图像处理、多媒体技术与机器学习(CIPMT 2024)将于2024年12月27-29日于中国大理召开。将围绕图像处理与多媒体技术、机器学习等在…

RabbitMQ中的Topic模式

在现代分布式系统中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个广泛使用的开源消息代理,支持多种消息传递模式,其中 Topic 模式 是一种灵活且强大的模式,允许生产者…

C++简明教程(文章要求学过一点C语言)(12)

C 编程命名规范 一、引言 在 C 编程中,采用统一且清晰的命名规范对于代码的可读性、可维护性以及团队协作至关重要。良好的命名能够让代码“自解释”,使其他开发者(包括未来的自己)能够迅速理解代码的意图和功能,减少…

酷黑金色配色 影片素材不过时 色彩丰富 电影主题html

本套大作业共计8个HTML页面,网页中包含:DIVCSS、下拉菜单栏、banner轮播图、图片放大效果、鼠标滑过效果、视频、小图标及按钮设计、登录注册页等,同时设计了logo;本作品花费大量时间去整理素材,大部分素材均使用Photo…

linux定时器操作

目录 1 简单示例2 timer_create方式2.1 SIGEV_SIGNAL信号方式通知2.2 SIGEV_THREAD启动线程方式通知2.3 参数 1 简单示例 #include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <signal.h> #include <unistd.h>void setup_t…

pset4filter less: helpers.c

&#xff08;&#xff14;&#xff09;blur function 简单画图熟悉一下要做什么 可以看到3种情况&#xff0c;顶格&#xff0c;边界&#xff0c;里面如果分开算的话&#xff0c;是真的麻烦&#xff1b;但是当时还真的没有想到更好的&#xff0c;就先写一写&#xff08;此处摘取…