深度学习(5)——网络模型参数的初始化策略(Xavier)

模型参数初始化的目的

先来回顾一下CNN的核心流程:
深度学习(5)——网络模型参数的初始化策略(Xavier)_第1张图片
在fundamental layer和function layer中,上层和下层神经元之间是通过权重连接的(也就是层与层之间的连接线)权重存在于模型的每一层之间,抽象图如下所以:
深度学习(5)——网络模型参数的初始化策略(Xavier)_第2张图片

而模型的更新,很大程度是基于参数的更新。通过loss函数对predict_y和真实标签y进行计算,利用梯度下降对模型进行更新:

在这里插入图片描述
(b的计算公式同理,此处不再赘述。)

梯度下降的过程是循环进行的,那么第一步模型启动的时候初始值应该怎么设置呢?从设计模型的角度来说,我们希望模型收敛的越快越好(这个没什么好解释的,初始值的设置也会影响到模型的收敛速度),其次还希望模型可以收敛到合适的位置(收敛的位置是局部最小值的话显然不是我们想要的结果)。

初始化要求

1.参数初始值不可全0:
首先要明确一点,参数初始值为0不等价于模型不更新,因为梯度下降的计算公式是
在这里插入图片描述
梯度是loss函数决定的,是该点的斜率决定的,而不是参数的取值决定的。想一想sigmoid函数的图像,显然sigmoid函数在X=0点处的导数斜率不是0.
但是!如果所有的参数都为0,那么输入和输出就无关了,所有的参数是同步更新,所有的参数取值相同,相当于一个参数,毫无意义。
2.对称位置的初始值不对称:
对称位置要反传梯度,否则会导致参数的减少
3.绝对值不能太大:
4.绝对值不能太大:
3、4都是为了使模型实现可以快速收敛

模型初始化策略

1.Xavier

IDEA:希望每一层的输入和输出,输入值和输出值之间的方差保持不变,均值为0
深度学习(5)——网络模型参数的初始化策略(Xavier)_第3张图片
NN(卷积神经网络的某一层)的输入,经过该层的一堆权重得到输出,经过激活函数等,成为下一层的输入,再经过下一层的一堆权重,得到下一层的输出……以此类推。
深度学习(5)——网络模型参数的初始化策略(Xavier)_第4张图片

1.假设满足正态分布

xi和wi满足正态分布:
在这里插入图片描述
在这里插入图片描述
对于某一个神经元的输出yi满足:
在这里插入图片描述
对于该层所有神经元的输出Y满足:

在这里插入图片描述
对于某一个神经元的输出yi的方差表达式如下:
在这里插入图片描述
由于:
在这里插入图片描述
而xi和yi满足正态分布,所以:
在这里插入图片描述
得:
在这里插入图片描述
对于该层所有神经元的输出Y的方差满足:
在这里插入图片描述

在这里插入图片描述
由于假设条件是方差一致,所以var(Y)=var(xi),对上式进行约分得到:
在这里插入图片描述
其中,ni是输入层的维度。
回到前面,我们假设的正态分布条件,

深度学习(5)——网络模型参数的初始化策略(Xavier)_第5张图片

但是,实际当中输入与输出的个数往往不相等,于是为了均衡考量,假设输入ni,输出ni+1,取两者的平均值替代上式中的ni,最终我们的权重方差应满足:

深度学习(5)——网络模型参数的初始化策略(Xavier)_第6张图片
所以最后满足的正态分布取值如下:
深度学习(5)——网络模型参数的初始化策略(Xavier)_第7张图片

2.假设满足均匀分布

在这里插入图片描述
根据均匀分布的性质:
在这里插入图片描述
根据上面正态分布的推导过程可知,我们希望var满足:
深度学习(5)——网络模型参数的初始化策略(Xavier)_第8张图片
由于b,a满足b= -a,代入上式可得:

在这里插入图片描述
总结一下Xavier方法:
深度学习(5)——网络模型参数的初始化策略(Xavier)_第9张图片

2.Kaiming

Xavier提出的时候,当时主要是针对sigmoid等关于原点对称的激活函数,所以对Relu函数不适用,为了适用Relu之类的非对称函数,提出了Kaiming方法。
深度学习(5)——网络模型参数的初始化策略(Xavier)_第10张图片
深度学习(5)——网络模型参数的初始化策略(Xavier)_第11张图片

总结

根据激活函数是否对称来选择参数初始化策略,如果是对称的可以考虑Xavier,如果非对称可以考虑kaiming,而每种方法又针对两种分布。

深度学习(5)——网络模型参数的初始化策略(Xavier)_第12张图片
除此之外,还有随机分布初始化(通常取0,1之间);positive unitball初始化(每个在0,1之间,但是满足和为1)等。

你可能感兴趣的:(14周AI人工智能)