Xavier 论文阅读

Xavier 原论文传送地址
参考博客传送

摘要

在2006年之前,似乎深层多层神经网络没有得到成功的训练,然而几种算法已被证明可以成功地训练它们,实验结果表明深层架构较浅层架构的优越性
所有这些实验结果都是通过新的初始化或训练机制获得的。
我们的目标是更好地理解为什么使用了随机初始化的标准梯度下降与深度神经网络结合的效果差,以便来更好地理解这些最近的相对成功的算法,并帮助设计更好的算法。
我们首先观察非线性**函数的影响。

  1. 我们发现logistic sigmoid**函数不适用于具有随机初始化的深度网络,因为它均值为1的特性可能导致特别是顶层隐藏层进入饱和状态。但是,我们发现饱和单位可以自行移出饱和状态,尽管缓慢,并且解释了训练神经网络时有时看到的平缓区域。
  2. 我们发现我们能从饱和度较低的新的非线性单元获益。
  3. 我们研究层与层之间和训练过程中的**和梯度如何变化。当每层的雅可比矩阵的奇异值远离1时,训练可能会更困难。

基于这些考虑,我们提出了一个新的初始化机制,可以进行快速收敛。

深度神经网络

深度学习方法的目的在于学习特征层次,这些特征层次是由通过低层次特征的组合构成形成更高级别的特征。 它们包括用于各种深层架构的学习方法,包括具有许多隐藏层的神经网络和具有多层隐藏变量的图形模型等等。 由于它们的理论吸引力,来自生物学和人类认知的灵感,以及经验在视觉和自然语言处理方面的成功,近来已经对它们进行了大量的关注。 Bengio回顾和讨论的理论结果表明,为了学习可代表高级抽象的复杂函数,可能需要深度架构。

大多数最近的深层结构实验结果都是利用可以变成深度监督神经网络的模型获得的,但是初始化或训练方案不同于经典的前馈神经网络。为什么这些新算法比监督训练标准的标准随机初始化和基于梯度的优化更好?部分答案可以在近期对无监督预训练效果的分析中找到,表明它作为一个正规化器,在优化程序的“更好”吸引池中初始化参数,对应于与更好相关的明显局部最小值概括。但之前的工作表明,即使是纯粹监督但贪婪的分层程序也会带来更好的结果。因此,在这里,我们不是集中讨论无监督的预训练或半监督的准则给深层架构带来什么,而是专注于分析好的老的(但是深层的)多层神经网络可能出现的问题。

分析是由实验来驱动的,以监控**函数(监视隐藏单位的饱和度)和梯度,跨层和跨训练迭代。
我们还评估了**函数选择(可能会影响饱和的想法)和初始化过程(因为无监督预训练是一种特殊的初始化形式并且其影响很大)对这些影响。

训练期间**函数和饱和的影响

我们可以从**函数的演变中找到我们应该极力避免的问题:

  1. **函数的过度饱和:梯度不会传播得很好
  2. 过于线性的单位:它们不会计算出有趣的东西

Sigmoid

**函数的均值和标准差:
Xavier 论文阅读
我们看到:在开始的时候,最后一个隐藏层的所有**函数快速的被推到它们的低饱和值0.相反,其他层的平均**值大于0.5,随着我们从输出层到输入层的传播而减少。
我们发现这种饱和在以sigmoid为**函数的更深网络中可以持续很长时间,例如,在训练期间,5层的深度模型从未逃脱这种现象。
令人惊讶的是,对于中间数量的隐藏层(这里是第四层),饱和状态可能会逃脱。
在顶层隐藏层移出饱和的同时,第一个隐藏层开始饱和并因此趋于稳定。

我们假设这种现象是由于随机初始化隐藏单元饱和输出为0相结合。
注意,从无监督预训练(例如从RBM)初始化的sigmoid 深度网络不会受到这种饱和行为的影响。
我们提出的解释依赖于这样一个假设:与从无监督预训练获得的变换不同, 随机初始化网络的低层计算最初对分类任务没有用处。
逻辑层输出softmaxb+Wh最初可能更多地依赖于它的偏执b(这是非常快速学习的),而不是依赖于从输入图像导出的最后一层隐藏**单元h(因为h能不能预测y ,可能x或的其他可能更主要的变量相关)。
因此,误差梯度倾向于将Wh推向0,这可以通过将h推向0来实现。
在对称**函数(如双曲线正切和软标志)的情况下,坐在0附近是好的,因为它允许梯度向后流动。然而,将S形输出推到0会使它们进入饱和状态,这将防止梯度向后流动,并防止较低层学习有用的特征。
最终但缓慢,下层移向更有用的特征,然后顶层隐藏层移出饱和区域。但请注意,即使在此之后,网络也会转变为质量较差的解决方案(也就是泛化)

tanh神经网络和softsign神经网络在训练过程中每层**值的分布情况

Xavier 论文阅读
可以看到在tanh神经网络中第一层最先饱和,然后是后面各层按顺序出现饱和。softsign神经网络中饱和现象并不严重,而且各层差不多同时出现饱和情况。

训练完成后tanh神经网络和softsign神经网络各层的**值的直方图 :
Xavier 论文阅读
tanh神经网络的低层出现了饱和现象:-1和1对应的神经元非常多。