aihot  2017-10-14 10:54:18  深度学习 |   查看评论   

自编码器

  深度自编码器是一类特殊的无分类标签的深度神经网络。其输出向量与输入向量同维,常按照输入向量的某种形式,通过隐层学习一个数据的表示或对原始数据进行有效编码。值得注意的是,这种自编码器是一种不利用类标签的非线性特征提取方法。就方法本身而言,这种特征提取的目的在于保留和获得更好的信息表示,而不是执行分类任务,尽管有时这两个目标是相关的。

  一个典型的自编码器拥有一个表示原始数据或者输入特征向量的输入层;一个或多个表示特征转换的隐层;一个跟输入层匹配、用于信息重构的输出层。当隐层数目大于1时,这个自编码器就被视为深层结构。隐层的维度可以小于(当目标是特征压缩)或大于(当目标是映射特征匹配更高维的空间)输入层的维度。

  如果我们在自动编码器的基础上加上L1的规则限制(L1主要是约束每一层中的节点中大部分都要为0,只有少数不为0,稀疏约束项),我们就可以得到稀疏自动编码方法。也就是上面提到的特征压缩,如果隐藏节点比可视节点(输入、输出)少的话,被迫的降维,自编码器会自动习得训练样本的特征(变化最大,信息量最多的维度),所谓稀疏性,就是对一对输入,隐藏节点中被激活的节点数(输出接近1)远远小于被抑制的节点数目(输出接近0)。那么使神经元大部分的时间都是被抑制的限制被称作稀疏性限制。

  另外提一下降噪自编码器,原理很简单,降噪自编码器与自编码器的区别在于,降噪自编码器在原本自编码器的输入上加上了噪声,然后希望通过训练输出去除噪声后的原数据。

  栈式自编码器是一个由多层稀疏自编码器组成的神经网络,由于其隐层数目大于1,所以可被认定为是一种深度自编码器。

  在栈式自编码器中,前一层的自编码器的输出作为其后一层自编码器的输入。对于一个n层栈式自编码器的编码过程就是,按照从前向后的顺序执行每一层自编码器的编码步骤。

  假设我们要训练一个4层的神经网络模型用于分类任务,网络结构如下:

栈式自编码器的训练

栈式自编码器的训练

  整个过程分为两个阶段,一个是无监督预训练阶段(pre-training),另一个是有监督微调阶段。预训练阶段实际上就是一层一层的按照原先训练稀疏自编码器的方法训练每一层的参数。

  在预训练阶段,首先,我们要采用稀疏自编码网络,先训练从输入层到H1层的参数:

浅谈深度学习基础

 

  训练完毕后,我们去除解码层,只留下从输入层到隐藏层的编码阶段。

  接着我们训练从H1到H2的参数,我们把无标签数据的H1层元素的激活值,作为H2层的输入层,然后再进行自编码训练:

浅谈深度学习基础

 

  最后训练完毕后,再去除H2的解码层,如此重复,可以训练更高层的网络,这就是逐层贪婪训练的思想。

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自浅谈深度学习基础(上)

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]