神经网络参数初始化方法

神经网络训练的过程就是对网络权重不断学习更新的过程,网络初始权重对网络的训练非常重要。不合适的初始化方法可能会导致网络参数传播过程中产生梯度消失、梯度爆炸等现象。

常用的初始化方法有随机初始化、Xavier初始化、he初始化等

1 零初始化

对于逻辑回归,网络权重是可以初始化为0的;对于深度神经网络,网络权重和偏置是不可以一起初始化为0的,不然会造成每层的网络所有节点输出是一致的,具体分析可以参考神经网络权重为什么不能初始化为0?

2 随机初始化

随机初始化的时候常常采用高斯或均匀分布初始化网络权重。这种方法相对0初始化要好许多,但是在遇到激活函数为sigmoid / tanh的时候,可能会出现梯度消失和梯度爆炸现象

以四层网络,参数为 w 1 , b 1 , w 2 , b 2 , w 3 , b 3 , w 4 , b 4 w_1, b_1, w_2, b_2, w_3, b_3, w_4, b_4 w1,b1,w2,b2,w3,b3,w4,b4,激活函数为sigmoid, σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1+e^{-x}} σ(x)=1+ex1

y i = σ ( z i ) y_i = \sigma(z_i) yi=σ(zi)

z i = w i y i − 1 + b i z_i = w_i y_{i-1} + b_i zi=wiyi1+bi

sigmoid函数求导数 σ ′ = σ ( 1 − σ ) \sigma^{'} = \sigma (1-\sigma) σ=σ(1σ)后,峰值为0.25;损失函数C对 b 1 b_1 b1的导数为

∂ C ∂ b 1 = ∂ C ∂ y 4 ∂ y 4 ∂ z 4 ∂ z 4 ∂ y 3 ∂ y 3 ∂ z 3 ∂ z 3 ∂ y 2 ∂ y 2 ∂ z 2 ∂ z 2 ∂ y 1 ∂ y 1 ∂ z 1 ∂ z 1 ∂ b 1 = ∂ C ∂ y 4 σ ( z 4 ) ′ w 4 σ ( z 3 ) ′ w 3 σ ( z 2 ) ′ w 2 σ ( z 1 ) ′ 1 \frac{\partial C}{\partial b_1} = \frac{\partial C}{\partial y_4} \frac{\partial y_4}{\partial z_4} \frac{\partial z_4}{\partial y_3} \frac{\partial y_3}{\partial z_3} \frac{\partial z_3}{\partial y_2} \frac{\partial y_2}{\partial z_2} \frac{\partial z_2}{\partial y_1} \frac{\partial y_1}{\partial z_1} \frac{\partial z_1}{\partial b_1} = \frac{\partial C}{\partial y_4} \sigma(z_4)^{'} w_4 \sigma(z_3)^{'} w_3 \sigma(z_2)^{'} w_2 \sigma(z_1)^{'} 1 b1C=y4Cz4y4y3z4z3y3y2z3z2y2y1z2z1y1b1z1=y4Cσ(z4)w4σ(z3)w3σ(z2)w2σ(z1)1

sigmoid 函数对于大到10的值,sigmoid的值几乎是1,对于小到-10的值,sigmoid的值几乎为0。意味着如果权值矩阵被初始化成过大的值,权重 w i w_i wi连乘会出现梯度爆炸的现象,反之,当权值矩阵被初始化成太小的值,可能会出现梯度消失

3 Xavier初始化

Xavier初始化通过保持输入和输出的方差一致(服从相同的分布)避免梯度消失和梯度爆炸问题,使得信号在神经网络中可以传递得更深,在经过多层神经元后保持在合理的范围(不至于太小或太大)。

xavier均匀分布

w ∼ U [ − 6 n i n + n o u t , 6 n i n + n o u t ] w \sim U[-\frac{\sqrt{6}}{\sqrt{n_{in}+n_{out}}},\frac{\sqrt{6}}{\sqrt{n_{in}+n_{out}}}] wU[nin+nout 6 ,nin+nout 6 ]

xavier正态分布

w ∼ N [ m e a n = 0 , s t d = 2 n i n + n o u t ] w \sim N[mean=0, std=\frac{\sqrt{2}}{\sqrt{n_{in}+n_{out}}}] wN[mean=0,std=nin+nout 2 ]

适用于激活函数为tanh的深层网络,但不适用于RELU

4 He初始化

He初始化解决的问题:ReLU网络每一层有一半的神经元被激活,另一半为0(x负半轴中是不激活的),所以要保持variance不变,只需要在Xavier的基础上再除以2。

He均匀分布

w ∼ U [ − 6 2 n i n + n o u t , 6 2 n i n + n o u t ] w \sim U[-\frac{\sqrt{6}}{2\sqrt{n_{in}+n_{out}}},\frac{\sqrt{6}}{2\sqrt{n_{in}+n_{out}}}] wU[2nin+nout 6 ,2nin+nout 6 ]

He正态分布

$$w \sim N[mean=0, std=\frac{\sqrt{2}}{\sqrt{n_{in}}}]$$

参考

1、参数初始化

2、网络权重初始化方法总结

欢迎关注微信公众号(算法工程师面试那些事儿),本公众号聚焦于算法工程师面试,期待和大家一起刷leecode,刷机器学习、深度学习面试题等,共勉~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值