第 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
一个良好的初始化可以帮助神经网络更好地训练和更稳定地收敛。除去早期的全零初始化和随机初始化,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=1∑Ml−1wi(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=1∑Ml−1wi(l)ai(l−1)]=i=1∑Ml−1E[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=1∑Ml−1wi(l)ai(l−1)]=i=1∑Ml−1Var[wi(l)]Var[ai(l−1)]=Ml−1Var[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−1Var[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−11
以上即为只考虑前向传播时的初始化。
同理,考虑反向传播时的初始化,有
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+Ml−11=Ml+1+Ml−12
因此,我们得到了Xavier初始化分布的均值与方差。
当我们考虑均匀分布 x ∼ U ( − b o u n d , b o u n d ) x \sim U(-bound,bound) x∼U(−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−16
具体使用时,还有一个参数 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−16
正态分布由均值和方差决定,因此,参数 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−12)
当然还有结合了均匀分布和正态分布的截断正态分布,其思想是先采样于正态分布 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2),再根据设定的阈值 [ μ − k σ , μ + k σ ] [\mu-k\sigma,\mu+k\sigma] [μ−kσ,μ+kσ]进行判断,如果落在区间内就保留,否则就需要重新采样。
截断正态分布不改变采样结果的均值,但改变了采样结果的方差,实际方差为 η σ 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}} η=∫−kke−x2dx∫−kkx2e−x2dx
实际输入方差应为 σ η \frac{\sigma}{\sqrt{\eta}} ησ
之所以我们能够使用激活函数为恒等函数,即 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)]=161Ml−1Var[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即可。
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=1∑Ml−1wi(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=1∑Ml−1E[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−1E[(wi(l)ai(l−1))2]=Ml−1E[(wi(l))2]E[(ai(l−1))2]=Ml−1Var[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)=∫−∞0ReLU2(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)【对称性】=21E[(y(l−1))2]=21{Var[y(l−1)]+(E[(y(l−1))])2}=21Var[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−1Var[wi(l)]E[(ai(l−1))2]=21Ml−1Var[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−12
具体采样方法如Xavier一致,可采用均匀分布、正态分布、截断正态分布进行采样。
如果,激活函数为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,x≥0x<0,a≥0则有:
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)=∫−∞0ReLU2(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+a2Var[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−12
则针对均匀分布有 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等价。