深度学习为何难用BP训练

原文链接(中文版)
神经网络与深度学习的第五章笔记
一般情形下,复杂模型的训练效率低,易陷入过拟合,随着云计算、大数据时代的到来,计算能力的大幅提高可缓解训练低效性,训练数据的大幅增加可降低过拟合。从增加模型复杂度的角度看,增加隐层的数目显然比增加隐层神经元的数目更加有效,然而多隐层神经网络难以直接用BP算法进行训练,因为误差在逆传播时往往会发散。

无监督逐层训练采用预训练+微调的方法,DBN深度信念网络即采用这样的方式,对每一层RBM进行训练,将上一层训练好的隐结点视为下一层的输入结点,各层训练完,再用BP算法对整个网络训练。

另一种策略是权共享。CNN卷积神经网络复合多个卷积层和采样层对输入信号进行加工,然后在连接层实现与输出目标之间的映射。每个卷积层提取多个特征映射,采样层进行亚采样,减少数据量同时保留有用信息。CNN可用BP进行训练,但每一层的每一组神经元使用相同的连接权。

消失的梯度问题

多层隐层神经元的深度网络在本质上比浅层网络更加强大,不过使用基于BP的随机梯度下降的方法来训练会产生问题,深度神经网络并不能比浅层网络性能好太多。仔细研究一下,就会发现,在深度网络中,不同的层学习的速度差异很大 。在网络中后面的层学习的情况很好的时候,先前的层次常常会在训练时停滞不变,或者先前的层可能学习的比较好,但是后面的层却停滞不变。这些原因和基于梯度的学习技术相关。在深度神经网络中使用基于梯度下降的学习方法本身存在着内在不稳定性。这种不稳定性使得先前或者后面的层的学习过程阻滞。

在某些深度神经网络中,在隐藏层BP的时候梯度倾向于变小。这意味着在前面的隐藏层中的神经元学习速度要慢于后面的隐藏层。这种现象被称作消失的梯度问题。另外还有一种可能在前面的层中的梯度会变得非常大!这也叫做爆炸的梯度问题。

简单的多层神经元模型解释梯度消失问题
深度学习为何难用BP训练_第1张图片
梯度消失的数学解释

权重w在取正态分布的初始化时,小于1,σ′(zj)是sigmoid函数的导数,小于1/4,随着隐层神经元层数的增加, |wjσ′(zj)|<1/4会变的越来越小,就出现了梯度的消失问题,如果当权重w变得很大,超过了1,这时梯度会在BP的时候出现指数级增长,出现梯度爆炸问题。

根本的问题其实并非是消失的梯度问题或者爆炸的梯度问题,而是在前面的层上的梯度是来自后面的层上项的乘积。当存在过多的层次时,就出现了内在本质上的不稳定场景。唯一让所有层都接近相同的学习速度的方式是所有这些项的乘积都能得到一种平衡。如果没有某种机制或者更加本质的保证来达成平衡,那网络就很容易不稳定了。简而言之,真实的问题就是神经网络受限于不稳定梯度的问题。所以,如果我们使用标准的基于梯度的学习算法,在网络中的不同层会出现按照不同学习速度学习的情况。

结果表明了激活函数的选择,权重的初始化,甚至是学习算法的实现方式扮演了重要的角色。当然,网络结构和其他超参数本身也是很重要的。因此,太多因子影响了训练神经网络的难度,理解所有这些因子仍然是当前研究的重点

你可能感兴趣的:(深度学习为何难用BP训练)