深度学习初始化Xavier、Kaiming

发布时间:2024年01月08日

初始化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

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=1Ml?1??wi(l)?ai(l?1)?)
现在,为了简化问题,我们认为激活函数为恒等函数吗,即 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(l?1)?服从均值为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(l?1)?]=E[(wi(l)?ai(l?1)?)2]?(E[wi(l)?ai(l?1)?])2=(E[(wi(l)?)2]?0)(E[(ai(l?1)?)2]?0)=Var[wi(l)?]Var[ai(l?1)?]
故推导期望与方差为
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=1Ml?1??wi(l)?ai(l?1)?]=i=1Ml?1??E[wi(l)?]E[ai(l?1)?]=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=1Ml?1??wi(l)?ai(l?1)?]=i=1Ml?1??Var[wi(l)?]Var[ai(l?1)?]=Ml?1?Var[wi(l)?]Var[ai(l?1)?]
我们希望保持输入和输出的均值和方差一致,故有
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(l?1)?]=Ml?1?Var[wi(l)?]Var[ai(l?1)?]=Var[ai(l?1)?] V a r [ w i ( l ) ] = 1 M l ? 1 Var[w_{i}^{(l)}]=\frac{1}{M_{l-1}} Var[wi(l)?]=Ml?1?1?
以上即为只考虑前向传播时的初始化。

同理,考虑反向传播时的初始化,有
V a r [ w i ( l ) ] = 1 M l + 1 Var[w_{i}^{(l)}]=\frac{1}{M_{l+1}} Var[wi(l)?]=Ml+1?1?
综合考虑,即取前后神经元个数的平均值,有 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?+Ml?1??1?=Ml+1?+Ml?1?2?
因此,我们得到了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?+Ml?1?6? ?
具体使用时,还有一个参数 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?+Ml?1?6? ?

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?+Ml?1?2?)

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}} η=?kk?e?x2dx?kk?x2e?x2dx?
实际输入方差应为 σ η \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)=1?tanh2(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(l?1)?]=161?Ml?1?Var[wi(l)?]Var[ai(l?1)?]因此, 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(l?1)?互相独立,且 w i ( l ) w_{i}^{(l)} wi(l)?均值为0,但此时,由于激活函数为ReLU,因此 E [ a i ( l ? 1 ) ] ≠ 0 E[a_{i}^{(l-1)}]\neq0 E[ai(l?1)?]=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=1Ml?1??wi(l)?ai(l?1)?
具体地,我们有 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=1Ml?1??E[wi(l)?]E[ai(l?1)?]=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)]=Ml?1?E[(wi(l)?ai(l?1)?)2]=Ml?1?E[(wi(l)?)2]E[(ai(l?1)?)2]=Ml?1?Var[wi(l)?]E[(ai(l?1)?)2]
现在,我们只需要考虑 y ( l ) y^{(l)} y(l)的分布即可,因为激活函数都是一样的,因此,我们需要考虑 E [ ( a i ( l ? 1 ) ) 2 ] E[(a_{i}^{(l-1)})^2] E[(ai(l?1)?)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(l?1)?)2]?=?+?ReLU2(y(l?1))p(y(l?1))dy(l?1)=?0?ReLU2(y(l?1))p(y(l?1))dy(l?1)+0+?ReLU2(y(l?1))p(y(l?1))dy(l?1)=0+0+?ReLU2(y(l?1))p(y(l?1))dy(l?1)=0+?(y(l?1))2p(y(l?1))dy(l?1)ReLU展开】=21??+?(y(l?1))2p(y(l?1))dy(l?1)【对称性】=21?E[(y(l?1))2]=21?{Var[y(l?1)]+(E[(y(l?1))])2}=21?Var[y(l?1)]?
因此, 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)]=Ml?1?Var[wi(l)?]E[(ai(l?1)?)2]=21?Ml?1?Var[wi(l)?]Var[y(l?1)]
故,我们保持 y ( l ) 和 y ( l ? 1 ) y^{(l)}和y^{(l-1)} y(l)y(l?1)的方差一致,则有: V a r [ w i ( l ) ] = 2 M l ? 1 Var[w_{i}^{(l)}]=\frac{2}{M_{l-1}} Var[wi(l)?]=Ml?1?2?
具体采样方法如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(l?1)?)2]?=?+?ReLU2(y(l?1))p(y(l?1))dy(l?1)=?0?ReLU2(y(l?1))p(y(l?1))dy(l?1)+0+?ReLU2(y(l?1))p(y(l?1))dy(l?1)=?0?(ay(l?1))2p(y(l?1))dy(l?1)+0+?(y(l?1))2p(y(l?1))dy(l?1)ReLU展开】=(1+a2)0+?(y(l?1))2p(y(l?1))dy(l?1)【对称性】=21+a2??+?(y(l?1))2p(y(l?1))dy(l?1)【对称性】=21+a2?Var[y(l?1)]?

则有: 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)Ml?1?2?
则针对均匀分布有 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+1?6? ?,(1+a2)Ml+1?6? ?)
a = 0 a=0 a=0时,Leaky ReLU与ReLU等价。

文章来源:https://blog.csdn.net/Leafing_/article/details/135462517
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。