news 2026/9/6 19:33:22

DEC学习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DEC学习

前提知识

维度:特征维度可以简单理解为需要用多少个数字去表示特征。例如,一个人有身高、体重、性别、年龄这四个特征,每个特征都用一个数字表示,那人的特征维度就是4。

软/硬分布:在聚类算法中,根据一个数据点是否确定属于唯一一个簇可划分为软分布和硬分布。如果一个数据点和簇中心的关系只有属于和不属于,也就是0和1,则是硬分布,比如Kmeans等;如果数据点和簇中心之间的关系用相关度或者隶属度表示,则是软分布,比如FCM、DEC、IDEC等。

背景

聚类通过挖掘数据特征之间的关系,增大簇之间的距离,缩小簇内间距。但随着数据量的增长,描述数据的特征维度也在不断增加。如果保留数据的全部特征进行聚类,不仅会增加计算量,还会因为噪声和无用特征的存在导致聚类结果不理想。所以为了数据清洗并且将高维数据特征压缩为低维数据特征以便更好地进行聚类,于是引入DNN(Deep Natural Network)深度神经网络,进而有了深度聚类,DEC就是深度聚类中的代表算法之一。

DNN搭建

AE(Auto-Encoder)自编码器是一种神经网络架构,由encoder(编码器)和decoder(解码器)组成,具有压缩和重构的功能,是DEC的基础骨架。

encoder是由多个全连接层+激活函数组成的网络块,负责将高维特征压缩为低维特征。

如上图所示,全连接层的隐藏计算层一共有四个神经元,是参与计算的最小网络单位,将所有特征输入进每个神经元,每个神经元会对输入进行加权求和,即线性变换:

其中权重w和偏置b都是可学习的参数,且所有神经元独立使用W和b。隐藏层的结果经过激活函数激活后再输入进输出层的神经元,加权求和后即为嵌入后的特征z,可见嵌入特征z的维度和输出层神经元个数保持一致,和隐藏层神经元个数无关。

decoder的结构和encoder非常相似,区别在于decoder的输入特征维度要比输出层神经元个数大,以此完成升维任务。

AE预训练

AE是要服务于最后的聚类任务的,一个好的AE模型对聚类结果至关重要,因此需要先对AE进行预训练,得到不错的结果后再将其用于聚类。

encoder负责压缩特征,decoder负责使用由encoder得到的嵌入特征进行重构,得到,与原始特征X比较即可判断AE的表现。

预训练损失函数使用X和的均方误差(MSE):

DEC算法会抛弃decoder,只用encoder完成后续的聚类任务。

聚类

聚类任务中需要更新的参数就是簇中心,在第一次聚类之前,需要初始化簇中心,有两个方法:

①随机初始化

②AE预训练完成后,将数据放在AE中再跑一遍,这一遍只要encoder生成的嵌入特征z,用 kmeans对z进行一次聚类得到初始化簇中心

显然②的误差会更小,所以一般都会选择②。

聚类损失函数:KL散度

其中,q是目标/近似分布,p是希望q去逼近的真实分布,KL散度表示真实分布p和近似分布q之间的差距。

KL越小,p和q之间的差距越小,近似分布越逼近真实分布,聚类结果越好。

接下来计算近似分布Q,计算z和的欧式距离,但是DEC是软分布,所以需要先把欧氏距离转换成软分布,使用学生-t分布的概率密度公式计算软分布,t分布并不是用来建模隐空间样本的分布,只是距离‑相似度的转换核。相比正态分布,学生 t‑分布拥有更重的尾部,距离较大时相似度不会快速归零,保留软分布的梯度,避免训练过早变成硬分布。

其中,α是t分布的自由度。在DEC论文以及其他方法中,α的值通常固定为1,所以Q一般写成:

由于聚类是无监督学习,压根没有真实分布,所以对Q进行锐化得到P:

锐化的作用就是会让大的更大,小的更小。

loss会让Q不断的逼近P,从而达到聚类的效果,P也叫伪标签。

总结

DEC的损失函数只有聚类损失即KL散度,因为在AE预训练完成之后,只有encoder参与了后续的聚类。

KL散度是由P和Q计算得来的,P又是由Q锐化得到的,所以参数更新就是Q中的嵌入特征z和簇中心,但是z只是一个计算结果,是由encoder计算得到的,所以DEC真正需要更新的参数有两个:

