深度学习初始化Xavier、Kaiming

初始化Init

第 l 层网络神经元的输出 : a ( l ) 第l层网络神经元的输出: a^{(l)} l层网络神经元的输出:a(l)

第 l 层网络神经元的输出的第 i 个分量 : a i ( l ) 第l层网络神经元的输出的第i个分量: a^{(l)}_{i} l层网络神经元的输出的第i个分量:ai(l)

第 l 层网络神经元的激活前的输出 : y ( l ) 第l层网络神经元的激活前的输出: y^{(l)} l层网络神经元的激活前的输出:y(l)

第 l 层网络神经元的激活前的输出的第 i 个分量 : y i ( l ) 第l层网络神经元的激活前的输出的第i个分量: y^{(l)}_{i} l层网络神经元的激活前的输出的第i个分量:yi(l)

第 l 层网络神经元的参数个数 : M l 第l层网络神经元的参数个数: M_{l} l层网络神经元的参数个数:Ml

第 l 层网络神经元的参数: w l 第l层网络神经元的参数:w^{l} l层网络神经元的参数:wl

第 l 层网络神经元的参数第 i 个分量: w i l 第l层网络神经元的参数第i个分量:w^{l}_{i} l层网络神经元的参数第i个分量:wil

激活函数: f 激活函数:f 激活函数:f

文章目录

  • 初始化Init
    • 1.Xaiver初始化
      • 1.1 公式推导
      • 1.2 均匀分布
      • 1.3 正态分布
      • 1.4 截断正态分布
      • 1.5 针对sigmoid和tanh激活的gain取值
    • 2. Kaiming初始化
      • 2.1 公式推导
      • 2.2 针对Leaky ReLU或PReLU的修正因子a

1.Xaiver初始化

1.1 公式推导

一个良好的初始化可以帮助神经网络更好地训练和更稳定地收敛。除去早期的全零初始化和随机初始化,Xaiver初始化是常用的初始化方法之一。

Xaiver初始化是一种维持前后输入、输出均值和方差一致的初始化方法,起初是针对sigmoid、tanh等激活函数而设计的。

考虑第l层的网络某一个神经元,其输出为 a ( l ) a^{(l)} a(l),其参数为 w l w^{l} wl,则有:
a ( l ) = f ( ∑ i = 1 M l − 1 w i ( l ) a i ( l − 1 ) ) a^{(l)}=f(\sum_{i=1}^{M_{l-1}}w_{i}^{(l)}a_{i}^{(l-1)}) a(l)=f(i=1Ml1wi(l)ai(l1))
现在,为了简化问题,我们认为激活函数为恒等函数吗,即 f ( x ) = x f(x)=x f(x)=x
假设 w i ( l ) 和 a i ( l − 1 ) w_{i}^{(l)}和a_{i}^{(l-1)} wi(l)ai(l1)服从均值为0,且互相独立,则有
V a r [ w i ( l ) a i ( l − 1 ) ] = E [ ( w i ( l ) a i ( l − 1 ) ) 2 ] − ( E [ w i ( l ) a i ( l − 1 ) ] ) 2 = ( E [ ( w i ( l ) ) 2 ] − 0 ) ( E [ ( a i ( l − 1 ) ) 2 ] − 0 ) = V a r [ w i ( l ) ] V a r [ a i ( l − 1 ) ] Var[w_{i}^{(l)}a_{i}^{(l-1)}]=E[(w_{i}^{(l)}a_{i}^{(l-1)})^2]-(E[w_{i}^{(l)}a_{i}^{(l-1)}])^2=(E[(w_{i}^{(l)})^2]-0)(E[(a_{i}^{(l-1)})^2]-0)=Var[w_{i}^{(l)}]Var[a_{i}^{(l-1)}] Var[wi(l)ai(l1)]=E[(wi(l)ai(l1))2](E[wi(l)ai(l1)])2=(E[(wi(l))2]0)(E[(ai(l1))2]0)=Var[wi(l)]Var[ai(l1)]
故推导期望与方差为
E [ a ( l ) ] = E [ ∑ i = 1 M l − 1 w i ( l ) a i ( l − 1 ) ] = ∑ i = 1 M l − 1 E [ w i ( l ) ] E [ a i ( l − 1 ) ] = 0 E[a^{(l)}]=E[\sum_{i=1}^{M_{l-1}}w_{i}^{(l)}a_{i}^{(l-1)}]=\sum_{i=1}^{M_{l-1}}E[w_{i}^{(l)}]E[a_{i}^{(l-1)}]=0 E[a(l)]=E[i=1Ml1wi(l)ai(l1)]=i=1Ml1E[wi(l)]E[ai(l1)]=0 V a r [ a ( l ) ] = V a r [ ∑ i = 1 M l − 1 w i ( l ) a i ( l − 1 ) ] = ∑ i = 1 M l − 1 V a r [ w i ( l ) ] V a r [ a i ( l − 1 ) ] = M l − 1 V a r [ w i ( l ) ] V a r [ a i ( l − 1 ) ] Var[a^{(l)}]=Var[\sum_{i=1}^{M_{l-1}}w_{i}^{(l)}a_{i}^{(l-1)}]=\sum_{i=1}^{M_{l-1}}Var[w_{i}^{(l)}]Var[a_{i}^{(l-1)}]=M_{l-1}Var[w_{i}^{(l)}]Var[a_{i}^{(l-1)}] Var[a(l)]=Var[i=1Ml1wi(l)ai(l1)]=i=1Ml1Var[wi(l)]Var[ai(l1)]=Ml1Var[wi(l)]Var[ai(l1)]
我们希望保持输入和输出的均值和方差一致,故有
V a r [ w i ( l ) a i ( l − 1 ) ] = M l − 1 V a r [ w i ( l ) ] V a r [ a i ( l − 1 ) ] = V a r [ a i ( l − 1 ) ] Var[w_{i}^{(l)}a_{i}^{(l-1)}]=M_{l-1}Var[w_{i}^{(l)}]Var[a_{i}^{(l-1)}]=Var[a_{i}^{(l-1)}] Var[wi(l)ai(l1)]=Ml1Var[wi(l)]Var[ai(l1)]=Var[ai(l1)] V a r [ w i ( l ) ] = 1 M l − 1 Var[w_{i}^{(l)}]=\frac{1}{M_{l-1}} Var[wi(l)]=Ml11
以上即为只考虑前向传播时的初始化。

