神经网络使用Xavier参数初始化的本质

发布于:2024-06-13 ⋅ 阅读:(159) ⋅ 点赞:(0)

参数初始化的意义和目的

深度学习中的各种参数初始化方法都旨在保持正向传播时数据流方差的稳定与反向传播时梯度流方差的稳定,从而缓解梯度消失或梯度爆炸问题。

先前在反向传播这篇文章里介绍过参数初始化对于深度学习的重要性,本文不再赘述。

在该文最后的例子中可以看到好的参数初始化策略确实能使神经网络的训练过程更趋稳定。在例子中,我们直接使用了一个Xavier初始化策略的标准差生成了高斯分布的权重,但没有说明这个标准差是如何得来的,本篇文章将在此基础上做个引申。

我们想使神经网络传播过程每层的数据流或梯度流输出的方差保持不变。

考虑一个非线性无偏置的简单全连接,隐藏层接受 n i n n_{in} nin 个输入并生成 n o u t n_{out} nout 个输出。具体来说,输入数据为 x x x ,共 n i n n_{in} nin 个特征,满足均值为0、方差为 γ 2 \gamma^2 γ2 ;每个神经元的输出为 o i o_i oi w i j w_{ij} wij 是输入 x x x 到输出 o i o_i oi 的权重,满足均值为0、方差为 σ 2 \sigma^2 σ2 ,且假设 x j x_j xj w i j w_{ij} wij 相互独立

对于前向传播, o i o_i oi 可表示为:

o i = ∑ j = 1 n i n w i j x j       ( 1 ) o_i=\sum_{j=1}^{n_{in}} w_{ij} x_j \ \ \ \ \ (1) oi=j=1ninwijxj     (1)

Xavier参数初始化意图使每一层输出的方差接近其输入的方差,即要使输出 o i o_i oi 的方差接近输入 x j x_j xj 的方差。

o i o_i oi 的均值 E ( o i ) E(o_i) E(oi)

由期望的定义及式 ( 1 ) (1) (1) 可得:

E ( w i j ) = 0       ( 2 ) E(w_{ij})=0 \ \ \ \ \ (2) E(wij)=0     (2)

E ( x j ) = 0       ( 3 ) E(x_j)=0 \ \ \ \ \ (3) E(xj)=0     (3)

E ( o i ) = ∑ j = 1 n i n E ( w i j x j )       ( 4 ) E(o_i)=\sum_{j=1}^{n_{in}} E(w_{ij} x_j) \ \ \ \ \ (4) E(oi)=j=1ninE(wijxj)     (4)

因为 x j x_j xj w i j w_{ij} wij 相互独立,所以 E ( w i j x j ) = E ( w i j ) E ( x j ) E(w_{ij} x_j)=E(w_{ij})E(x_j) E(wijxj)=E(wij)E(xj) ,代入式 ( 4 ) (4) (4) 可得:
E ( o i ) = ∑ j = 1 n i n E ( w i j x j ) = ∑ j = 1 n i n E ( w i j ) E ( x j ) = 0       ( 5 ) \begin{align} E(o_i) & = \sum_{j=1}^{n_{in}} E(w_{ij} x_j) \hspace{100cm} \\ &=\sum_{j=1}^{n_{in}} E(w_{ij})E(x_j) \\ &=0 \ \ \ \ \ (5) \end{align} E(oi)=j=1ninE(wijxj)=j=1ninE(wij)E(xj)=0     (5)


网站公告

今日签到

点亮在社区的每一天
去签到