为什么可以将偏置向量设置为零,而不是权重矩阵?

数据挖掘 神经网络 深度学习 反向传播 偏见 权重初始化
2022-02-25 14:31:12

我们不会用零初始化权重矩阵,因为对称性在反向传递期间并随后在参数更新过程中没有被破坏。

但是用零设置偏置向量是安全的,并且它们会相应地更新。

为什么这样做是安全的,而不是相反?

为什么我们不能用随机数初始化偏置向量,用零初始化权重矩阵?

我最初的想法是向量的秩为 (n, 1),其中nN. 这不适用于矩阵。因此,在向量的情况下,对称性并没有真正发挥作用。

但这并不能回答深度神经网络的每一层都有自己的权重矩阵,并且不需要跨层对称的问题。

那么,当我们谈论对称性时,我们是在谈论同一矩阵的不同行之间的对称性吗?

列对称性应该无关紧要,因为它们对于不同的训练示例(对于第一个隐藏层)。在除第一个之外的隐藏层的情况下,列对称性是否会严重干扰训练过程?

1个回答

根据Lecun 的Efficient Backprop(第 4.6 节),权重应该在激活函数的线性区域中初始化。如果它们太大,激活函数将饱和并提供小的梯度步长来改变这些权重。如果它们太小,它们不会真正影响梯度并使学习变得太慢。

是的,如果您选择相同的权重,这将创建一个可能有问题的人为对称。这里的“对称性”是指同一层的神经元具有相同的初始权重,因此是多余的。我认为谈论冗余比谈论对称性更清楚。这将转化为权重矩阵中的冗余行。当然,如果您的所有权重都设置为零,那么您所有的权重矩阵行都将相同,并且您的所有权重矩阵中都会有水平对称性。

当然,您希望避免模型中的冗余,但这不是主要问题。您的主要问题是关于有效地解决优化问题,即相对于您的权重具有足够大的梯度以帮助快速收敛这就是为什么您将权重设置为小但不是太小的值。随机性有助于避免冗余。

将权重设置为随机值后,您就可以在激活函数的线性区域中获得一些最小保证,因此您实际上不需要添加偏差。