为什么在神经网络中权重矩阵必须随机初始化

权重矩阵的随机初始化

当训练神经网络的时候,权重随机初始化是非常重要的。对于逻辑回归,把权重初始化为0是可以正常运行的。

但是对于一个神经网络,如果把权重或者参数全部初始化为0,那么梯度下降是不会起作用的。

我们来看看这是为什么,在讨论的时候先忽略b的影响,因此设 b = 0 b=0 b=0

假设我们的网络只有两层,输入层的神经元个数有4个,输出层的神经元个数有3个,那么我们的权重矩阵W为维数为 ( 3 , 4 ) (3,4) (3,4),如果将其全部初始化为0的话,那么其所有行就是一样的,假设对于这些行都用一个向量 m m m来表示,那么权重矩阵可以写成下面这种形式:
W = [ m m m ] W= \left[ \begin{array}{c} m\\ m\\ m \end{array} \right] W=mmm
那么我们得到的下一层神经元的输入值每一行也都是一样的:
z = W x = [ m x m x m x ] z=Wx= \left[ \begin{array}{c} mx\\ mx\\ mx \end{array} \right] z=Wx=mxmxmx

经过一次梯度下降的迭代之后,我们可以得到新的W:
W = W − α   d W W = W - \alpha \ dW W=Wα dW
而对于 d W dW dW来说,其取值如下:
d W = [ ( a − y ) x 1 ( a − y ) x 2 ( a − y ) x 3 ( a − y ) x 4 ( a − y ) x 1 ( a − y ) x 2 ( a − y ) x 3 ( a − y ) x 4 ( a − y ) x 1 ( a − y ) x 2 ( a − y ) x 3 ( a − y ) x 4 ] dW = \left[ \begin{array}{cccc} (a-y)x_1 & (a-y)x_2 & (a-y)x_3 & (a-y)x_4\\ (a-y)x_1 & (a-y)x_2 & (a-y)x_3 & (a-y)x_4\\ (a-y)x_1 & (a-y)x_2 & (a-y)x_3 & (a-y)x_4\\ \end{array} \right] dW=(ay)x1(ay)x1(ay)x1(ay)x2(ay)x2(ay)x2(ay)x3(ay)x3(ay)x3(ay)x4(ay)x4(ay)x4
由于 W W W的初值是一样的,并且每次训练时减去的值也是样的,我们可以发现,每一层的更新之后仍然是一样的值,也就是意味着每一个神经元都在进行相同的函数计算,他们的功能是一模一样的。

由此可以推导,如果把权重都初始化为0,那么由于隐含单元开始计算同一个函数,所有的隐含单元就会对输出单元有着同样的影响。一次迭代之后同样的表示是结果仍然是相同的,即隐含单元是完全对称的。无论通过多少次迭代,隐含单元计算的仍然是相同的函数,这种情况下一直添加神经元的个数是没有帮助的,因为他们一直都是在计算相同的东西。

正确的做法应该是使用随机初始化参数,也就是将每个参数都进行随机初始化。

在代码中可以这样计算:

W = np.random.randn((3,4)) * 0.01

至于为什么这里会需要乘一个0.01呢?为什么不是其他的数,100或者1000?

因为如果你用tanh或者simoid激活函数,或者说只在输出层有一个sigmoid,对于这两个函数来说,当他们的 z z z取值很大的时候,函数的值下降的就会非常的慢,也就是说当 z z z比较大的时候,导数值会非常的小,我们在训练时候往往是期望尽快获得一些效果的,因此就尽量保证我们的初始值可以使得 z z z的取值比较小,这样导数值在开始就会比较大,学习速度也会比较快,模型就会较快的收敛。

但是不是说0.01就是一个最好的值,对于不同的模型来说这里的取值可以不同,也是学习中一个不太重要的超参数。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hydrion-Qlz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值