神经网络的可训练参数初始化

文章目录

  如果我们没有亲手搭建神经网路就可能不会思考一个问题:可训练参数应该初始化为什么值呢?对于偏置我们可以将其初始化为 0 0 0 1 1 1,那权重怎么办呢?按照程序员的经验:遇事不决,直接初始化为 0 0 0 !事实上,权重是不能初始化为 0 0 0 甚至是常数的。
  假设我们将权重值全部初始化为同一个常数,偏置初始化为 1 1 1。当一个样本传入输入层,由于权重相同,导致第一个隐层各神经元的输入加权和是相同的,又由于阈值相同,传入激活函数的值也是相同,那么激活函数的输出也必然是相同的,此时该层所有神经元都表示一个相同的函数。同理可得其它层中同一层的神经元的输出都是相同的。那么在反向传播时,同一层的神经元得到的偏导数值也是相同的,因而同一层神经元的可训练参数的更新也是相同的。所以,尽管各层都有很多神经元,但现在它们的效果等效于每层仅有一个神经元。基于以上,权值是断然不能初始化为同一个常数的。
  我们避免常数,可以为权重赋予一个随机数。但新的问题又来了,我们应当按照什么样的规则去选取随机数?随机数有范围限制吗?随机数的数学期望有限制吗?随机数的方差有限制吗?这些就是接下来的内容需要讨论的问题。

Xavier

  本方法来自 Xavier Glorot、Yoshua Bengio 在 2010 年被会议 AISTATS 录用的论文《Understanding the difficulty of training deep feedforward neural networks》,所以本方法被称为 Xavier 算法或 Glorot 算法。有趣的是,AISTATS 是 CCF C 类会议,而这篇论文在参数初始化方面地位却很高。
  作者在文中基于三个假设对随机数应满足的方差做了推导。笔者将在下文中做出推导,可能与论文中的推导过程有些许差异,但都得出了同样的结果。我们先将推导需要的三个假设列举出来:

  • 各层的输入值独立同分布且数学期望为零;各层的权重值独立同分布且数学期望为零;权重值与输入值相互独立。
  • 不同层输入值的方差都是相等的。
  • 激活函数在原点处中心对称(这有助于让下一层的输入值的数学期望为零)且在原点处的导数值为 1 1 1

  我们对推导过程中使用到的符号作出如下说明:

  • 设本神经网络层有 n n n 个输入,有 m m m 个神经元。
  • x i x_i xi 表示第 i i i 个输入, y j y_j yj 表示第 j j j 个神经元的输出, w j , i w_{j, i} wj,i 表示第 j j j 个神经元对第 i i i 个输入所配置的权重, b j b_j bj 表示第 j j j 个神经元的偏置。
  • ∑ i = 1 n w j , i ⋅ x i + b j = s j \sum_{i=1}^n{w_{j, i} \cdot x_i} + b_j = s_j i=1nwj,ixi+bj=sj ,将激活函数记作 A A A,损失值记作 ℓ \ell