同理,考虑反向传播时的初始化,有
V a r [ w i ( l ) ] = 1 M l + 1 Var[w_{i}^{(l)}]=\frac{1}{M_{l+1}} Var[wi(l)]=Ml+11
综合考虑,即取前后神经元个数的平均值,有 V a r [ w i ( l ) ] = 1 M l + 1 + M l − 1 2 = 2 M l + 1 + M l − 1 Var[w_{i}^{(l)}]=\frac{1}{\frac{M_{l+1}+M_{l-1}}{2}}=\frac{2}{M_{l+1}+M_{l-1}} Var[wi(l)]=2Ml+1+Ml11=Ml+1+Ml12
因此,我们得到了Xavier初始化分布的均值与方差。

1.2 均匀分布

当我们考虑均匀分布 x ∼ U ( − b o u n d , b o u n d ) x \sim U(-bound,bound) xU(bound,bound),有
E [ x ] = 0 E[x]=0 E[x]=0 V a r [ x ] = b o u n d 2 3 Var[x]=\frac{bound^2}{3} Var[x]=3bound2
因此,当我们采用均匀分布采样Xavier初始化时,有 b o u n d = 6 M l + 1 + M l − 1 bound=\sqrt{\frac{6}{M_{l+1}+M_{l-1}}} bound=Ml+1+Ml16
具体使用时,还有一个参数 g a i n gain gain用于手动调整均匀分布的边界,即 b o u n d = g a i n × 6 M l + 1 + M l − 1 bound=gain×\sqrt{\frac{6}{M_{l+1}+M_{l-1}}} bound=gain×Ml+1+Ml16

1.3 正态分布

正态分布由均值和方差决定,因此,参数 w i ( l ) w_{i}^{(l)} wi(l)可直接采样于 N ( 0 , 2 M l + 1 + M l − 1 ) N(0,\frac{2}{M_{l+1}+M_{l-1}}) N(0,Ml+1+Ml12)

1.4 截断正态分布

当然还有结合了均匀分布和正态分布截断正态分布,其思想是先采样于正态分布 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2),再根据设定的阈值 [ μ − k σ , μ + k σ ] [\mu-k\sigma,\mu+k\sigma] [μ,μ+]进行判断,如果落在区间内就保留,否则就需要重新采样

