欢迎来到 wabc.cc 官方网站!

广州Python培训课程 Python自编码器学习

来源:推荐文章 / 时间:2025-12-20

今天中软卓越广州Python培训课程简要讲解一下Python自编码器学习。自编码器(Autoencoder,AE)是一个3层或者大于3层的神经网络,将输入表达X编码为一个新的表达Y,然后再将Y解码回X。这是一个非监督学习算法,使用反向传播算法来训练网络使得输出等于输入。当向网络中添加一些限制时,可以学到一些关于输入表达的有趣结构。当隐含层节点数d比输入层节点数n小时,可以得到一个输入的压缩表达。当d比n大时,添加一些限制,比如稀疏限制,会得到类似于稀疏编码的结果。自编码器由两部分组成:

1.jpg

① 编码器:这部分能将输入压缩成潜在空间表征,可以用编码函数h=f(x)表示。

② 解码器:这部分能重构来自潜在空间表征的输入,可以用解码函数r=g(h)表示。

因此,整个自编码器可以用函数g(f(x)) = r来描述,其中输出r与原始输入x相近。为何要用输入来重构输出?如果自编码器的唯一目的是让输出值等于输入值,那这个算法将毫无用处。事实上,我们希望通过训练输出值等于输入值的自编码器,让潜在表征将具有价值属性。这可通过在重构任务中构建约束来实现。

从自编码器获得有用特征的一种方法是,限制隐层h的维度使其小于输入x,这种情况下称作有损自编码器。通过训练有损表征,使得自编码器能学习到数据中最重要的特征。如果自编码器的容量过大,它无需提取关于数据分布的任何有用信息,即可较好地执行重构任务。如果潜在表征h的维度与输入相同,或是潜在表征h的维度大于输入,上述结果也会出现。在这些情况下,即使只使用线性编码器和线性解码器,也能很好地利用输入重构输出,且无需了解有关数据分布的任何有用信息。在理想情况下,根据要分配的数据复杂度,来准确选择编码器和解码器的编码维数和容量,就可以成功地训练出任何所需的自编码器结构。

1、自编码器用来干什么?

目前,自编码器的应用主要有两个方面,第一是数据去噪,第二是为进行可视化而降维。设置合适的维度和稀疏约束,自编码器可以学习到比PCA等技术更有意思的数据投影。

自编码器能从数据样本中进行无监督学习,这意味着可将这个算法应用到某个数据集中,来取得良好的性能,且不需要任何新的特征工程,只需要适当地训练数据。但是,自编码器在图像压缩方面表现得不好。由于在某个给定数据集上训练自编码器,因此它在处理与训练集相类似的数据时可达到合理的压缩结果,但是在压缩差异较大的其他图像时效果不佳。这里,像JPEG这样的压缩技术在通用图像压缩方面会表现得更好。训练自编码器,可以使输入通过编码器和解码器后,保留尽可能多的信息,但也可以训练自编码器来使新表征具有多种不同的属性。不同类型的自编码器旨在实现不同类型的属性。

2、自编码器分类   

(1)去噪自动编码器(DAE/Denoising AutoEncoder)

(2)稀疏自动编码器

(3)变分自动编码器(VAE/Variational AutoEncoder)

(4)收缩自动编码器(CAE/Contractive AutoEncoder)

去噪自动编码器:这是最基本的一种自动编码器,它会随机地部分采用受损的输入来解决恒等函数风险,使得自动编码器必须进行恢复或去噪。这项技术可用于得到输入的良好表征。良好的表征是指可以从受损的输入稳健地获得的表征,该表征可被用于恢复其对应的无噪声输入。

去噪自动编码器背后的思想很简单。为了迫使隐藏层发现更加稳健的特征并且为了防止其只是学习其中的恒等关系,我们在训练自动编码器时会让其从受损的版本中重建输入。应用在输入上的噪声量以百分比的形式呈现。一般来说,30%或0.3就很好,但如果你的数据非常少,你可能就需要考虑增加更多噪声。

稀疏自编码器:一般用来学习特征,以便用于像分类这样的任务。稀疏正则化的自编码器必须反映训练数据集的独特统计特征,而不是简单地充当恒等函数。以这种方式训练,执行附带稀疏惩罚的复制任务可以得到能学习有用特征的模型。由于自编码器的潜在表示y是对于输入x的一种有损压缩。优化和训练只能让它对于训练集合来说是很好的压缩表示,但并不是对于所有的输入都是这样。为了增加隐藏层的特征表示的鲁棒性和泛化能力,引入去噪自编码器。

关于Python自编码器学习已经讲解完毕了。去企业,学习企业需要的编程技能!广州中软卓越Python培训,真实企业背景,送你企业入场券!

广州中软卓越课程:http://gzetc.com.cn/

相关产品

在线客服
微信联系
客服
扫码加微信(手机同号)
电话咨询
返回顶部