[神经网络]从反向传播(BP)到去噪自动编码器(DAE)
2016-05-21 10:05
585 查看
本文主要总结一下神经网络几种训练机制,不仅简单介绍这几种训练机制的步骤和优缺点,而且从发展,进化的角度理清训练机制不断改进的思路和解决方案,以加深对这几种网络的理解,文中没有公式,适合DL入门者。
BP(back propagation ),也叫误差反传播,是传统神经网络(相对于深度神经网络)中采用的训练机制。改方法通过随机设定网络参数的初值,计算输入在当前网络下的输出结果,然后根据输出与label(真值)之间的差值,采用迭代算法对整个网络的参数整体调整,直到收敛。
特点:
(1):采用梯度下降法,迭代地整体调整网络参数
(2):随机初始化网络参数
(3):采用有标签数据训练
缺点:
(1):整体调整过程中,误差(校正)信号会越来越小,梯度会越来越稀疏
(2):随机初始化可能导致局部最优
(3):无法从无标签数据训练网络
既然BP算法无法应用于DL网络的训练,那DL中采用什么方法来训练网络呢,自动编码器(AE)就是最简单的一种训练方法。自动编码器的输入输出相同,通过复现输入信号来逐层调整整个网络。
如上图,我们将input输入一个encoder编码器,就会得到一个code,这个code也就是输入的一个表示,也就是特征。decoder通过对code的重建会输出一个与input很像的信号,而重构后的信号与input的误差就是调整网络参数(也就是Encoder,Decoder)的校正信号。由于这里不需要input带label,所以是无监督的学习过程,学习的是无监督特征。
也就是说,这时候,我们需要将最后层的特征code输入到最后的分类器,通过有标签样本,通过监督学习进行微调,这也分两种,一个是只调整分类器(黑色部分),另一种是微调整个网络。下图表示前一种微调方法,通过分类层的预测结果和标签的差值,微调分类器。而灰色部分代表已经训练好的三层自动编码器,此时不再微调。
一旦监督训练完成,这个网络就可以用来分类了
当然,DAE在训练过程中也是逐层训练,来调节网络参数。为了实现分类目的,通常还需要在最后一层加一个分类层,通过带标签的输入训练分类层或整个网络。就能实现分类的目的,这点与AE是相通的。
BP
BP(back propagation ),也叫误差反传播,是传统神经网络(相对于深度神经网络)中采用的训练机制。改方法通过随机设定网络参数的初值,计算输入在当前网络下的输出结果,然后根据输出与label(真值)之间的差值,采用迭代算法对整个网络的参数整体调整,直到收敛。 特点:
(1):采用梯度下降法,迭代地整体调整网络参数
(2):随机初始化网络参数
(3):采用有标签数据训练
缺点:
(1):整体调整过程中,误差(校正)信号会越来越小,梯度会越来越稀疏
(2):随机初始化可能导致局部最优
(3):无法从无标签数据训练网络
AutoEncoder
既然BP算法无法应用于DL网络的训练,那DL中采用什么方法来训练网络呢,自动编码器(AE)就是最简单的一种训练方法。自动编码器的输入输出相同,通过复现输入信号来逐层调整整个网络。
(1)无监督学习
如上图,我们将input输入一个encoder编码器,就会得到一个code,这个code也就是输入的一个表示,也就是特征。decoder通过对code的重建会输出一个与input很像的信号,而重构后的信号与input的误差就是调整网络参数(也就是Encoder,Decoder)的校正信号。由于这里不需要input带label,所以是无监督的学习过程,学习的是无监督特征。
(2)逐层训练
第一层的输出code当做第二层的输入信号,就能得到第二层的code,同样最小化重建误差,就能得到调节好的第二层参数(第一层的decoder已经没用了),如下图:(3)有监督微调
到这里,这个AutoEncoder还不能用来分类数据,因为它还没有学习如何去连结一个输入和一个类。它只是学会了如何去重构或者复现它的输入而已。或者说,它只是学习获得了一个可以良好代表输入的特征,这个特征可以最大程度上代表原输入信号。那么,为了实现分类,我们就可以在AutoEncoder的最顶的编码层添加一个分类器(例如逻辑回归、SVM等),然后通过标准的多层神经网络的监督训练方法(梯度下降法)去训练。也就是说,这时候,我们需要将最后层的特征code输入到最后的分类器,通过有标签样本,通过监督学习进行微调,这也分两种,一个是只调整分类器(黑色部分),另一种是微调整个网络。下图表示前一种微调方法,通过分类层的预测结果和标签的差值,微调分类器。而灰色部分代表已经训练好的三层自动编码器,此时不再微调。
一旦监督训练完成,这个网络就可以用来分类了
Denoised AutoEncoder (DAE)
降噪自动编码器DAE是在自动编码器的基础上,训练数据加入噪声,来训练整个网络,因为在实际的测试数据中,噪声是不可避免的,采用有噪声的训练数据训练网络,神经网络就能够学习到不加噪声的输入特征和噪声的主要特征。能够使网络在测试数据中有更强的泛化能力,当然,也可以理解为:自动编码器要学习获得去除噪声,获得无噪声图像的能力,因此,这就迫使编码器去学习输入信号的更加鲁棒的表达,它的泛化能力也就比一般编码器更强。深度神经网络大牛Bengio对DAE的直观解释为:1.DAE有点类似人体的感官系统,比如人眼看物体时,如果物体某一小部分被遮住了,人依然能够将其识别出来,2.多模态信息输入人体时(比如声音,图像等),少了其中某些模态的信息有时影响也不大。3.普通的AE的本质是学习一个相等函数,即输入和重构后的输出相等,这种相等函数的表示有个缺点就是当测试样本和训练样本不符合同一分布,即相差较大时,效果不好,明显,DAE在这方面的处理有所进步。当然,DAE在训练过程中也是逐层训练,来调节网络参数。为了实现分类目的,通常还需要在最后一层加一个分类层,通过带标签的输入训练分类层或整个网络。就能实现分类的目的,这点与AE是相通的。
相关文章推荐
- ASP编码必备的8条原则
- XML指南——XML编码
- C#中字符串编码处理
- ExtJS中文乱码之GBK格式编码解决方案及代码
- 程序员趣味读物 谈谈Unicode编码
- 文本文件编码方式区别
- C语言安全编码之数值中的sizeof操作符
- C#实现获取文本文件的编码的一个类(区分GB2312和UTF8)
- VC中BASE64编码和解码使用详解
- 计算机中的字符串编码、乱码、BOM等问题详解
- Base64编码解码原理及C#编程实例
- C#编码好习惯小结
- javascript编码的几个方法详细介绍
- UTF8编码开发中页面空白问题的解决方法
- php生成固定长度纯数字编码的方法
- 重新restore了mysql到另一台机器上后mysql 编码问题报错
- c# Base64编码和图片的互相转换代码
- java自动根据文件内容的编码来读取避免乱码
- PHP写入WRITE编码为UTF8的文件的实现代码
- 设置php页面编码的两种方法示例介绍