①神经网络参数W和b

②簇中心

完整过程:

①预训练AE,完成神经网络参数初始化和簇中心初始化。

②将数据输入encoder得到嵌入特征z,计算嵌入特征z和簇中心的欧式距离,带入t分布的概率密度公式将距离转化为相关度,得到近似分布Q,锐化Q得到伪标签P。

③计算KL散度,反向传播梯度下降调整参数W、b、

④重复②③直到KL散度不再变化。

注意:

由于DEC需要更新的参数很多,而且数据量很大,所以一般会采用mini-batch的策略进行模型微调(也就是②③),每次只选取一部分的数据输入到encoder当中,参数正常更新,但是P的公式中需要计算所有数据的软分布之和,现在训练只是选了一部分数据,只会临时记录这一部分数据的Q,所以不能更新P,等到一定轮次(可以自己设置)之后,再统一计算所有的Q,求和再更新P,这样也会节省很多时间。

DEC缺点:

DEC的P是由Q锐化得到的,所以实际上模型微调的方向就已经人为确定了,就是让相关度高的更高,低的更低,假如一开始的方向就是错的,那一条道走到黑显然也不会有好结果。

DEC的损失函数只有KL散度,这会导致模型为了让loss减小,调整W和b的时候可能会导致encoder压缩出扭曲的嵌入特征,虽然看似loss小了,但实际上是不合理的,这也是DEC在模型微调环节把decoder去掉encoder没有了重构约束的结果,也是IDEC改进的方向。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 11:53:29

英国齿轮设计软件.zip打不开?从zip修复到齿轮强度计算全流程详解

简介:本资源为面向机械设计工程师与传动系统研发人员的专业齿轮设计工具包,聚焦直齿/斜齿圆柱齿轮、锥齿轮及蜗轮蜗杆等典型类型,覆盖参数建模、材料匹配、齿面接触与弯曲疲劳分析、NVH预测及变速箱级集成设计等核心流程。压缩包共20个文件&a…

作者头像 李华
网站建设 2026/9/5 17:23:38

怎么用Midjourney角色一致让AI出图不跑脸?

正在制作AI漫剧或AI动画视频的小伙伴,给大家推荐这里:AIGC梦工厂(www.aigcc.vip)。Ai漫剧一站式成片。输入一句话进去就能一键成片;画布模式可以精修每一帧画面;还有500多种Ai图片玩法。有兴趣的可以看看。…

作者头像 李华
网站建设 2026/9/5 22:21:11

MATLAB雷达仿真全链路代码框架设计:从LFM波形到CFAR检测的工程实践

简介:本资源是一套面向雷达系统工程师、信号处理方向研究生及高年级本科生的MATLAB雷达仿真教学与实践代码集,系统覆盖从基础原理到前沿技术的完整知识链。资源共197个文件,含179个核心功能脚本(.m)、9个预存数据&…

作者头像 李华
网站建设 2026/9/5 23:18:17

Oracle 11.2.0.4 Windows 64位补丁实战:从下载到回滚全指南

简介:Oracle 11.2.0.4补丁包是一份面向Windows x64平台的数据库维护资源,适用于仍使用Oracle 11g R2的企业数据库管理员,用于修复已知安全漏洞、增强系统稳定性并优化查询与存储性能。压缩包共包含463个文件,体积约637.5MB&#x…

作者头像 李华
网站建设 2026/9/6 5:08:25

三极管基极下拉电阻的作用与电路可靠性设计

很多嵌入式工程师第一次看到这张电路图都会产生同样的疑问:基极上明明已经串了一个限流电阻,为什么还要在基极和发射极之间再并一个电阻?这个电阻看起来既不增强驱动能力,也不影响导通状态,似乎有点多余。直到某一天&a…

作者头像 李华
网站建设 2026/9/5 19:32:50

自由职业者上半年复盘:主业稳现金流,探索新增长曲线

这段时间陆续看到不少同行在写年中总结,我本来没打算跟风,但前几天整理上半年的账目和项目记录时,发现这六个月里“稳定接单”和“四处摸索”两条线几乎是并行走下来的,不少经验教训还挺值得记一笔。想想还是写下来,既…

作者头像 李华