截断正态分布不改变采样结果的均值,但改变了采样结果的方差,实际方差为 η σ 2 \eta\sigma^2 ησ2其中 η = ∫ − k k x 2 e − x 2 d x ∫ − k k e − x 2 d x \eta=\frac{\int^{k}_{-k}{x^2e^{-x^2}dx}}{\int^{k}_{-k}{e^{-x^2}dx}} η=kkex2dxkkx2ex2dx
实际输入方差应为 σ η \frac{\sigma}{\sqrt{\eta}} η σ

1.5 针对sigmoid和tanh激活的gain取值

之所以我们能够使用激活函数为恒等函数,即 f ( x ) = x f(x)=x f(x)=x,进行理论推导,是因为针对sigmoid函数和tanh函数,在 x = 0 x=0 x=0可以近似为一条直线。
其中,sigmoid函数的导数为 f ′ ( x ) = σ ( x ) ( 1 − σ ( x ) ) f'(x)=\sigma(x)(1-\sigma(x)) f(x)=σ(x)(1σ(x))tanh函数的导数为 f ′ ( x ) = 1 − t a n h 2 ( x ) f'(x)=1-tanh^2(x) f(x)=1tanh2(x)
对于sigmoid函数而言, x = 0 x=0 x=0附近斜率为0.25 V a r [ w i ( l ) a i ( l − 1 ) ] = 1 16 M l − 1 V a r [ w i ( l ) ] V a r [ a i ( l − 1 ) ] Var[w_{i}^{(l)}a_{i}^{(l-1)}]=\frac{1}{16}M_{l-1}Var[w_{i}^{(l)}]Var[a_{i}^{(l-1)}] Var[wi(l)ai(l1)]=161Ml1Var[wi(l)]Var[ai(l1)]因此, g a i n = 4 gain=4 gain=4用以调整。
tanh函数, x = 0 x=0 x=0附近斜率为1,保持 g a i n = 1 gain=1 gain=1即可。

2. Kaiming初始化

2.1 公式推导

Kaiming初始化是针对ReLU激活函数的,其思想是使得激活函数的输入方差与输出方差相等

我们认为ReLU所激活的神经元数量应为一半

