什么是权值初始化
在神经网络的前向传播的过程中,需要设置输入到输出的权重。
为什么要权值初始化
正确的权值初始化可以促进模型的快速收敛,不正确的权值初始化可能使得模型在前向传播是发生发生信息消失,或在反向传播时发生梯度消失,最后出现模型难以训练的情况。
怎么权值初始化
首先我们要避免全零初始化
全零初始化的话网络中的神经元输出相同,反向传导也相同,参数更新相同,等价于只有一个神经元。
而应该采用随机初始化,使得权值采样于同一个分布下。
有效的初始化方法:使网络各层的激活值和局部梯度的方差在传播过程中尽量保持一致;以保持网络中正向和反向数据流动
为什么要使得输入和输出的方差一致?
如果输入和输出不是同一个方差,那么在正向和反向流动中会产生信息消失或者梯度消失的情况,最终无法训练模型。
那么问题又来了
怎样让输入和输出的方差一致呢?
法一:调整权值分布
Xavier初始化
要求选择tanh作为激活函数,权值采样于
分布下,N为输入样本个数
推导过程:
MSRA
要求选择Relu作为激活函数,权值采样于
分布下,N为输入样本个数
法二:调整神经元的输出
批归一化
前两种方法是调整权值分布,使得神经元的输出就具有和输入同样的分布
而批归一法是直接对输出减均值除方差,保证与符合0均值1方差分布。
使用在全连接层后,激活函数前。
前文提到的“而批归一法是直接对输出减均值除方差,保证与符合0均值1方差分布。”符合(0,1)分布的描述不太正确,到底要求输出符合怎么样的分布是根据对分类的贡献自行决定的。
如果对这句话不太理解,不如放上批归一化的算法来看看
说明:图片中的输入指的不是样本数据输入,而是要进行批归一化的输入(也就是全连接层处理完的输出)
到第三步时,输出已经符合0,1分布了;但是不一定0,1分布就是最利于网络分类的分布,到底该选取怎样的分布,是由网络自行学习得到的,这也就是学习参数存在的理由。这里的学习参数表示进过批归一化处理后,输出满足为方差,为均值的分布。