我的知识
假设您有一个完全连接的层,并且每个神经元执行如下操作
a = g(w^T * x + b)
werea
是神经元的输出、x
输入、g
我们的通用激活函数,最后是w
我们b
的参数。
如果两者w
和b
都被初始化为所有元素彼此相等,则a
对于该层的每个单元都是相等的。
这意味着我们具有对称性,因此在我们选择更新参数的任何算法的每次迭代中,它们将以相同的方式更新,因此不需要多个单元,因为它们都表现为单个单元。
为了打破对称性,我们可以随机初始化矩阵w
并初始化b
为零(这是我经常看到的设置)。这种方式a
对于每个单元都是不同的,因此所有神经元的行为都不同。
当然,随机初始化两者w
,b
即使没有必要也可以。
问题
随机初始化w
是唯一的选择吗?我们可以随机初始化b
而不是w
为了打破对称性吗?答案是否取决于激活函数和/或成本函数的选择?
我的想法是我们可以通过随机初始化来打破对称性b
,因为这样a
对于每个单元都是不同的,并且因为在反向传播中,两者的导数都w
依赖b
于a
(至少对于所有激活函数都应该如此)到目前为止我已经看到),每个单元的行为都会有所不同。显然,这只是一个想法,我不确定这是否绝对正确。