权重初始化

1.Xaiver初始化

1.1 目标

    每一层输出的方差应该尽量相等,每一层的梯度的方差也应该保持相同。那么,每一层的权重应该满足哪种条件。

1.2 结论

    权重的方差应该满足: i V a r [ W i ] = 2 n i n + n o u t 。其中, n i n 表示输入维度( n = c h a n n e l × k e r n e l h × k e r n e l w ), n o u t 表示输出维度。
    设计一个用于初始化参数的概率分布,这里使用均匀分布进行参数初始化。假设随机变量服从范围为 [ a , b ] 的均匀分布,那么它的方差为: σ = ( b a ) 2 12 。可以求得,最终把参数初始化成 W U [ 6 n i n + n o u t , 6 n i n + n o u t ] 范围内的均匀分布。

2.MSRA初始化

2.1 目标

    和Xavier初始化方法类似,只不过Xavier初始化方法假设激活函数是线性的,显然我们目前常用的ReLU和PReLU并不满足这一条件。

2.2 结论

    MSRA初始化是高斯分布: W G [ 0 , 4 n i n + n o u t ]

3.应用

3.1结论

  1. sigmoid激活函数 + 均值0,方差1的高斯分布的权重初始化。
  2. ReLU激活函数 + xavier权重初始化/MSRA权重初始化。
  3. PReLU激活函数 + xavier权重初始化/MSRA权重初始化。

3.2 理由

    sigmoid函数能够控制数据的幅度,在深层模型中,保证数据幅度不会太大。但sigmoid存在梯度消失问题,反向传播上有劣势。
    ReLU函数不能控制数据的幅度,在深层模型中,数据的幅度有可能产生一定的不平衡,最终会影响模型的表现。但ReLU在反向传播方面可以把梯度传给后面的参数,优化效果更好。通过Xavier和MSRA的权重初始化,可以解决数值范围不稳定的问题。

猜你喜欢

转载自blog.csdn.net/weixin_37904412/article/details/80973645