神经网络参数的初始化
发布网友
发布时间:2024-10-15 23:53
我来回答
共1个回答
热心网友
时间:2024-10-16 11:31
注:本文部分内容基于个人理解,可能存在偏差。
原来在神经网络里,参数的初始化也是一个学问,之前并未引起重视。
今天,我在网上查阅了相关资料,对基础知识进行了补充。
一、Xavier初始化
我们从最简单的神经网络开始,即没有激活函数,只有线性变换的神经网络。
在[公式] 中,定义一个全连接层:
这实际上就是矩阵乘法的操作:
这其实就是一个线性的变换。
我们知道,在机器学习中,我们假设数据分布满足标准正态分布(均值为0,方差为1的分布),我们需要它经过线性变换之后也要满足均值为0,方差为1的条件。
已知[公式] ,设[公式] 是[公式] 的矩阵。[公式] 中的元素[公式] 满足[公式] ,[公式] 。[公式] 中的每一行[公式] 中的元素[公式] 满足[公式] ,[公式] 。
求解期望与方差
对于[公式] 中每个[公式] 都是[公式] 。
根据期望的性质可知,[公式] 。
根据方差的公式:[公式]
[公式]
而[公式] ,故[公式] ,[公式] 。
这里均值没有发生改变,而方差却变成了[公式] ,所以我们需要在对参数[公式] 进行初始化的时候需要除以[公式] ,使得数据满足均值为0,方差为1的标准正态分布。
所以对线性层参数进行初始化的时候需要满足的是均值为0,方差为[公式] 的正态分布。
二、He初始化
前面介绍的是最简单的神经网络,下面介绍一下加上激活函数的神经网络,这里介绍的是加上[公式] 激活函数的神经网络,这种初始化方法叫做[公式] 初始化,它是由何凯明团队提出来的,他们团队在集成学习领域也提出了[公式] ,匀速小子:LightGBM学习笔记
由于我们前面已经考虑过线性变换的情况了,我们这里直接考虑[公式] 激活函数的情况。
[公式] 激活函数对正数保持不变,但是会将负数变成0,这也会导致数据均值和方差的变化。
假设数据中正负样本数各占一半,那么数据就有一半的可能性被置0,也就是说样本有一半被激活,有一半没有被激活,我们这里需要乘以[公式] ,所以对线性层参数进行初始化的时候需要满足的是均值为0,方差为[公式] 的正态分布。
三、Kaiming初始化
上面的初始化,数据的均值,显然是会从0变大成一个正数,因为所有数据都会大于等于0,那么这个正数是多少呢?
标准正态分布的概率密度函数:[公式] 。
其实只需要求一个简单的积分即可:[公式]
我们再来算一下它的方差:[公式]
[公式]
[公式]
故[公式]
我们顺着神经网络的连接来走一次,先按照均值为0,方差为[公式] 的正态分布初始化了参数,经过全连接层会变成均值为0,方差为2的正态分布,最后经过[公式] 函数会转变为负半轴被截断的正态分布,它的期望为[公式] ,方差为[公式] 。
我们可以通过缩放[公式] 使得输出的[公式] 重新变成均值为0,方差为1的标准正态分布。
[公式]
[公式] 。