深度学习教程之深层网络

上页

   从前几章我们已经发现autoencoders隐藏层和RBM能作为有效的特征探测器,但是直接使用它们还是很少的,事实上的数据比前面的一个规则数据集更加复杂,反过来,我们需要寻找到一些方法间接使用这些特征检测。

   幸运的是, 被发现 这些结构可以堆叠 stack形成 深 度网络,这些网络可以使用经典反向传播进行,一次一层贪婪地训练,以帮助克服 梯度消失 和 过度拟合 问题。

   由此产生的结构经常是相当强大的,会产生令人印象深刻的结果。 例如,谷歌的著名 "猫"论文 他们用特殊的深autoencoders基于旗鼓相当 数据基础上"学习"人脸和猫脸的检测。

 

堆叠Stacked Autoencoder

   顾名思义,这个网络由多个堆叠autoencoder组成:

stacked autocoder算法

  autoencoder的隐层 T作为 autoencoder作为输入层 t + 1 , 第一个autoencoder输入层是整个网络的输入层,贪婪的layer-wise训练过程是这样的:

  • 用所有可用的训练数据使用反向传播方法单独训练第一个autoencoder( t = 1 ,或者图中红色的连接,但使用一个额外的输出层)。
  • 训练第二autoencoder t = 2 (绿色的连接)。 因为输入层 t = 2 是 t = 1的隐藏层, 我们不再感兴趣 t = 1的输出层,将其从网络移走。 培训首先夹入一个输入样本到输入层 t = 1 ,这是向前传播到输出层 t = 2 。 接下来,权重(input-hidden和hidden-output) t = 2 使用反向传播被更新。 t = 2 类似 t = 1使用所有的训练样本, 
  • 对所有的层重复前面的过程( 删除之前autoencoder的输出层,换成另一个autoencoder,反向传播训练)。
  • 步骤1 - 3被称为 预训练pre-training,会将权重正确初始化。 然而,并没有在输入数据和输出标签之间有映射。 例如,如果网络被训练认识手写数字的图像,还不可能映射这些单元从最后一个特征检测器(,最后autoencoder的隐藏层)到图像的数字类型。 在这种情况下,最常见的解决方案是添加一个或多个完全连接层到最后层(蓝色连接)。 整个网络现在可以被视为一个多层感知器,使用反向传播进行训练(这一步也被称为 微调 )。

   堆叠Autoencoder对初始化网络的权重提供一个有效的训练方法,留给你一个复杂,多层感知器用于训练(或微调 )。

下一页:深度学习教程之深信念网络

机器学习流行算法一览