[文献阅读] Unsupervised Deep Embedding for Clustering Analysis (无监督的深度嵌入式聚类)
文章目录
- 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 xi∈X,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} {μj∈Z}kj=1k和将数据点映射到Z的神经网络参数θ来对数据进行聚类。DEC有两个阶段:
- 非线性映射f_θ:X→Z,使用深度自动编码器进行参数初始化。
- KL聚类,其中我们在计算辅助目标分布与最小化KL散度之间进行迭代。
KL散度聚类
给定非线性映射 f θ f_θ fθ的初始估计值和初始聚类质心 { μ j ∈ Z } k j = 1 k \{{μ_j\in Z}\}^k_{k_j = 1} {μj∈Z}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} {μj∈Z}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在聚类的鲁棒性和准确性都有更好的效果。
相关文章:

[文献阅读] Unsupervised Deep Embedding for Clustering Analysis (无监督的深度嵌入式聚类)
文章目录 Abstract:摘要聚类深度聚类 KL散度深度嵌入式聚类(DEC)KL散度聚类软分配(soft assignment)KL散度损失训练编码器的初始化聚类中心的初始化 实验评估总结 Abstract: This week I read Unsupervised Deep Embedding for Clustering Analysis .It…...
ajax中get和post的区别,datatype返回的数据类型有哪些?web开发中数据提交的几种方式,有什么区别。
在 Web 开发中,GET 和 POST 是两种常见的 HTTP 请求方法,它们有一些显著的区别。此外,datatype 参数在 jQuery 的 ajax() 请求中指定了预期的响应数据类型。接下来,我会详细解释这些问题。 1. GET 和 POST 请求的区别 GET 请求 和…...
网络七层杀伤链
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&…...
GAN网络详解及涨点大全总结(源码)
(需要源码请私信或评论) GAN原理 GAN的基本原理建立在 生成模型和判别模型的博弈过程 上。这种独特的机制使得GAN能够在复杂的分布上实现高效的无监督学习。在这个过程中,生成器G和判别器D相互竞争,最终达到一种平衡状态,在此状态下,G能够产生高质量的合成样本,而D则无…...
【自动化】Python SeleniumUtil 工具 开启开发者模式 自动安装油猴用户脚本等
【自动化】Python SeleniumUtil 工具 【Python】使用Selenium 操作浏览器 自动化测试 记录-CSDN博客文章浏览阅读58次。文章浏览阅读42次。【附件】Selenium chromedriver 驱动及浏览器下载。【附件】Selenium chromedriver 驱动及浏览器下载-CSDN博客。3.安装Chrome浏览器驱动…...
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
🗺️博客地图 📍方法一、timedatectl 命令 📍方法二、手动链接 /etc/localtime 📍方法三、修改时区变量 在 Linux 系统中,可以通过以下3种方式将系统时区修改为 CST(中国标准时间,GMT8 或称 …...

android:sharedUserId 应用进程声明介绍
背景 adb install 安装系统软件报错,原因是签名不一致,进程改变。 代码分析 AndroidManifest.xml 定义的 android:sharedUserId 应用归属进程不同,从phone切换到system。 初始配置 <manifest xmlns:android="http://schemas.android.com/apk/res/android"c…...

解锁ApplicationContext vs BeanFactory: 谁更具选择性?
目录 一、聚焦源码回顾 (一)源码分析和理解 (二)简短的回顾对比建议 二、ApplicationContext vs BeanFactory特性对比 (一)主要特性总结 (二)直接建议 三、案例简单说明 &am…...
一篇梳理清楚http请求知识点
HTTP请求是Web开发中的重要组成部分,它涉及到客户端和服务器之间的通信。掌握HTTP请求的知识点对于前端开发和后端开发都至关重要。以下是关于HTTP请求的详细梳理,结合代码进行说明。 1. HTTP请求概述 HTTP(超文本传输协议)是一个…...

Kotlin - 协程结构化并发Structured Concurrency
前言 Kotlin的Project Lead,Roman Elizarov的一片文章https://elizarov.medium.com/structured-concurrency-722d765aa952介绍了Structured Concurrency发展的背景。相对Kotlin1.1时代,后来新增的Structured Concurrency理念,也就是我们现在所…...

新版国标GB28181设备端Android版EasyGBD支持国标GB28181-2022,支持语音对讲,支持位置上报,开源在Github
经过近3个月的迭代开发,新版本的国标GB28181设备端EasyGBD安卓Android版终于在昨天发布到Github了,最新的EasyGBD支持了国标GB28181-2022版,还支持了语音对讲、位置上报、本地录像等功能,比原有GB28181-2016版的EasyGBD更加高效、…...

豆包MarsCode测评:编程效率再提升
豆包MarsCode测评:编程效率再提升 本文正在参与豆包MarsCode AI 编程体验家活动 随着人工智能技术的发展,编程的方式也在悄然发生变化。最近,豆包推出的 AI 编程工具 MarsCode 在开发者社区引发了不小的关注。这是一款支持多种主流编程语言…...

二叉树 -- 堆(详解)
目录 1、堆的概念及结构 2、堆的实现(附代码) 2.1、向下调整算法建堆 3、堆的应用(附代码) 3.1、堆排序 3.2、TOP-K问题 1、堆的概念及结构 如果有一个关键码的集合K { k0,k1 ,k2 ,…,k(n-1) },把它的所有元素…...
【Apache Paimon】-- 11 -- Flink 消费 kakfa 写 S3 File
目录 1、项目构建 2、项目新增和修改 2.1 pom.xml 新增依赖 2.2 本地测试或者 flink on k8s 时,新增 S3FileSystemFactory.java 第一步:创建包=org.apache.flink.fs.s3hadoop 第二步:新增 java 类 S3FileSystemFactory 特别注意 (1)本地测试时需要新增以下内容 (…...
SQL MID()
SQL中的MID()函数是一个用于从指定位置开始截取字符串中指定长度的子串的函数。这个函数在数据库查询和数据处理中经常被使用,特别是在需要从较长的文本字段中提取特定信息时。 MID()函数的基本语法是:SELECT MID(column_name, start, length) FROM tab…...
jsp | servlet | spring forEach读取不了对象List
导致这个问题的原因有很多的,这里讲到的只是原因之一 原因 taglib不认识forEach 解决办法 添加<% taglib uri"http://java.sun.com/jsp/jstl/core" prefix"c" %> (我忘写这个东西了哈哈哈)...

【ArcGIS Pro微课1000例】0063:处理无人机数据(空三、生成DOM、DSM、DTM)
使用ArcGIS Pro 正射拼接处理无人机数据流程化工具,不需要额外产品许可的支持,只需要桌面是高级版许可即可支持。ArcGIS Pro处理无人机摄影测量数据主要内容有:空三、生成DOM、DSM、DTM。 文章目录 一、创建映射项目二、提交自由空三三、添加控制点优化四、提交产品生产一、…...

【pytorch】深度学习计算
1 层和块 块由类(class)表示。它的任何子类都必须定义一个将其输入转换为输出的前向传播函数,并且必须存储任何必需的参数。注意,有些块不需要任何参数。最后,为了计算梯度,块必须具有反向传播函数。 1.1…...

详解磁盘IO、网络IO、零拷贝IO、BIO、NIO、AIO、IO多路复用(select、poll、epoll)
1、什么是I/O 在计算机操作系统中,所谓的I/O就是输入(Input)和输出(Output),也可以理解为读(Read)和写(Write),针对不同的对象,I/O模式可以划分为…...

VPN技术-GRE隧道的配置
GRE隧道的配置 1, 在AR1上配置DHCP接口地址池,AR3上配置DHCP全局地址池 2, PC1获取的IP地址为10.10.10.253,PC2获取的IP地址为10.10.30.253 3,通过ip route-static将目的地址为10.10.30.253的流量引入到Tunnel #配…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...