此时我们需要注意,我们依然可以假设假设 w i ( l ) 和 a i ( l − 1 ) w_{i}^{(l)}和a_{i}^{(l-1)} wi(l)ai(l1)互相独立,且 w i ( l ) w_{i}^{(l)} wi(l)均值为0,但此时,由于激活函数为ReLU,因此 E [ a i ( l − 1 ) ] ≠ 0 E[a_{i}^{(l-1)}]\neq0 E[ai(l1)]=0
我们有 a ( l ) = R e L U ( y i ( l ) ) a^{(l)}=ReLU(y_{i}^{(l)}) a(l)=ReLU(yi(l)) y ( l ) = ∑ i = 1 M l − 1 w i ( l ) a i ( l − 1 ) y^{(l)}=\sum_{i=1}^{M_{l-1}}w_{i}^{(l)}a_{i}^{(l-1)} y(l)=i=1Ml1wi(l)ai(l1)
具体地,我们有 E [ y ( l ) ] = ∑ i = 1 M l − 1 E [ w i ( l ) ] E [ a i ( l − 1 ) ] = 0 E[y^{(l)}]=\sum_{i=1}^{M_{l-1}}E[w_{i}^{(l)}]E[a_{i}^{(l-1)}]=0 E[y(l)]=i=1Ml1E[wi(l)]E[ai(l1)]=0 V a r [ y ( l ) ] = M l − 1 E [ ( w i ( l ) a i ( l − 1 ) ) 2 ] = M l − 1 E [ ( w i ( l ) ) 2 ] E [ ( a i ( l − 1 ) ) 2 ] = M l − 1 V a r [ w i ( l ) ] E [ ( a i ( l − 1 ) ) 2 ] Var[y^{(l)}]=M_{l-1}E[(w_{i}^{(l)}a_{i}^{(l-1)})^2]=M_{l-1}E[(w_{i}^{(l)})^2]E[(a_{i}^{(l-1)})^2]=M_{l-1}Var[w_{i}^{(l)}]E[(a_{i}^{(l-1)})^2] Var[y(l)]=Ml1E[(wi(l)ai(l1))2]=Ml1E[(wi(l))2]E[(ai(l1))2]=Ml1Var[wi(l)]E[(ai(l1))2]
现在,我们只需要考虑 y ( l ) y^{(l)} y(l)的分布即可,因为激活函数都是一样的,因此,我们需要考虑 E [ ( a i ( l − 1 ) ) 2 ] E[(a_{i}^{(l-1)})^2] E[(ai(l1))2] E [ ( a i ( l − 1 ) ) 2 ] = ∫ − ∞ + ∞ R e L U 2 ( y ( l − 1 ) ) p ( y ( l − 1 ) ) d y ( l − 1 ) = ∫ − ∞ 0 R e L U 2 ( y ( l − 1 ) ) p ( y ( l − 1 ) ) d y ( l − 1 ) + ∫ 0 + ∞ R e L U 2 ( y ( l − 1 ) ) p ( y ( l − 1 ) ) d y ( l − 1 ) = 0 + ∫ 0 + ∞ R e L U 2 ( y ( l − 1 ) ) p ( y ( l − 1 ) ) d y ( l − 1 ) = ∫ 0 + ∞ ( y ( l − 1 ) ) 2 p ( y ( l − 1 ) ) d y ( l − 1 ) 【 R e L U 展开】 = 1 2 ∫ − ∞ + ∞ ( y ( l − 1 ) ) 2 p ( y ( l − 1 ) ) d y ( l − 1 ) 【对称性】 = 1 2 E [ ( y ( l − 1 ) ) 2 ] = 1 2 { V a r [ y ( l − 1 ) ] + ( E [ ( y ( l − 1 ) ) ] ) 2 } = 1 2 V a r [ y ( l − 1 ) ] \begin{align} E[(a_{i}^{(l-1)})^2]&=\int^{+\infty}_{-\infty}ReLU^2(y^{(l-1)})p(y^{(l-1)})dy^{(l-1)}\nonumber \\&=\int^{0}_{-\infty}ReLU^2(y^{(l-1)})p(y^{(l-1)})dy^{(l-1)}+\int^{+\infty}_{0}ReLU^2(y^{(l-1)})p(y^{(l-1)})dy^{(l-1)}\nonumber \\&=0+\int^{+\infty}_{0}ReLU^2(y^{(l-1)})p(y^{(l-1)})dy^{(l-1)}\nonumber \\&=\int^{+\infty}_{0}(y^{(l-1)})^2p(y^{(l-1)})dy^{(l-1)}\nonumber \quad【ReLU展开】 \\&=\frac{1}{2}\int^{+\infty}_{-\infty}(y^{(l-1)})^2p(y^{(l-1)})dy^{(l-1)}\nonumber \quad【对称性】 \\&=\frac{1}{2}E[(y^{(l-1)})^2]\nonumber \\&=\frac{1}{2}\{Var[y^{(l-1)}]+(E[(y^{(l-1)})])^2\}\nonumber \\&=\frac{1}{2}Var[y^{(l-1)}]\nonumber \end{align} E[(ai(l1))2]=+ReLU2(y(l1))p(y(l1))dy(l1)=0ReLU2(y(l1))p(y(l1))dy(l1)+0+ReLU2(y(l1))p(y(l1))dy(l1)=0+0+ReLU2(y(l1))p(y(l1))dy(l1)=0+(y(l1))2p(y(l1))dy(l1)ReLU展开】=21+(y(l1))2p(y(l1))dy(l1)【对称性】=21E[(y(l1))2]=21{Var[y(l1)]+(E[(y(l1))])2}=21Var[y(l1)]
因此, V a r [ y ( l ) ] = M l − 1 V a r [ w i ( l ) ] E [ ( a i ( l − 1 ) ) 2 ] = 1 2 M l − 1 V a r [ w i ( l ) ] V a r [ y ( l − 1 ) ] Var[y^{(l)}]=M_{l-1}Var[w_{i}^{(l)}]E[(a_{i}^{(l-1)})^2]=\frac{1}{2}M_{l-1}Var[w_{i}^{(l)}]Var[y^{(l-1)}] Var[y(l)]=Ml1Var[wi(l)]E[(ai(l1))2]=21Ml1Var[wi(l)]Var[y(l1)]
故,我们保持 y ( l ) 和 y ( l − 1 ) y^{(l)}和y^{(l-1)} y(l)y(l1)的方差一致,则有: V a r [ w i ( l ) ] = 2 M l − 1 Var[w_{i}^{(l)}]=\frac{2}{M_{l-1}} Var[wi(l)]=Ml12
具体采样方法如Xavier一致,可采用均匀分布、正态分布、截断正态分布进行采样。

