动手学深度学习-14

敖炜 Lv5

数值稳定性+模型初始化和激活函数

初始化方案的选择在神经网络学习中起着举足轻重的作用,它对保持数值稳定性至关重要。此外,这些初始方案的选择可以与非线性激活函数的选择有趣的结合在一起。我们选择哪个函数以及如何初始化参数可以决定优化算法收敛的速度有多快。糟糕的选择可能会导致我们在训练时遇到梯度爆炸或梯度消失

梯度消失和梯度爆炸

  1. 不稳定梯度带来的风险不止在于数值表示;不稳定梯度也威胁到我们优化算法的稳定性。我们可能面临一些问题,要么是梯度爆炸:参数更新过大,破坏了模型的稳定收敛;要么是梯度消失:参数更新过小,在每次更新时几乎不会移动,导致模型无法学习

梯度消失

由于sigmoid函数存在梯度消失的隐患,因此,更稳定的ReLU系列函数已经成为从业者的默认选择

梯度爆炸

打破对称性

  1. 神经网络设计的另一个问题是其参数化所固有的对称性。假设我们有一个简单的多层感知机,它有一个隐藏层和两个隐藏单元。在这种情况下,我们可以对第一层的权重进行重排列,并且同样对输出层的权重进行重排列,可以获得相同的函数。第一个隐藏单元和第二个隐藏单元没有什么特别的区别。换句话说,我们在每一层的隐藏单元之间具有排列对称性
  2. 假设输出层将上述两个隐藏单元的多层感知机转换为仅一个输出单元。想象一下,如果我们将隐藏层的所有参数初始化为 为常量,会发生什么?在这种情况下,在前向传播期间,两个隐藏单元采用相同的输入和参数,产生相同的激活,该激活被送到输出单元。在反向传播期间,根据参数对输出单元进行微分,得到一个梯度,其元素都取相同的值。因此,在基于梯度的迭代(例如,小批量随机梯度下降)之后,的所有元素仍然采用相同的值。这样的迭代永远不会打破对称性,我们可能永远也无法实现网络的表达能力。隐藏层的行为就好像只有一个单元。请注意,虽然小批量随机梯度下降不会打破这种对称性,但暂退法正则化可以。

参数初始化

解决(或至少减轻)上述问题的一种方法是进行参数初始化, 优化期间的注意和适当的正则化也可以进一步提高稳定性。

默认初始化

打破对称性

神经网络设计中的另一个问题是其参数化所固有的对称性。
假设我们有一个简单的多层感知机,它有一个隐藏层和两个隐藏单元。
在这种情况下,我们可以对第一层的权重进行重排列,
并且同样对输出层的权重进行重排列,可以获得相同的函数。
第一个隐藏单元与第二个隐藏单元没有什么特别的区别。
换句话说,我们在每一层的隐藏单元之间具有排列对称性。

假设输出层将上述两个隐藏单元的多层感知机转换为仅一个输出单元。
想象一下,如果我们将隐藏层的所有参数初始化为
为常量,会发生什么?
在这种情况下,在前向传播期间,两个隐藏单元采用相同的输入和参数,
产生相同的激活,该激活被送到输出单元。
在反向传播期间,根据参数对输出单元进行微分,
得到一个梯度,其元素都取相同的值。
因此,在基于梯度的迭代(例如,小批量随机梯度下降)之后,
的所有元素仍然采用相同的值。
这样的迭代永远不会打破对称性,我们可能永远也无法实现网络的表达能力。
隐藏层的行为就好像只有一个单元。
请注意,虽然小批量随机梯度下降不会打破这种对称性,但暂退法正则化可以。

参数初始化

解决(或至少减轻)上述问题的一种方法是进行参数初始化,
优化期间的注意和适当的正则化也可以进一步提高稳定性。

默认初始化

在前面的部分中,我们使用正态分布来初始化权重值。如果我们不指定初始化方法,框架将使用默认的随机初始化方法,对于中等难度的问题,这种方法通常很有效。

Xavier初始化

让我们看看某些没有非线性的全连接层输出(例如,隐藏变量)的尺度分布。
对于该层输入及其相关权重,输出由下式给出

权重都是从同一分布中独立抽取的。
此外,让我们假设该分布具有零均值和方差
请注意,这并不意味着分布必须是高斯的,只是均值和方差需要存在。
现在,让我们假设层的输入也具有零均值和方差
并且它们独立于并且彼此独立。
在这种情况下,我们可以按如下方式计算的平均值和方差:

保持方差不变的一种方法是设置
现在考虑反向传播过程,我们面临着类似的问题,尽管梯度是从更靠近输出的层传播的。
使用与前向传播相同的推断,我们可以看到,除非
否则梯度的方差可能会增大,其中是该层的输出的数量。
这使得我们进退两难:我们不可能同时满足这两个条件。
相反,我们只需满足:

这就是现在标准且实用的Xavier初始化的基础,
它以其提出者 :cite:Glorot.Bengio.2010 第一作者的名字命名。
通常,Xavier初始化从均值为零,方差

的高斯分布中采样权重。
我们也可以将其改为选择从均匀分布中抽取权重时的方差。
注意均匀分布的方差为
代入到的条件中,将得到初始化值域:

尽管在上述数学推理中,“不存在非线性”的假设在神经网络中很容易被违反,
但Xavier初始化方法在实践中被证明是有效的。

额外阅读

上面的推理仅仅触及了现代参数初始化方法的皮毛。
深度学习框架通常实现十几种不同的启发式方法。
此外,参数初始化一直是深度学习基础研究的热点领域。
其中包括专门用于参数绑定(共享)、超分辨率、序列模型和其他情况的启发式算法。
例如,Xiao等人演示了通过使用精心设计的初始化方法,
可以无须架构上的技巧而训练10000层神经网络的可能性。

如果有读者对该主题感兴趣,我们建议深入研究本模块的内容,
阅读提出并分析每种启发式方法的论文,然后探索有关该主题的最新出版物。
也许会偶然发现甚至发明一个聪明的想法,并为深度学习框架提供一个实现。

小结

  • 梯度消失和梯度爆炸是深度网络中常见的问题。在参数初始化时需要非常小心,以确保梯度和参数可以得到很好的控制。
  • 需要用启发式的初始化方法来确保初始梯度既不太大也不太小。
  • ReLU激活函数缓解了梯度消失问题,这样可以加速收敛。
  • 随机初始化是保证在进行优化前打破对称性的关键。
  • Xavier初始化表明,对于每一层,输出的方差不受输入数量的影响,任何梯度的方差不受输出数量的影响。

QA

  • 标题: 动手学深度学习-14
  • 作者: 敖炜
  • 创建于 : 2023-08-16 09:24:43
  • 更新于 : 2024-04-19 09:28:21
  • 链接: https://ao-wei.github.io/2023/08/16/动手学深度学习-14/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论