文章目录
博客: blog.shinelee.me | 博客园 | CSDN
权重初始化最佳实践
书接上回,全0、常数、过大、过小的权重初始化都是不好的,那我们需要什么样的初始化?
-
因为对权重 w w w的大小和正负缺乏先验,所以应初始化在0附近,但不能为全0或常数,所以要有一定的随机性,即数学期望 E ( w ) = 0 E(w)=0 E(w)=0;
-
因为梯度消失和梯度爆炸,权重不易过大或过小,所以要对权重的方差 V a r ( w ) Var(w) Var(w)有所控制;
-
深度神经网络的多层结构中,每个激活层的输出对后面的层而言都是输入,所以我们希望不同激活层输出的方差相同,即 V a r ( a [ l ] ) = V a r ( a [ l − 1 ] ) Var(a^{[l]})=Var(a^{[l-1]}) Var(a[l])=Var(a[l−1]),这也就意味不同激活层输入的方差相同,即 V a r ( z [ l ] ) = V a r ( z [ l − 1 ] ) Var(z^{[l]})=Var(z^{[l-1]}) Var(z[l])=Var(z[l−1]);
-
如果忽略激活函数,前向传播和反向传播可以看成是权重矩阵(转置)的连续相乘。数值太大,前向时可能陷入饱和区,反向时可能梯度爆炸,数值太小,反向时可能梯度消失。所以初始化时,权重的数值范围(方差)应考虑到前向和后向两个过程;
权重的随机初始化过程可以看成是从某个概率分布随机采样的过程,常用的分布有高斯分布、均匀分布等,对权重期望和方差的控制可转化为概率分布的参数控制,权重初始化问题也就变成了概率分布的参数设置问题。
在上回中,我们知道反向传播过程同时受到权重矩阵和激活函数的影响,那么,在激活函数不同以及每层超参数配置不同(输入输出数量)的情况下,权重初始化该做怎样的适配?这里,将各家的研究成果汇总如下,
其中,扇入 f a n _ i n fan\_in fan_in和扇出 f a n _ o u t fan\_out fan_out分别为当前全连接层的输入和输出数量,更准确地说,1个输出神经元与 f a n _ i n fan\_in fan_in个输入神经元有连接(the number of connections feeding into the node),1个输入神经元与 f a n _ o u t fan\_out fan_out个输出神经元有连接(the number of connections flowing out of the node),如下图所示(来自链接),
对于卷积层而言,其权重为 n n n个 c × h × w c\times h \times w c×h×w大小的卷积核,则一个输出神经元与 c × h × w c\times h \times w c×h×w个输入神经元有连接,即 f a n _ i n = c × h × w fan\_in = c\times h \times w fan_in=c×h×w,一个输入神经元与 n × h × w n\times h \times w n×h×w个输出神经元有连接,即 f a n _ o u t = n × h × w fan\_out=n\times h \times w fan_out=n×h×w。
期望与方差的相关性质
接下来,首先回顾一下期望与方差计算的相关性质。
对于随机变量 X X X,其方差可通过下式计算,
V a r ( X ) = E ( X 2 ) − ( E ( X ) ) 2 Var(X) = E(X^2) - (E(X))^2 Var(X)=E(X2)−(E(X))2
若两个随机变量 X X X和 Y Y Y,它们相互独立,则其协方差为0,
C o v ( X , Y ) = 0 Cov(X, Y) = 0 Cov(X,Y)=0
进一步可得 E ( X Y ) = E ( X ) E ( Y ) E(XY)=E(X)E(Y) E(XY)=E(X)E(Y),推导如下,
C o v ( X , Y ) = E ( ( X − E ( X ) ) ( Y − E ( Y ) ) ) = E ( X Y ) − E ( X ) E ( Y ) = 0 \begin{aligned} Cov(X, Y) &= E((X-E(X))(Y-E(Y))) \\ &= E(XY)-E(X)E(Y) =0 \end{aligned} Cov(X,Y)=E((X−E(X))(Y−E(Y)))=E(XY)−E(X)E(Y)=0
两个独立随机变量和的方差,
Var ( X + Y ) = E ( ( X + Y ) 2 ) − ( E ( X + Y ) ) 2 = E ( X 2 + Y 2 + 2 X Y ) − ( E ( X ) + E ( Y ) ) 2 = ( E ( X 2 ) + E ( Y 2 ) + 2 E ( X Y ) ) − ( ( E ( X ) ) 2 + ( E ( Y ) ) 2 + 2 E ( X ) E ( Y ) ) = ( E ( X 2 ) + E ( Y 2 ) + 2 E ( X ) E ( Y ) ) − ( ( E ( X ) ) 2 + ( E ( Y ) ) 2 + 2 E ( X ) E ( Y ) ) = E ( X 2 ) − ( E ( X ) ) 2 + E ( Y 2 ) − ( E ( Y ) ) 2 = Var ( X ) + Var ( Y ) \begin{aligned} \operatorname{Var}(X+Y) &=E\left((X+Y)^{2}\right)-(E(X+Y))^{2} \\ &=E\left(X^{2}+Y^{2}+2 X Y\right)-(E(X)+E(Y))^{2} \\ &=\left(E\left(X^{2}\right)+E\left(Y^{2}\right)+2 E(X Y)\right)-\left((E(X))^{2}+(E(Y))^{2}+2 E(X) E(Y)\right) \\ &=\left(E\left(X^{2}\right)+E\left(Y^{2}\right)+2 E(X) E(Y)\right)-\left((E(X))^{2}+(E(Y))^{2}+2 E(X) E(Y)\right) \\ &=E\left(X^{2}\right)-(E(X))^{2}+E\left(Y^{2}\right)-(E(Y))^{2} \\ &=\operatorname{Var}(X)+\operatorname{Var}(Y) \end{aligned} Var(X+Y)=E((X+Y)2)−(E(X+Y))2=E(X2+Y2+2XY)−(E(X)+E(Y))2=(E(X2)+E(Y2)+2E(XY))−((E(X))2+(E(Y))2+2E(X)E(Y))=(E(X2)+E(Y2)+2E(X)E(Y))−((E(X))2+(E(Y))2+2E(X