2.2 针对Leaky ReLU或PReLU的修正因子a

如果,激活函数为Leaky ReLU或PReLU,即 L e a k y R e L U ( x ) = { x , x ≥ 0 a x , x < 0 , a ≥ 0 LeakyReLU(x)=\begin{cases} x, & x\ge0\\ ax, & x < 0,a\ge0 \end{cases} LeakyReLU(x)={x,ax,x0x<0,a0则有:
E [ ( a i ( l − 1 ) ) 2 ] = ∫ − ∞ + ∞ R e L U 2 ( y ( l − 1 ) ) p ( y ( l − 1 ) ) d y ( l − 1 ) = ∫ − ∞ 0 R e L U 2 ( y ( l − 1 ) ) p ( y ( l − 1 ) ) d y ( l − 1 ) + ∫ 0 + ∞ R e L U 2 ( y ( l − 1 ) ) p ( y ( l − 1 ) ) d y ( l − 1 ) = ∫ − ∞ 0 ( a y ( l − 1 ) ) 2 p ( y ( l − 1 ) ) d y ( l − 1 ) + ∫ 0 + ∞ ( y ( l − 1 ) ) 2 p ( y ( l − 1 ) ) d y ( l − 1 ) 【 R e L U 展开】 = ( 1 + a 2 ) ∫ 0 + ∞ ( y ( l − 1 ) ) 2 p ( y ( l − 1 ) ) d y ( l − 1 ) 【对称性】 = 1 + a 2 2 ∫ − ∞ + ∞ ( y ( l − 1 ) ) 2 p ( y ( l − 1 ) ) d y ( l − 1 ) 【对称性】 = 1 + a 2 2 V a r [ y ( l − 1 ) ] \begin{align} E[(a_{i}^{(l-1)})^2]&=\int^{+\infty}_{-\infty}ReLU^2(y^{(l-1)})p(y^{(l-1)})dy^{(l-1)}\nonumber \\&=\int^{0}_{-\infty}ReLU^2(y^{(l-1)})p(y^{(l-1)})dy^{(l-1)}+\int^{+\infty}_{0}ReLU^2(y^{(l-1)})p(y^{(l-1)})dy^{(l-1)}\nonumber \\&=\int^{0}_{-\infty}(ay^{(l-1)})^2p(y^{(l-1)})dy^{(l-1)}+\int^{+\infty}_{0}(y^{(l-1)})^2p(y^{(l-1)})dy^{(l-1)}\nonumber \quad【ReLU展开】 \\&=(1+a^2)\int^{+\infty}_{0}(y^{(l-1)})^2p(y^{(l-1)})dy^{(l-1)}\nonumber \quad【对称性】 \\&=\frac{1+a^2}{2}\int^{+\infty}_{-\infty}(y^{(l-1)})^2p(y^{(l-1)})dy^{(l-1)}\nonumber \quad【对称性】 \\&=\frac{1+a^2}{2}Var[y^{(l-1)}]\nonumber \end{align} E[(ai(l1))2]=+ReLU2(y(l1))p(y(l1))dy(l1)=0ReLU2(y(l1))p(y(l1))dy(l1)+0+ReLU2(y(l1))p(y(l1))dy(l1)=0(ay(l1))2p(y(l1))dy(l1)+0+(y(l1))2p(y(l1))dy(l1)ReLU展开】=(1+a2)0+(y(l1))2p(y(l1))dy(l1)【对称性】=21+a2+(y(l1))2p(y(l1))dy(l1)【对称性】=21+a2Var[y(l1)]

则有: V a r [ w i ( l ) ] = 2 ( 1 + a 2 ) M l − 1 Var[w_{i}^{(l)}]=\frac{2}{(1+a^2)M_{l-1}} Var[wi(l)]=(1+a2)Ml12
则针对均匀分布有 w i ( l ) ∼ U ( − 6 ( 1 + a 2 ) M l + 1 , 6 ( 1 + a 2 ) M l + 1 ) w_{i}^{(l)} \sim U(-\sqrt{\frac{6}{(1+a^2)M_{l+1}}},\sqrt{\frac{6}{(1+a^2)M_{l+1}}}) wi(l)U((1+a2)Ml+16 ,(1+a2)Ml+16 )
a = 0 a=0 a=0时,Leaky ReLU与ReLU等价。

你可能感兴趣的:(深度学习,pytorch,人工智能,深度学习,人工智能,ai,初始化,Xavier,Kaiming,神经网络)