神经网络中权值初始化的方法

学习 · 2023-02-13 · 338 人浏览

神经网络中权值初始化的方法

权值初始化的方法主要有:常量初始化(constant)、高斯分布初始化(gaussian)、positive_unitball初始化、均匀分布初始化(uniform)、xavier初始化、msra初始化、双线性初始化(bilinear)、数学方法 Kaiming初始化、orthogonal正交初始化。

常量初始化(constant)

把权值或者偏置初始化为一个常数,具体是什么常数,可以自己定义

高斯分布初始化(gaussian)

需要给定高斯函数的均值与标准差

positive_unitball初始化

让每一个神经元的输入的权值和为 1,例如:一个神经元有100个输入,让这100个输入的权值和为1. 首先给这100个权值赋值为在(0,1)之间的均匀分布,然后,每一个权值再除以它们的和就可以啦。这么做,可以有助于防止权值初始化过大,从而防止激活函数(sigmoid函数)进入饱和区。所以,它应该比较适合simgmoid形的激活函数

均匀分布初始化(uniform)

将权值与偏置进行均匀分布的初始化,用min 与 max 来控制它们的的上下限,默认为(0,1)

xavier初始化

(论文:《Understanding the difficulty of training deep feedforward neural networks》)

对于权值的分布:均值为0,方差为(1 / 输入的个数) 的 均匀分布。如果我们更注重前向传播的话,我们可以选择 fan_in,即正向传播的输入个数;如果更注重后向传播的话,我们选择 fan_out, 因为在反向传播的时候,fan_out就是神经元的输入个数;如果两者都考虑的话,就选 average = (fan_in + fan_out) /2。对于ReLU激活函数来说,XavierFiller初始化也是很适合。关于该初始化方法,具体可以参考文章1文章2,该方法假定激活函数是线性的。

msra初始化

(论文:《Delving Deep into Rectifiers:Surpassing Human-Level Performance on ImageNet Classification》.)

对于权值的分布:基于均值为0,方差为( 2/输入的个数)的高斯分布;它特别适合 ReLU激活函数,该方法主要是基于Relu函数提出的,推导过程类似于xavier,可以参考博客

双线性初始化(bilinear)

常用在反卷积神经网络里的权值初始化

数学方法:Kaiming初始化

如果初始化的权重在训练开始时太大,那么每个矩阵乘法将指数地增加激活函数结果,导致我们称之为梯度爆炸。相反,如果权重太小,那么每个矩阵乘法将减少激活函数结果直到它们完全消失。

Kaiming初始化考虑了每次矩阵乘法后的ReLU激活函数。

简化公式(对于标准ReLU)是通过以下方式缩放随机权重(从标准分布中提取):

$$ Normalized\; random\;weights \times \sqrt{\frac{2}{size\;of\;input\;erctor}} $$

此外,所有bias参数都应初始化为零。

正交初始化(orthogonal initialize)

用以解决深度网络下的梯度消失、梯度爆炸问题,在RNN中经常使用的参数初始化方法。

初始化 神经网络
Theme Jasmine by Kent Liao