参考:
https://zhuanlan.zhihu.com/p/80377698
https://blog.csdn.net/u013250861/article/details/111290319
概览
自编码器可以理解为一个试图去还原其原始输入的系统。
也可以说是:一种利用反向传播算法使得输出值尽可能等于输入值的神经网络。
自编码器模型主要由编码器(Encoder)和解码器(Decoder)组成,其主要目的是将输入x转换成中间变量y,然后再将y转换成z,然后对比输入x和输出z使得他们两个无限接近。
神经网络自编码模型
有时神经网络要接受大量的输入信息, 比如输入信息是高清图片时, 输入信息量可能达到上千万, 让神经网络直接从上千万个信息源中学习是一件很吃力的工作. 所以, 何不压缩一下, 提取出原图片中的最具代表性的信息, 缩减输入信息量, 再把缩减过后的信息放进神经网络学习. 这样学习起来就简单轻松了.
也可以说自编码是一种非监督学习. 到了真正使用自编码的时候. 通常只会用到自编码前半部分。
特点
- 自动编码器是数据相关的(data-specific 或 data-dependent),这意味着自动编码器只能压缩那些与训练数据类似的数据。
- 自动编码器是有损的,意思是解压缩的输出与原来的输入相比是退化的。
- 自动编码器是从数据样本中自动学习的,这意味着很容易对指定类的输入训练出一种特定的编码器,而不需要完成任何新工作。
搭建
搭建一个自动编码器需要完成下面三样工作:搭建编码器,搭建解码器,设定一个损失函数,用以衡量由于压缩而损失掉的信息。
第一个网络是一个编码器,负责接收输入 x,并将输入通过函数 h 变换为信号 y:
y=h(x)
第二个网络将编码的信号 y 作为其输入,通过函数f得到重构的信号 r:
z=f(y)=f(h(x))
定义误差 e 为原始输入 x 与重构信号 r 之差,
e=x–z
网络训练的目标是减少均方误差(MSE),同 MLP 一样,误差被反向传播回隐藏层。
我们不应该将自编码器设计成输入到输出完全相等。这通常需要向自编码器强加一些约束,使它只能近似地复制,并只能复制与训练数据相似的输入。这些约束强制模型考虑输入数据的哪些部分需要被优先复制,因此它往往能学习到数据的有用特性。
作用:
- 数据去噪
- 为进行可视化而降维
- 进行图像压缩
- 传统自编码器被用于降维或特征学习