自动编码器原理及实现(一)

来源:互联网 发布:淘宝打折后还显示原价 编辑:程序博客网 时间:2024/05/17 08:54

一、什么是自动编码器(也叫自编码器)

网络上有关自动编码器的资料参差不齐,许多基本概念及原理没有讲清楚。现在,我来一个比较系统的讲述

一下自动编码器的一些概念及原理,在最后,附上python实现代码。

自动编码器是神经网络的一种,经过训练后能尝试将输入复制到输出,换句话说,就是使输出的内容和输入的

内容一样。自动编码器内部有一个隐含层h,可以产生编码来表示输入。该网络可以看作由两部分组成:一个编

码器h=f(x)和一个生成重构的解码器r=g(h)。最后使得x约等于g(f(x))。可不可以通过设计网络使得x=g(f(x)),

理论上可以的,但通常不会这么做。自动编码器应该设计成不能学会完美地复制,通过强加一些约束,使自动

编码器只能近似地复制,因些它能学习到数据的有用特性。




二、稀疏自编码

从自动编码器获得有用特征的一种方法是限制h的维度比x小,这样将强制自动编码器捕捉训练数据中

最显著的特征,这样的自动编码器叫稀疏自编码。学习过程可以简单地描述为最小化一个损失函数

                       L(x,g(f(x)))+Ω(h) , Ω(h)是惩罚项

当解码器是线性的且L是均方误差,就可以学习出与PCA方法相同生成子空间。(PCA可以参考以前写过的一篇博客)



这个图就是稀疏自编码器的样例,Layer L1是输入层,Layer L3是输出层,Layer L2是隐藏层。


下节会讲稀疏自编码的前向传播和后向传播,敬请期待。

0 0
原创粉丝点击