深度学习概述

来源:互联网 发布:名图轮毂17寸轮毂数据 编辑:程序博客网 时间:2024/06/09 21:49

深度网络优势

深度学习能以能加紧凑的方式表达出比浅层网络更大的函数集合。就是说,如果浅层神经网络想要表达非常复杂的函数集合,那么必须通过增加隐藏层神经元的数量来实现, 而深度网络,可以通过增加隐藏的层数来实现表达。Ufldl教程举了个简单的例子:如果构建一个网络实现bool运算,如果是n位的运算,如果使用仅含有一隐藏层的网络的话,则隐藏层神经元数量会随着n呈现指数增长,而如果构建的是深层网络,则网络规模是n的多项式函数。另一个例子大脑皮层也是通过分层计算来实现计算的。

深度网络训练的困难度

不像浅层网络那样,通过随机初始化整个网络的权值,然后通过梯度下降算法,训练即可,深度网络的训练往往存在很多问题。

数据获取困难
浅层神经网络中, 通过监督学习方法来训练网络,但是现实中,一个结构化,带标签的数据集难以获得。因此,可以满足深度网络训练的有足够样本的训练集难以获得,这种情况下,深度网络容易过拟合。

局部极值问题
梯度下降算法对浅层网络训练时,容易使得网络收敛到一个合理的可接受的范围内。但是在深度网络中,求解目标是通常不是凸优化问题,目标函数可能存在多个局部极小值,梯度下降算法容易收敛到这些不好的极值点上。

梯度弥散问题
又称梯度消失。训练浅层网络的时候,由于层数少,误差的反向传播到前面的层(输入层),权值的变化依旧很明显,因此可以良好的训练。但是,在深度网络中,由于网络层数增加,误差反向传播过程中,梯度逐渐下降,导致前面层的权值变化非常小,训练变得十分缓慢,无法进行有效的学习,称为梯度消失。
UFLDL教程中提到:神经网络中的最后几层含有足够数量神经元的时候,可能单独这几层就足以对有标签数据进行建模,而不用最初几层的帮助。因此,对所有层都使用随机初始化的方法训练得到的整个网络的性能将会与训练得到的浅层网络(仅由深度网络的最后几层组成的浅层网络)的性能相似。

深度网络训练方法

逐层贪婪训练
既然整个网络同时训练,会出现梯度消失问题,因此,考虑直接使用一层一层训练的方式来对网络进行训练,然后再把一层一层堆叠起来,形成整体深度网络,在此基础上,用训练集对整个网络进行微调训练。而每一层的训练可以用非监督学习方法,如:自动编码器,RBM等。这种训练方式好处:

  • 数据容易获取。训练过程中用的是无监督学习方法,因此可以通过大量无标签数据进行训练,当训练完成后,相当于找到原始数据的另一种表达,也可以理解为特征。
  • 获得更好的收敛局部极值。 逐层训练完数据之后,在进行微调之前,每层网络的权值是有的,因此,相比于随机初始化整个网络的权值,其给了一个更好的初始化权值,更容易接近网络的更好的局部极值。因为无标签数据已经提供了大量输入数据中包含的模式的先验信息。

(本文仅是学习过程中的笔记,如有不对请指正,待续…..)