推导正向传播的方差约束条件
V a r ( s j ) = V a r ( ∑ i = 1 n w j , i ⋅ x i + b j ) j = 1 , 2 , ⋯   , m \mathrm{Var}(s_j)= \mathrm{Var} \left( \sum_{i=1}^{n}{w_{j,i} \cdot x_i + b_j} \right) \quad j = 1, 2, \cdots, m Var(sj)=Var(i=1nwj,ixi+bj)j=1,2,,m因为初始化时我们将所有偏置初始化为同一常数,所以此处可近似将 b j b_j bj 看作一个常数,则有:
V a r ( s j ) = V a r ( ∑ i = 1 n w j , i ⋅ x i ) j = 1 , 2 , ⋯   , m \mathrm{Var}(s_j)= \mathrm{Var} \left( \sum_{i=1}^{n}{w_{j,i} \cdot x_i} \right) \quad j = 1, 2, \cdots, m Var(sj)=Var(i=1nwj,ixi)j=1,2,,m充分使用第一条假设,则有:
V a r ( s j ) = ∑ i = 1 n V a r ( w j , i ⋅ x i ) j = 1 , 2 , ⋯   , m = n ⋅ V a r ( w j , i ⋅ x i ) j = 1 , 2 , ⋯   , m i = 1 , 2 , ⋯   , n \begin{aligned} \mathrm{Var}(s_j) &= \sum_{i=1}^{n}{\mathrm{Var} (w_{j,i} \cdot x_i )} & j = 1, 2, \cdots, m \\ &= n \cdot \mathrm{Var} (w_{j,i} \cdot x_i ) & j = 1, 2, \cdots, m & \quad i = 1, 2, \cdots, n \end{aligned} Var(sj)=i=1nVar(wj,ixi)=nVar(wj,ixi)j=1,2,,mj=1,2,,mi=1,2,,n使用方差公式,则有:
1 n ⋅ V a r ( s j ) = V a r ( w j , i ⋅ x i ) = E ( w j , i 2 ⋅ x i 2 ) − E ( w j , i ⋅ x i ) 2 j = 1 , 2 , ⋯   , m i = 1 , 2 , ⋯   , n \frac{1}{n} \cdot \mathrm{Var}(s_j) = \mathrm{Var} (w_{j,i} \cdot x_i ) = \mathbb{E}\left( w_{j, i}^2 \cdot x_i^2 \right) - \mathbb{E}( w_{j, i} \cdot x_i )^2 \quad j = 1, 2, \cdots, m \quad i = 1, 2, \cdots, n n1Var(sj)=Var(wj,ixi)=E(wj,i2xi2)E(wj,ixi)2j=1,2,,mi=1,2,,n根据第一条假设权重值与输入值二者是相互独立的,则有:
1 n ⋅ V a r ( s j ) = E ( w j , i 2 ) E ( x i 2 ) − E ( w j , i ) 2 E ( x i ) 2 j = 1 , 2 , ⋯   , m i = 1 , 2 , ⋯   , n = [ V a r ( w j , i ) + E ( w j , i ) 2 ] [ V a r ( x i ) + E ( x i ) 2 ] − E ( w j , i ) 2 E ( x i ) 2 j = 1 , 2 , ⋯   , m i = 1 , 2 , ⋯   , n = V a r ( w j , i ) V a r ( x i ) + V a r ( w j , i ) E ( x i ) 2 + V a r ( x i ) E ( w j , i ) 2 j = 1 , 2 , ⋯   , m i = 1 , 2 , ⋯   , n \begin{aligned} \frac{1}{n} \cdot \mathrm{Var}(s_j) &= \mathbb{E}\left( w_{j, i}^2 \right) \mathbb{E}\left( x_i^2 \right) - \mathbb{E}(w_{j, i})^2\mathbb{E}(x_i)^2 & j = 1, 2, \cdots, m \quad i = 1, 2, \cdots, n \\ &=\left[\mathrm{Var}(w_{j,i})+\mathbb{E}(w_{j, i})^2\right]\left[ \mathrm{Var}(x_i) + \mathbb{E}(x_i)^2\right] - \mathbb{E}(w_{j, i})^2\mathbb{E}(x_i)^2 & j = 1, 2, \cdots, m \quad i = 1, 2, \cdots, n \\ &= \mathrm{Var}(w_{j,i})\mathrm{Var}(x_i)+\mathrm{Var}(w_{j,i})\mathbb{E}(x_i)^2 + \mathrm{Var}(x_i)\mathbb{E}(w_{j, i})^2 & j = 1, 2, \cdots, m \quad i = 1, 2, \cdots, n \end{aligned} n1Var(sj)=E(wj,i2)E(xi2)E(wj,i)2E(xi)2=[Var(wj,i)+E(wj,i)2][Var(xi)+E(xi)2]E(wj,i)2E(xi)2=Var(wj,i)Var(xi)+Var(wj,i)E(xi)2+Var(xi)E(wj,i)2j=1,2,,mi=1,2,,nj=1,2,,mi=1,2,,nj=1,2,,mi=1,2,,n根据第一条假设可得 E ( x i ) = 0 = E ( w j , i ) \mathbb{E}(x_i)=0=\mathbb{E}(w_{j, i}) E(xi)=0=E(wj,i),则有:
1 n ⋅ V a r ( s j ) = V a r ( w j , i ) V a r ( x i ) j = 1 , 2 , ⋯   , m i = 1 , 2 , ⋯   , n \frac{1}{n} \cdot \mathrm{Var}(s_j) = \mathrm{Var}(w_{j,i})\mathrm{Var}(x_i) \quad j = 1, 2, \cdots, m \quad i = 1, 2, \cdots, n n1Var(sj)=Var(wj,i)Var(xi)j=1,2,,mi=1,2,,n由于输入激活函数的值大都集中在 0 0 0 附近,根据第三条假设可以近似得出 A ( s j ) = s j A(s_j)=s_j A(sj)=sj,则有:
1 n ⋅ V a r ( y j ) = V a r ( w j , i ) V a r ( x i ) j = 1 , 2 , ⋯   , m i = 1 , 2 , ⋯   , n \frac{1}{n} \cdot \mathrm{Var}(y_j) = \mathrm{Var}(w_{j,i})\mathrm{Var}(x_i) \quad j = 1, 2, \cdots, m \quad i = 1, 2, \cdots, n n1Var(yj)=Var(wj,i)Var(xi)j=1,2,,mi=1,2,,n本层神经元的输出也就是下一层神经元的输入,根据第二条假设,则有:
n ⋅ V a r ( w j , i ) = 1 j = 1 , 2 , ⋯   , m i = 1 , 2 , ⋯   , n n \cdot \mathrm{Var}(w_{j,i}) = 1 \quad j = 1, 2, \cdots, m \quad i = 1, 2, \cdots, n nVar(wj,i)=1j=1,2,,mi=1,2,,n
推导反向传播的方差约束条件
V a r ( ∂ ℓ ∂ x i ) = V a r ( ∑ j = 1 m ∂ ℓ ∂ y j ⋅ A ′ ( s j ) ⋅ w j , i ) i = 1 , 2 , ⋯   , n \mathrm{Var} \left( \frac{\partial \ell}{\partial x_i} \right) = \mathrm{Var} \left( \sum_{j=1}^m{\frac{\partial \ell}{\partial y_j} \cdot A'(s_j) \cdot w_{j,i}} \right) \quad i = 1, 2, \cdots, n Var(xi)=Var(j=1myjA(sj)wj,i)i=1,2,,n根据第三条假设可以近似得出:
V a r ( ∂ ℓ ∂ x i ) = V a r ( ∑ j = 1 m ∂ ℓ ∂ y j ⋅ w j , i ) i = 1 , 2 , ⋯   , n \mathrm{Var} \left( \frac{\partial \ell}{\partial x_i} \right) = \mathrm{Var} \left( \sum_{j=1}^m{\frac{\partial \ell}{\partial y_j} \cdot w_{j,i}} \right) \quad i = 1, 2, \cdots, n Var(xi)=Var(j=1myjwj,i)i=1,2,,n将第一条假设推广到反向传播中,并使用上文中类似的推导过程可以得出:
V a r ( ∂ ℓ ∂ x i ) = m ⋅ V a r ( ∂ ℓ ∂ y j ) ⋅ V a r ( w j , i ) j = 1 , 2 , ⋯   , m i = 1 , 2 , ⋯   , n \mathrm{Var} \left( \frac{\partial \ell}{\partial x_i} \right) = m \cdot \mathrm{Var} \left( \frac{\partial \ell}{\partial y_j} \right) \cdot \mathrm{Var} ( w_{j,i} ) \quad j = 1, 2, \cdots, m \quad i = 1, 2, \cdots, n Var(xi)=mVar(yj)Var(wj,i)j=1,2,,mi=1,2,,n将第二条假设推广到反向传播中,则有:
m ⋅ V a r ( w j , i ) = 1 j = 1 , 2 , ⋯   , m i = 1 , 2 , ⋯   , n m \cdot \mathrm{Var}(w_{j,i}) = 1 \quad j = 1, 2, \cdots, m \quad i = 1, 2, \cdots, n mVar(wj,i)=1j=1,2,,mi=1,2,,n
方差的最终约束
由于正向传播与反向传播得出的约束条件不同,作者作出了以下调和:
( m + n ) ⋅ V a r ( w j , i ) = 2 j = 1 , 2 , ⋯   , m i = 1 , 2 , ⋯   , n (m + n) \cdot \mathrm{Var}(w_{j,i}) = 2 \quad j = 1, 2, \cdots, m \quad i = 1, 2, \cdots, n (m+n)Var(wj,i)=2j=1,2,,mi=1,2,,n调和后的表达式为:
V a r ( w j , i ) = 2 m + n j = 1 , 2 , ⋯   , m i = 1 , 2 , ⋯   , n \mathrm{Var}(w_{j,i}) = \frac{2}{m + n} \quad j = 1, 2, \cdots, m \quad i = 1, 2, \cdots, n Var(wj,i)=m+n2j=1,2,,mi=1,2,,n结合第一条假设中对权重值提出的同分布和数学期望为 0 0 0 的要求,当选用正态分布和均匀分布来为权重产生随机数时,分别应满足:
w j , i   ∼ i i d   N ( 0 ,   2 m + n ) j = 1 , 2 , ⋯   , m i = 1 , 2 , ⋯   , n w_{j,i} \, \stackrel{iid}{\sim} \, N \left( 0, \, \sqrt{\frac{2}{m+n}} \right) \quad j = 1, 2, \cdots, m \quad i = 1, 2, \cdots, n wj,iiidN(0,m+n2 )j=1,2,,mi=1,2,,n w j , i   ∼ i i d   U ( − 6 m + n ,   6 m + n ) j = 1 , 2 , ⋯   , m i = 1 , 2 , ⋯   , n w_{j,i} \, \stackrel{iid}{\sim} \, U \left( -\sqrt{\frac{6}{m+n}}, \, \sqrt{\frac{6}{m+n}} \right) \quad j = 1, 2, \cdots, m \quad i = 1, 2, \cdots, n wj,iiidU(m+n6 ,m+n6 )j=1,2,,mi=1,2,,n
  第一条假设很难在神经网络模型中完全实现,因为在概率论中 ‘独立’ 是一个很强的约束条件,只能说这是我们提出的一个理想条件。批标准化(Batch Normalization,BN)可以实现对输入值的规范化,从而将第二条假设变为现实。能够满足第三条假设的激活函数目前仅有 tanh,事实上 Xavier 就是基于 tanh 作出了上述推导,所以 Xavier 算法在使用 tanh 的网络上表现最佳。

He

  本方法来自中国科学家何恺明等在 2015 年撰写的论文《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》,所以本方法被称为 He 算法、Kaiming 算法或 MSRA 算法(何恺明在微软亚洲研究院 MSRA 时期与同事合作了该论文)。
  我们知道 ReLU 显然不满足上文中的第三条假设,所以 Xavier 算法在使用 ReLU 的网络上表现较差。为了解决该问题,何恺明提出了 He 算法来为 ReLU 及其变种 Leaky ReLU 进行初始化。我们修改三个假设如下:

  • 各层的输入值独立同分布;各层的权重值独立同分布且数学期望为零;权重值与输入值相互独立。
  • 不同层送入激活函数的值的方差都是相等的。这条假设实际上与 Xavier 的第二条假设是等价的,因为送入激活函数的值方差相等,所以经过相同的激活函数变换后的激活函数输出值,其方差也是相等的。又因为激活函数的输出就是下一层的输入,所以各层输入值的方差是相等的。
  • 送入激活函数的值满足以零为中心的对称分布。
  • 激活函数为 PReLU,其在 x 轴负半段的斜率为 a a a

  我们在各符号右上角增加新符号 [ l ] [l] [l] 用于标记其属于第几层,如 w j , i [ l ] w_{j,i}^{[l]} wj,i[l] 表示第 r r r 层网络层中第 j [ l ] j^{[l]} j[l] 个神经元为第 i [ l ] i^{[l]} i[l] 个输入所配置的权重。此外,我们使用符号 p □ p_\Box p 表示 □ \Box 的概率密度函数。

应用当前的假设结合上文中的推导过程,下式当前仍然成立:
1 n [ l ] ⋅ V a r ( s j [ l ] ) = V a r ( w j , i [ l ] ) V a r ( x i [ l ] ) + V a r ( w j , i [ l ] ) E ( x i [ l ] ) 2 + V a r ( x i [ l ] ) E ( w j , i [ l ] ) 2 j [ l ] = 1 , 2 , ⋯   , m [ l ] i [ l ] = 1 , 2 , ⋯   , n [ l ] \frac{1}{n^{[l]}} \cdot \mathrm{Var} \left(s_j^{[l]} \right) = \mathrm{Var} \left(w_{j,i}^{[l]} \right)\mathrm{Var} \left(x_i^{[l]} \right)+\mathrm{Var} \left(w_{j,i}^{[l]} \right)\mathbb{E} \left(x_i^{[l]} \right)^2 + \mathrm{Var} \left(x_i^{[l]} \right)\mathbb{E} \left(w_{j, i}^{[l]} \right)^2 \quad j^{[l]} = 1, 2, \cdots, m^{[l]} \quad i^{[l]} = 1, 2, \cdots, n^{[l]} n[l]1Var(sj[l])=Var(wj,i[l])Var(xi[l])+Var(wj,i[l])E(xi[l])2+Var(xi[l])E(wj,i[l])2j[l]=1,2,,m[l]i[l]=1,2,,n[l]根据第一条假设可得 E ( w j , i [ l ] ) = 0 \mathbb{E}(w_{j, i}^{[l]})=0 E(wj,i[l])=0,则有:
1 n [ l ] ⋅ V a r ( s j [ l ] ) = V a r ( w j , i [ l ] ) V a r ( x i [ l ] ) + V a r ( w j , i [ l ] ) E ( x i [ l ] ) 2 j [ l ] = 1 , 2 , ⋯   , m [ l ] i [ l ] = 1 , 2 , ⋯   , n [ l ] = V a r ( w j , i [ l ] ) [ E ( x i [ l ] 2 ) − E ( x i [ l ] ) 2 ] + V a r ( w j , i [ l ] ) E ( x i [ l ] ) 2 j [ l ] = 1 , 2 , ⋯   , m [ l ] i [ l ] = 1 , 2 , ⋯   , n [ l ] = V a r ( w j , i [ l ] ) E ( x i [ l ] 2 ) j [ l ] = 1 , 2 , ⋯   , m [ l ] i [ l ] = 1 , 2 , ⋯   , n [ l ] \begin{aligned} \frac{1}{n^{[l]}} \cdot \mathrm{Var} \left(s_j^{[l]} \right) &= \mathrm{Var} \left(w_{j,i}^{[l]} \right)\mathrm{Var} \left(x_i^{[l]} \right)+\mathrm{Var} \left(w_{j,i}^{[l]} \right)\mathbb{E} \left(x_i^{[l]} \right)^2 & j^{[l]} = 1, 2, \cdots, m^{[l]} \quad i^{[l]} = 1, 2, \cdots, n^{[l]} \\ &= \mathrm{Var} \left(w_{j,i}^{[l]} \right)\left[ \mathbb{E} \left({x_i^{[l]}}^2 \right)-\mathbb{E} \left(x_i^{[l]} \right)^2 \right]+\mathrm{Var} \left(w_{j,i}^{[l]} \right)\mathbb{E} \left(x_i^{[l]} \right)^2 & j^{[l]} = 1, 2, \cdots, m^{[l]} \quad i^{[l]} = 1, 2, \cdots, n^{[l]} \\ &= \mathrm{Var} \left(w_{j,i}^{[l]} \right) \mathbb{E} \left({x_i^{[l]}}^2 \right) & j^{[l]} = 1, 2, \cdots, m^{[l]} \quad i^{[l]} = 1, 2, \cdots, n^{[l]} \end{aligned} n[l]1Var(sj[l])=Var(wj,i[l])Var(xi[l])+Var(wj,i[l])E(xi[l])2=Var(wj,i[l])[E(xi[l]2)E(xi[l])2]+Var(wj,i[l])E(xi[l])2=Var(wj,i[l])E(xi[l]2)j[l]=1,2,,m[l]i[l]=1,2,,n[l]j[l]=1,2,,m[l]i[l]=1,2,,n[l]j[l]=1,2,,m[l]i[l]=1,2,,n[l]根据神经网络的关系得:
E ( x i [ l ] 2 ) = E ( y j [ l − 1 ] 2 ) = E [ P R e L U 2 ( s j [ l − 1 ] ) ] i [ l ] = 1 , 2 , ⋯   , n [ l ] j [ l − 1 ] = i [ l ] \begin{aligned} \mathbb{E} \left({x_i^{[l]}}^2 \right) = \mathbb{E} \left({y_j^{[l-1]}}^2 \right) = \mathbb{E} \left[ PReLU^2\left( s_j^{[l-1]} \right) \right] \quad i^{[l]} = 1, 2, \cdots, n^{[l]} \quad j^{[l-1]} = i^{[l]} \end{aligned} E(xi[l]2)=E(yj[l1]2)=E[PReLU2(sj[l1])]i[l]=1,2,,n[l]j[l1]=i[l]根据数学期望的表达式得:
E ( x i [ l ] 2 ) = ∫ − ∞ + ∞ P R e L U 2 ( x ) ⋅ p s j [ l − 1 ] ( x ) ⋅ d x i [ l ] = 1 , 2 , ⋯   , n [ l ] j [ l − 1 ] = i [ l ] = ∫ − ∞ 0 P R e L U 2 ( x ) ⋅ p s j [ l − 1 ] ( x ) ⋅ d x + ∫ 0 + ∞ P R e L U 2 ( x ) ⋅ p s j [ l − 1 ] ( x ) ⋅ d x i [ l ] = 1 , 2 , ⋯   , n [ l ] j [ l − 1 ] = i [ l ] \begin{aligned} \mathbb{E} \left({x_i^{[l]}}^2 \right) &= \int_{-\infty}^{+\infty}{PReLU^2(x) \cdot p_{s_j^{[l-1]}} (x) \cdot \mathrm{d}x } & \quad i^{[l]} = 1, 2, \cdots, n^{[l]} \quad j^{[l-1]} = i^{[l]} \\ &= \int_{-\infty}^{0}{PReLU^2(x) \cdot p_{s_j^{[l-1]}} (x) \cdot \mathrm{d}x } + \int_{0}^{+\infty}{PReLU^2(x) \cdot p_{s_j^{[l-1]}} (x) \cdot \mathrm{d}x } & \quad i^{[l]} = 1, 2, \cdots, n^{[l]} \quad j^{[l-1]} = i^{[l]} \end{aligned} E(xi[l]2)=+PReLU2(x)psj[l1](x)dx=0PReLU2(x)psj[l1](x)dx+0+PReLU2(x)psj[l1](x)dxi[l]=1,2,,n[l]j[l1]=i[l]i[l]=1,2,,n[l]j[l1]=i[l]
根据 PReLU 的表达式得:
E ( x i [ l ] 2 ) = a 2 ∫ − ∞ 0 x 2 ⋅ p s j [ l − 1 ] ( x ) ⋅ d x + ∫ 0 + ∞ x 2 ⋅ p s j [ l − 1 ] ( x ) ⋅ d x i [ l ] = 1 , 2 , ⋯   , n [ l ] j [ l − 1 ] = i [ l ] \begin{aligned} \mathbb{E} \left({x_i^{[l]}}^2 \right) = a^2 \int_{-\infty}^{0}{ x^2 \cdot p_{s_j^{[l-1]}}(x) \cdot \mathrm{d}x } + \int_{0}^{+\infty}{x^2 \cdot p_{s_j^{[l-1]}}(x) \cdot \mathrm{d}x } \quad i^{[l]} = 1, 2, \cdots, n^{[l]} \quad j^{[l-1]} = i^{[l]} \end{aligned} E(xi[l]2)=a20x2psj[l1](x)dx+0+x2psj[l1](x)dxi[l]=1,2,,n[l]j[l1]=i[l]根据第三条假设可得 p s j [ l − 1 ] ( x ) p_{s_j^{[l-1]}}(x) psj[l1](x) 是偶函数,则有:
E ( x i [ l ] 2 ) = a 2 2 ∫ − ∞ + ∞ x 2 ⋅ p s j [ l − 1 ] ( x ) ⋅ d x + 1 2 ∫ − ∞ + ∞ x 2 ⋅ p s j [ l − 1 ] ( x ) ⋅ d x i [ l ] = 1 , 2 , ⋯   , n [ l ] j [ l − 1 ] = i [ l ] = 1 + a 2 2 ∫ − ∞ + ∞ x 2 ⋅ p s j [ l − 1 ] ( x ) ⋅ d x i [ l ] = 1 , 2 , ⋯   , n [ l ] j [ l − 1 ] = i [ l ] \begin{aligned} \mathbb{E} \left({x_i^{[l]}}^2 \right) &= \frac{a^2}{2} \int_{-\infty}^{+\infty}{ x^2 \cdot p_{s_j^{[l-1]}}(x) \cdot \mathrm{d}x } + \frac{1}{2}\int_{-\infty}^{+\infty}{x^2 \cdot p_{s_j^{[l-1]}}(x) \cdot \mathrm{d}x } & i^{[l]} = 1, 2, \cdots, n^{[l]} \quad j^{[l-1]} = i^{[l]} \\ &= \frac{1+a^2}{2}\int_{-\infty}^{+\infty}{x^2 \cdot p_{s_j^{[l-1]}}(x) \cdot \mathrm{d}x } & i^{[l]} = 1, 2, \cdots, n^{[l]} \quad j^{[l-1]} = i^{[l]} \end{aligned} E(xi[l]2)=2a2+x2psj[l1](x)dx+21+x2psj[l1](x)dx=21+a2+x2psj[l1](x)dxi[l]=1,2,,n[l]j[l1]=i[l]i[l]=1,2,,n[l]j[l1]=i[l]根据数学期望的定义得:
E ( x i [ l ] 2 ) = 1 + a 2 2 E ( s j [ l − 1 ] 2 ) = 1 + a 2 2 [ V a r ( s j [ l − 1 ] ) + E ( s j [ l − 1 ] ) 2 ] i [ l ] = 1 , 2 , ⋯   , n [ l ] j [ l − 1 ] = i [ l ] \begin{aligned} \mathbb{E} \left({x_i^{[l]}}^2 \right) = \frac{1+a^2}{2} \mathbb{E}\left( {s_j^{[l-1]}}^2 \right) = \frac{1+a^2}{2} \left[ \mathrm{Var}\left( s_j^{[l-1]} \right) + {\mathbb{E}\left( s_j^{[l-1]} \right)}^2 \right] \quad i^{[l]} = 1, 2, \cdots, n^{[l]} \quad j^{[l-1]} = i^{[l]} \end{aligned} E(xi[l]2)=21+a2E(sj[l1]2)=21+a2[Var(sj[l1])+E(sj[l1])2]i[l]=1,2,,n[l]j[l1]=i[l]根据第三条假设可得 E ( s j [ l − 1 ] ) = 0 \mathbb{E}\left( s_j^{[l-1]} \right)=0 E(sj[l1])=0,则有:
E ( x i [ l ] 2 ) = 1 + a 2 2 V a r ( s j [ l − 1 ] ) i [ l ] = 1 , 2 , ⋯   , n [ l ] j [ l − 1 ] = i [ l ] \mathbb{E} \left({x_i^{[l]}}^2 \right) = \frac{1+a^2}{2} \mathrm{Var}\left( s_j^{[l-1]} \right) \quad i^{[l]} = 1, 2, \cdots, n^{[l]} \quad j^{[l-1]} = i^{[l]} E(xi[l]2)=21+a2Var(sj[l1])i[l]=1,2,,n[l]j[l1]=i[l]代入上文中得式子得:
V a r ( s j [ l ] ) = V a r ( s j [ l − 1 ] ) ( 1 + a 2 ) n [ l ] 2 V a r ( w j , i [ l ] ) j [ l ] = 1 , 2 , ⋯   , m [ l ] i [ l ] = 1 , 2 , ⋯   , n [ l ] j [ l − 1 ] = i [ l ] \mathrm{Var} \left(s_j^{[l]} \right) = \mathrm{Var}\left( s_j^{[l-1]} \right) \frac{\left(1+a^2\right)n^{[l]}}{2} \mathrm{Var} \left(w_{j,i}^{[l]} \right) \quad j^{[l]} = 1, 2, \cdots, m^{[l]} \quad i^{[l]} = 1, 2, \cdots, n^{[l]} \quad j^{[l-1]} = i^{[l]} Var(sj[l])=Var(sj[l1])2(1+a2)n[l]Var(wj,i[l])j[l]=1,2,,m[l]i[l]=1,2,,n[l]j[l1]=i[l]根据第二条假设得:
V a r ( w j , i [ l ] ) = 2 ( 1 + a 2 ) n [ l ] j [ l ] = 1 , 2 , ⋯   , m [ l ] i [ l ] = 1 , 2 , ⋯   , n [ l ] \mathrm{Var} \left(w_{j,i}^{[l]} \right) = \frac{2}{\left(1+a^2\right)n^{[l]}} \quad j^{[l]} = 1, 2, \cdots, m^{[l]} \quad i^{[l]} = 1, 2, \cdots, n^{[l]} Var(wj,i[l])=(1+a2)n[l]2j[l]=1,2,,m[l]i[l]=1,2,,n[l]结合第一条假设中对权重值提出的同分布和数学期望为 0 0 0 的要求,当选用正态分布和均匀分布来为权重产生随机数时,分别应满足:
w j , i [ l ]   ∼ i i d   N ( 0 ,   2 ( 1 + a 2 ) n [ l ] ) j [ l ] = 1 , 2 , ⋯   , m [ l ] i [ l ] = 1 , 2 , ⋯   , n [ l ] w_{j,i}^{[l]} \, \stackrel{iid}{\sim} \, N \left( 0, \, \sqrt{\frac{2}{\left(1+a^2\right)n^{[l]}}} \right) \quad j^{[l]} = 1, 2, \cdots, m^{[l]} \quad i^{[l]} = 1, 2, \cdots, n^{[l]} wj,i[l]iidN(0,(1+a2)n[l]2 )j[l]=1,2,,m[l]i[l]=1,2,,n[l] w j , i [ l ]   ∼ i i d   U ( − 6 ( 1 + a 2 ) n [ l ] ,   6 ( 1 + a 2 ) n [ l ] ) j [ l ] = 1 , 2 , ⋯   , m [ l ] i [ l ] = 1 , 2 , ⋯   , n [ l ] w_{j,i}^{[l]} \, \stackrel{iid}{\sim} \, U \left( -\sqrt{\frac{6}{\left(1+a^2\right)n^{[l]}}}, \, \sqrt{\frac{6}{\left(1+a^2\right)n^{[l]}}} \right) \quad j^{[l]} = 1, 2, \cdots, m^{[l]} \quad i^{[l]} = 1, 2, \cdots, n^{[l]} wj,i[l]iidU((1+a2)n[l]6 ,(1+a2)n[l]6 )j[l]=1,2,,m[l]i[l]=1,2,,n[l]
  何恺明在论文中提到使用正向传播得出结果和反向传播得出结果均可,所以这里不再对反向传播进行推导。与上文中一样,第二条假设可以借助 BN 算法得以实现。第四条假设中我们将激活函数设定为 PReLU,若想将以上结果应用到 ReLU 中,只需要令 a = 0 a=0 a=0 即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用PyTorch实现BP神经网络回归并使用ReLU函数进行参数初始化的示例代码: ```python import torch import torch.nn as nn # 定义BP神经网络回归模型 class Net(nn.Module): def __init__(self, input_size, hidden_size, output_size): super(Net, self).__init__() self.fc1 = nn.Linear(input_size, hidden_size) self.fc2 = nn.Linear(hidden_size, output_size) self.relu = nn.ReLU() def forward(self, x): out = self.fc1(x) out = self.relu(out) out = self.fc2(out) return out # 初始化模型参数 def weights_init(m): classname = m.__class__.__name__ if classname.find('Linear') != -1: n = m.in_features + m.out_features std = np.sqrt(2.0 / n) m.weight.data.normal_(0, std) m.bias.data.fill_(0) # 示例数据 x = torch.randn(10, 5) y = torch.randn(10, 1) # 初始化模型 model = Net(5, 10, 1) model.apply(weights_init) # 定义损失函数和优化器 criterion = nn.MSELoss() optimizer = torch.optim.SGD(model.parameters(), lr=0.01) # 训练模型 for epoch in range(100): # 前向传播 outputs = model(x) loss = criterion(outputs, y) # 反向传播并优化 optimizer.zero_grad() loss.backward() optimizer.step() # 打印损失值 print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, 100, loss.item())) ``` 在上述代码中,weights_init函数使用了Xavier初始化方法来初始化模型参数。在初始化Linear层的权重和偏置时,需要根据输入维度和输出维度计算标准差,然后从一个正态分布中随机生成数值作为初值。最后,利用apply函数将初始化函数应用到整个模型上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值