权重初始化的理解和一些参考资料

参考资料:

  1. 神经网络权重初始化问题
  2. 深度学习之参数初始化(一)——Xavier初始化
  3. 深度学习中Xavier初始化

4种权重 W W W的初始化方法

1. 全部 W W W初始化为0: 不可行

如果全部权重初始化为0, 神经网络计算出来的输出值都一样,那么反向传播算法计算出来的梯度值也一样,参数更新值也一样 ( w = w − α ∗ d w ) (w=w−\alpha ∗ dw) (w=wαdw)。更一般地说,如果权重初始化为同一个值,网络就是对称的。

那么每一层的所有神经元参数都相等, 它们学的东西是一样的. 等同于每一层只有一个神经元.

2. 初始化为小的随机数

W = n p . r a n d o m . r a n d n ( D , W ) ∗ 0.01 W=np.random.randn(D,W) * 0.01 W=np.random.randn(D,W)0.01
D D D H H H W W W的维度. 这打破了对称性, 每一层的神经元可以学到不同的东西, 可行, 但还不够好.

注意: 并不是数字越小就会表现的越好。比如,如果一个神经网络层的权重非常小,那么在反向传播算法就会计算出很小的梯度(因为正向传播的时候每一层activations的均值和方差都会接近0, 导致梯度也约为0), 这会导致梯度消失的问题.

权重太大也会有问题, 那就是所有activations都接近-1或者1, 陷入激活函数的饱和区, 梯度消失.

3. 用1/sqrt(n)校准方差
随机初始化神经元的输出的分布有一个随输入量增加而增加的方差。结果证明,我们可以通过将其权重向量按其输入的平方根(即输入的数量)进行缩放,从而将每个神经元的输出的方差大致相同.
w = n p . r a n d o m . r a n d n ( n ) ∗ 1 n w=np.random.randn(n) * \frac{1}{\sqrt{n}} w=np.random.randn(n)n 1注: 这里只是初始化某一层的n个 W W W

4. Xavier初始化
Xavier同时考虑了前向传播和反向传播时不同层之间 Z Z Z和梯度的方差的变化, 保证了两个方向的方差都尽量一致, 解得 W W W应该保持下面范围内的均匀分布: [ − 6 n k + n k + 1 , 6 n k + n k + 1 ] [-\sqrt{\frac{6}{n^k+n^{k+1}}}, \sqrt{\frac{6}{n^k+n^{k+1}}}] [nk+nk+16 ,nk+nk+16 ]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值