DL中常用的初始化方法

DL中常用的初始化方法

选择一个好的初值非常的重要,这从Banach不动点以及ODE中的存在性的证明中都可以看到初始值对于收敛的影响,下面把目前见到的初始化的方法记录一下。

全0初始化

这种是最暴力的了感觉,不过也有其适用的场景,比如说在LR(线性回归)中就经常会用到全0初始化,这是因为即便是全0初始化,在每次迭代的过程中线性回归中的参数也是可以更新的,所以是可以用的。

但是在神经网络中就不一定是这样了,我自己写了一个例子,就是假设输入是三个神经元节点,隐层有2个神经元节点,输出层有1个神经元节点,这样弄了之后会发现,由于在前向计算的时候,输出的值是一样的,导致在梯度回传的时候回传的梯度也是一样的,这样虽然参数会更新,但是却和神经元的节点的个数没有多大关系了,因为就相当于只有一个神经元节点的情况,这样就失去了神经网络的意义了。所以在神经网络的是不能够用全0初始化的。

高斯分布

也就是正态分布了,经常会用以0为均值以1为标准差的正态分布来进行初始化

均匀分布

就是在[a,b]中均匀取值的分布,

Xavier

为了使得网络中信息能够更好地流动,每一层的输出的方差应该尽量相等,并且想要每一层的输入的方差和输出的方差一致,还有在前向计算和后向传播的时候,每一层的方差一致。

在paper里面,第i层的权重的方差是 $Var[Wi] = \frac{2}{n_{i}+n_{i+1}}$, 那么因为$[a,b]$上的均匀分布的方差为$Var=\farc{(b-a)^2}{12}$, 从而有,取$[-a,a]$的话就是

这样就可以得到

其中$n_i$指的是权重矩阵的列数. 从而初始化的时候是a等于上式的均匀分布。

注意这种初始化适用于关于0对称的,在0附近接近是线性的,比如$tanh$. 并不适合于relu。

Kaiming 初始化

可以适用于relu, 意思是用以0为均值以$\sqrt{\frac{2}{n_l}}$ 为标准差的高斯分布。

打赏,谢谢~~

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,多谢支持~

打开微信扫一扫,即可进行扫码打赏哦