在前馈神经网络中初始化连接权重时,重要的是随机初始化它们以避免学习算法无法破坏的任何对称性。
我在各个地方看到的建议(例如,在 TensorFlow 的MNIST 教程中)是使用截断正态分布,其标准差为, 在哪里是给定神经元层的输入数。
我相信标准偏差公式可以确保反向传播的梯度不会溶解或放大得太快。但我不知道为什么我们使用截断正态分布而不是正态分布。是为了避免罕见的异常权重吗?
在前馈神经网络中初始化连接权重时,重要的是随机初始化它们以避免学习算法无法破坏的任何对称性。
我在各个地方看到的建议(例如,在 TensorFlow 的MNIST 教程中)是使用截断正态分布,其标准差为, 在哪里是给定神经元层的输入数。
我相信标准偏差公式可以确保反向传播的梯度不会溶解或放大得太快。但我不知道为什么我们使用截断正态分布而不是正态分布。是为了避免罕见的异常权重吗?
截断正态分布对于参数接近0更好,最好保持参数接近0。见这个问题:https ://stackoverflow.com/q/34569903/3552975
保持小参数的三个原因(来源:概率深度学习:使用 Python、Keras 和 Tensorflow 概率):
Jason Brownlee 博士在这篇博客:深度学习中权重约束的简要介绍中指出:
神经网络中较小的权重可以使模型更稳定并且不太可能过度拟合训练数据集,从而在对新数据进行预测时具有更好的性能。
如果您使用 ReLU,您最好使用稍微正的初始偏差:
通常应该使用少量噪声初始化权重,以破坏对称性,并防止梯度为 0。由于我们使用的是 ReLU 神经元,因此最好使用稍微正的初始偏差来初始化它们以避免“死神经元”。