马里兰大学论文:训练深度神经网络中的一致性难题
选自arXiv
作者:叶承曦(Chengxi Ye) 、杨叶舟 (Yezhou Yang) 、Cornelia Fermüller、Yiannis Aloimonos
机器之心编辑部
近日,马里兰大学和亚利桑那州立大学的研究者叶承羲、杨叶舟、Cornelia Fermüller、Yiannis Aloimonos 发表了一篇论文《On the Importance of Consistency in Training Deep Neural Networks》,在此文章中作者们对神经网络多年以来存在的训练一致性难题进行了探讨研究。文章发现神经网络的训练难题可被解释为:在多层网络训练过程中,层与层之间产生的一系列「不一致性」问题。
在此论文中,作者们将不一致性问题分为三大类:
1. 多层网络每层训练速度不一致(training speed inconsistency)
目前训练神经网络的随机梯度下降迭代法,全局采用相同的步长,无法保证每层训练速度都是最优的。文章展示了即使对于简单的多层网络,目前所有一阶训练法均无法获得良好训练结果。为此文章分析了每层网络的学习误差,展示了如何采用现实可行的二阶梯度下降法(SGD2)对深层神经网络进行逐层训练。在计算开销与一阶梯度下降法持平的情况下,训练效果显著提升,并且在恶劣初始化 (如 N(0,10000)) 的情况下均能完成训练。
2. 输入输出尺度不一致 (scale inconsistency)
在不加限制的情况下,多层神经网络在计算过程中会产生输入与误差尺度不一致问题。过去,学术界针对一阶梯度下降法提出了较为复杂的 Batch Normalization 算法。文章展示在使用二阶梯度下降法进行训练时,归一化过程可以简化为 RMS Normalization。相对而言 Batch Normalization 中的一组额外的尺度调整参数在加速一阶算法训练速度的同时会造成网络不稳定。如何构建稳定的神经网络的是当前神经网络领域的一大难题。目前的绝大多数神经网络模型会将某些细小的扰动扩大,对最终结果造成灾难性的影响。
3.层间误差传递不一致(inconsistency in residual propagation)
误差传递不一致是指在误差从深层往浅层传的过程中,其能量在各层的分布不一致,其中一个特例是著名的梯度消失问题。文章利用算子理论和线性代数基本定理,对梯度消失问题进行了解释。分析得出常用的 ReLU 函数在梯度反向传播过程中会导致梯度消失问题,于是提出使用函数绝对值构造 ModU 非线性映射。文章末尾利用 RMS Normalization 和 ModU 映射,构造出了稳定型的神经网络,并对深度网络的学习机理进行了探讨。
论文:On the Importance of Consistency in Training Deep Neural Networks
地址:https://arxiv.org/abs/1708.00631
涉及的代码源代码可在基于 Matlab 的深度学习平台 LightNet 上找到: https://github.com/yechengxi/LightNet
摘要:我们解释了训练深层神经网络的主要难点源自于三个一致性问题。该论文介绍了我们在分析与解决这些问题上的努力。第一个问题是在不同层中训练速度不一致性。我们提出用一个直观易于实现,计算开销小的二阶方法来解决此问题。第二个问题是每层输入与误差之间尺度不一致问题。我们解释了二阶信息在去除这一障碍时能够提供便利。第三个问题,也是最具挑战性的问题是在误差传递中的不一致性。基于线性代数的基本定理,我们给出了著名的梯度消失问题的数学刻画,并由此给出未来设计神经网络及优化时的一个重要设计原则。在文章末尾,我们构造出一个全新的收缩神经网络(contractive neural network)。
图一:使用一阶梯度下降方法和二阶梯度下降方法的直观展示。
表 1:各种神经网络在 MNIST [16] 和 CIFAR-10 [14] 数据集上的训练结果。
表 2:使用不同尺度初始化的最低测试误差。初始化利用标准差为 10^(-4) 到 10^(4) 的正态分布,试验是在 MNIST 数据集使用章节 3.3 中的十层神经网络进行。
图 2:在不同数据集和神经网络上的训练曲线。(a)在 MNIST 数据集上训练带有两个隐藏层的 MLP 网络的第一轮训练损失。(b)在 CIFAR-10 数据集上训练带有 5 个卷积层网络的测试误差。(c)在 MNIST 数据集上训练带有十个隐藏层的 MLP 网络的测试误差。在(b,c)中误差率的增加是由过拟合而引起的。(d)在 MNIST 数据集上训练带有十个隐藏层的 MLP 网络的测试误差。该神经网络的权重初始化服从 N(0,10^-4) 到 N(0,10^4) 的分布,且使用二阶信息进行训练。
图 3:ReLU 和 ModU 激活函数在训练深度神经网络中的应用。(a)不同深度的神经网络使用 ReLU 和 ModU 激活函数的不同测试损失。(b)10 层 MLP 使用 ModU 激活函数在不同程度的权重衰减正则化下的测试误差率,每一层有 128 个隐藏结点。(c)交替叠加的线性层和归一化层的范数上界。
图 4:使用 ReLU 和 ModU 激活函数的 20 层 narrow MLP 网络在训练过程中的梯度能量分布(Gradient energy distribution)。平均能量是每一层的能量均值,ReLU 函数在更快的降低误差的同时也有更严重的信息损失,而 ModU 拥有相反的性质。如果神经网络训练地足够长,误差将减少地更多,注意曲线在中部比较平坦。