截断正态分布在初始化神经网络中的权重时有什么好处?

机器算法验证 神经网络 反向传播 权重 截断正态分布
2022-02-15 10:36:11

在前馈神经网络中初始化连接权重时,重要的是随机初始化它们以避免学习算法无法破坏的任何对称性。

我在各个地方看到的建议(例如,在 TensorFlow 的MNIST 教程中)是使用截断正态分布,其标准差为1N, 在哪里N是给定神经元层的输入数。

我相信标准偏差公式可以确保反向传播的梯度不会溶解或放大得太快。但我不知道为什么我们使用截断正态分布而不是正态分布。是为了避免罕见的异常权重吗?

2个回答

我认为它与神经元的饱和有关。想想你有一个像 sigmoid 这样的激活函数。

在此处输入图像描述

如果你的 weight val 的值 >= 2 或 <=-2 你的神经元将无法学习。因此,如果您截断正态分布,则根据您的方差,您将不会遇到此问题(至少从初始化开始)。我认为这就是为什么,一般来说使用截断法线更好。

截断正态分布对于参数接近0更好,最好保持参数接近0。见这个问题:https ://stackoverflow.com/q/34569903/3552975

在此处输入图像描述

保持小参数的三个原因(来源:概率深度学习:使用 Python、Keras 和 Tensorflow 概率):

  1. 经验表明,训练有素的神经网络通常具有较小的权重。
  2. 较小的权重导致较少的极端输出(在分类中,较少的极端概率),这对于未经训练的模型来说是可取的。
  3. 预测模型的一个已知属性是向损失函数中添加一个更喜欢小权重的组件通常有助于获得更高的预测性能。这种方法在非贝叶斯神经网络中也称为正则化或权重衰减。

Jason Brownlee 博士在这篇博客:深度学习中权重约束的简要介绍中指出:

神经网络中较小的权重可以使模型更稳定并且不太可能过度拟合训练数据集,从而在对新数据进行预测时具有更好的性能。


如果您使用 ReLU,您最好使用稍微正的初始偏差

通常应该使用少量噪声初始化权重,以破坏对称性,并防止梯度为 0。由于我们使用的是 ReLU 神经元,因此最好使用稍微正的初始偏差来初始化它们以避免“死神经元”。