Advertisement

[论文笔记] [2010] Understanding the Difficulty of Training Deep Feedforward Neural Networks

阅读量:

本文主要研究内容聚焦于参数初始化策略及其激活函数的影响,在实验过程中观察到网络在训练迭代过程中各层的 activations 和 gradients 的变化情况,并通过深入分析这些现象来探讨深度学习模型难以收敛的本质原因。随后在此基础上提出了改进型的参数初始化方案以优化模型收敛速度,并验证了该方法的有效性。

Effect of Activation Functions and Saturation During Training

该 sigmoid 激活函数已被证明具有减慢学习速度的特点。若采用服从均匀分布 U(-1/\sqrt{n}, 1/\sqrt{n}) 的随机参数初始化方式,则可能导致网络在训练阶段表现不佳,并且难以泛化至测试数据。图中展示了使用 sigmoid 激活函数时各层神经元 activation value 的均值和标准差变化情况。

在这里插入图片描述

从图表中可以看出这一现象非常独特:最后一层神经元迅速达到饱和状态,并维持这一状态长达较长时间;随着第一层神经元逐步接近饱和状态时,则会迫使最后一层神经元脱离这一状态。研究者推测这是因为随机初始化与sigmoid函数协同作用所致:如果采用前期预训练的方法来设定初始参数值,则可避免此现象发生

作者基于以下假设进行解释:随机初始化网络中较低层级所执行的初始线性变换对于分类任务而言并无显著价值。因此,在Softmax层中计算出的结果 \mathrm{softmax}(b+Wh) 相较于隐层中的激活值 h 来说更加依赖于偏置项 b 的存在。这也意味着在训练过程中网络将迫使 Wh 的权重系数趋近于零(这一现象同样适用于使 h 趋近于零)。从另一方面来看,在使用 tanh 或 softsign 激活函数时隐层中的激活值会趋于零状态,在反向传播过程中其梯度值不会消失;而当采用 sigmoid 函数作为激活函数时虽然隐层中的激活值也会趋近于零但此时神经元已经死亡无法恢复其学习能力(实际上已经饱和)。这种状态会导致梯度难以向后传播从而限制了较低层级参数的学习和特征提取能力。

尽管在训练过程中随着迭代次数的增加,最后一层神经元逐渐摆脱了饱和状态的影响,并促使下层神经元能够学习到有用的特征。然而这一过程进展缓慢且最终带来的优化效果欠佳同时模型的泛化能力也无法得到显著提升。鉴于当前问题的根本原因源于随机参数初始化与激活函数的搭配使用是否存在改善的可能性?是否可以探索其他类型的激活函数或者优化初始设置的方式?文中提到软sign激活函数在一定程度上规避了上述问题但就初始化策略而言该如何搭配激活函数才能获得理想的效果?设计出的理想化初始化方案应当满足哪些基本条件才是科学合理的?

Studying Gradients and their Propagation

在训练过程中,默认情况下会有这样一个观点:以确保网络各层之间的信息流通能够得到有效的维持,并且要求各层中的 activation values 以及反向传播过程中各层梯度的变化程度都应尽量保持在同一数量级上。这可以通过以下两个条件来具体体现:

  1. 各层中的 activation values 的方差应相等(即 Var[z^i] = Var[z^{i'}])
  2. 反向传播过程中各层梯度的变化程度也应相等(即 Var[∂Cost/∂s^i] = Var[∂Cost/∂s^{i'}])

按照这一标准,在研究如何选择合适的初始化方法时就显得尤为重要。首先应考察各层激活值的方差情况(具体推导可见文献[1,2])。进一步地,在反向传播过程中观察各层梯度值的变化特性(具体推导可见文献[1,2])。需要注意的是,在这种情况下我们还应满足以下两个条件:对于所有i值有n_iVar[W^i]=1;对于所有i值有n_{i+1} Var[Wi]=1。将这两个条件综合起来可得:对于所有i值Var[Wi]=\frac{2}{n_i + n_{i+1}}。基于上述理论基础我们可以设计一种新的初始化方法(如前所述)。即如前所述W矩阵服从区间[-\frac{\sqrt{6}}{\sqrt{n_j+n_{j+1}}} , \frac{\sqrt{6}}{\sqrt{n_j+n_{j+1}}} ]上的均匀分布

值得注意的是,如果每一层的 width 相等,并且每一层采用同样的初始化方式,可以得到一个有趣的性质:
\forall i, Var[\frac{\partial Cost}{\partial s^i}] = \left[ nVar[W]\right]^{d-i}Var[x] \\ \forall i, Var[\frac{\partial Cost}{\partial w^i}] = \left[ nVar[W]\right]^dVar[x] Var\left[\frac{\partial Cost}{\partial s^d}\right]
可以看到权值梯度的方差对于每一层来说是相等的,而反向传播梯度的方差在深层网络中仍可能会消失或者爆炸。下面的实验结果也可以看到,在不采用 normalized initialization 的情况下,初始的反向传播梯度的方差每一层是不一样,而权值的方差在两种情况下,每一层近乎相等的。另外可以看到,在采用了 normalized initialization 后反向传播的方差每一层就近乎相等了。

在这里插入图片描述
在这里插入图片描述

总结

这篇主要是实验分析为主,可以得到几个比较重要的结论:

  • 当采用常规随机初始化时,sigmoid 和 tanh 激活函数的结合难以达到良好的收敛效果;
  • 相较于sigmoid和tanh激活函数,softsign表现出更高的稳定性;
  • 通过配合normalized initialization策略可以显著提升模型性能;
  • 保持层与层之间激活值和梯度的良好流动非常有用。

参考文献

[1] 深度学习领域——其Xavier初始化策略研究及其应用实践,
[2] 神经网络训练难度笔记(Understanding the difficulty of training deep feedforward neural networks),
[3] 神经网络激活函数研究——Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification的学习笔记及其实现细节,
[4] Kaiming He和同事发表于IEEE国际计算机视觉会议上的论文:Delving deep into rectifiers: Surpassing human-level performance on image classification tasks.

全部评论 (0)

还没有任何评论哟~