深度学习系列(八):自编码网络多层特征学习

上节我们谈到了三层自编码网络的特征学习,并将其学习到的特征用于实际分类实验中,并与传统的PCA特征提取方法作了实验对比,发现在三层网络下自编码学习的特征能更好用于分类,达到分类准确率更高,本节我们将再一次探索自编码网络的特征学习问题,并且是深层网络的自编码学习。

首先来探索四层网络的自编码问题,还是以手写体为例,网络抽象成下面这样子:
这里写图片描述

假设我们第一层隐含层用200个神经元,第二层K个(可以固定也可以调),那么问题来了,对于这个多层网络怎么去自编码呢?这里就要引入很重要的一个思想,深度网络自编码问题的解决方案了:逐层编码思想。那么什么是逐层编码?

我们知道,正常的神经网络也可以是多层的,但是多层的神经网络如果一起训练会有一个问题,那就是误差弥散问题,因为网络的权值更新依靠的是误差反向传播来的,那么越靠近尾端,这个时候误差还有点作用,可以使得靠近尾端的权值更新的比较大,越往前面的网络,由于每一层往前以后,误差的作用就会消退一点,那么前面的网络权值基本上就更新不动了,这也就是误差在反向传播的时候会存在弥散作用。那么为了解决这一问题才诞生了逐层编码。

比如上面那个两层隐含层的网络,我可以把它拆分成两个部分,每一部分组成一个3层网络的自编码,在训练完以后把他们接在就可以了,整个过程如下所示:
这里写图片描述

这是我们要自编码的网络,经过两层编码层,然后在经过两层译码层最终使得输出等于输入(当然不可能完全等于,尽可能的等于)。那么这是整体的效果,具体实现起来再拆分成下面两个过程:
这里写图片描述

这里我们假设了第二层隐含层单元为100个,那么第一个过程就是训练787-200-784这个自编码了,在训练完以后,我们把200出来的特征值再拿来训练一个200-100-200的自编码层,这样两个过程合在一起就是上上个图所示了。

Ok这是两层隐含层自编码,更多层的自编码无非是在后面继续训练自编码而已了。那么这样做的好处在哪里呢?就可以使得每一层网络的权值都能尽可能准确,因为误差反向传播在只有一层的时候是没有什么损失的。

Ok逐层编码介绍完了,我们来进行实验吧,先把K设置为100,也就是训练一个784-196-100自编码(注意这里改为第一个隐含层196=14*14是为了可视化方便),同时我们也要看看每一层自编码学习到编码

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值