一般神经网络的微分与网络参数的初始化

(文章的主要内容来自电科的顾亦奇老师的 Mathematical Foundation of Deep Learning, 有部分个人理解)

一般深度神经网络的微分

上周讨论的前向和反向传播算法可以推广到任意深度神经网络的微分。
对于一般的网络来说,可能无法逐层分割,但仍然可以用流图来表示。因此,反向传播是通过从输出神经元开始、向后传递信息并在输入处结束来执行的。

更准确地说,给定从 R d \mathbb{R}^{d} Rd R \mathbb{R} R的神经网络 f ( x ; θ ) f(x; θ) f(x;θ) 映射图,假设总共有 K 个神经元,我们用 x 1 , … , x d x_1, \dots ,x_d x1,,xd N d + 1 , … , N d + K N_{d+1}, \dots ,N_{d+K} Nd+1,,Nd+K标记输入。为了方便起见,神经元被标记为使得有向边总是从小索引到大索引。

我们用 w i , j w_{i,j} wi,j 表示从神经元 N i N_i Ni(或输入 x i x_i xi)到神经元 N j N_j Nj 的边的权重。 令 P j P_j Pj 为由神经元 N j N_j Nj 的直接前驱的索引组成的集合 ( d + 1 ≤ j ≤ d + K ) (d + 1 ≤ j ≤ d + K) (d+1jd+K)。 类似地,令 S j S_j Sj 为由顶点 x j x_j xj N j N_j Nj 的直接后继索引组成的集合 ( 1 ≤ j < d + K ) (1 ≤ j < d + K) (1j<d+K)。 例如,在图 2.10 中, P 7 = { 2 , 3 , 5 , 6 } P_7 = \{2,3,5,6\} P7={2,3,5,6} S 7 = { 9 , 10 , 11 } S_7 = \{9,10,11\} S7={9,10,11}
在这里插入图片描述
现在,对于任何 1 ≤ j ≤ d + K 1 ≤ j ≤ d + K 1jd+K,假设以下计算发生在 N j N_j Nj:
y j = σ j ( q j ) , q j = ∑ k ∈ P j w k , j y k + b j , for   d + 1 ≤ j ≤ d + K . (2.27) y _ { j } = \sigma _ { j } ( q _ { j } ) , \text{ } \text{ } q _ { j } = \sum _ { k \in P _ { j } } w _ { k , j } y _ { k } + b _ { j } , \text{for }\text{ } d + 1 \leq j \leq d + K . \tag{2.27} yj=σj(qj),  qj=kPjwk,jyk+bj,for  d+1jd+K.(2.27)

y j = x j , for   1 ≤ j ≤ d . (2.28) y _ { j } = x _ { j } , \text{ }\text{ }\text{for }\text{ } 1 \leq j \leq d . \tag{2.28} yj=xj,  for  1jd.(2.28)
其中 σ j σ_j σj b j b_j bj N j N_j Nj 的激活函数和偏差。
恒等式(2.28)仅仅是为了符号方便。
请注意, y j y_j yj 表示顶点 N j N_j Nj x j x_j xj 的输出值。
我们可以使用一种流程图来表示这个过程:
在这里插入图片描述

另外,我们将 p j p _ { j } pj表示为 ∂ f ( x ; θ ) ∂ q j \frac { \partial f ( x ; \theta ) } { \partial q _ { j } } qjf(x;θ) 表示为 d + 1 ≤ j ≤ d + K d + 1 ≤ j ≤ d + K d+1jd+K.
使用链式法则,如果 i ∈ S j i ∈ S_j iSj ,我们有 (对于节点 N j N_j Nj, f对其任意一个入度边 w i , j w_{i,j} wi,j偏导表示) (这里 y i y_i yi表示某个前导节点)
∂ f ( x ; θ ) ∂ w i , j = ∂ f ( x ; θ ) ∂ q j ⋅ ∂ q j ∂ w i , j = p j ⋅ y i ⋅ (2.29) \frac { \partial f ( x ; \theta ) } { \partial w _ { i , j } } = \frac { \partial f ( x ; \theta ) } { \partial q _ { j } } \cdot \frac { \partial q _ { j } } { \partial w _ { i , j } } = p _ { j } \cdot y _ { i \cdot } \tag{2.29} wi,jf(x;θ)=qjf(x;θ)wi,jqj=pjyi(2.29) ∂ f ( x ; θ ) ∂ b j = ∂ f ( x ; θ ) ∂ q j ⋅ ∂ q j ∂ b j = p j . (2.30) \frac { \partial f ( x ; \theta ) } { \partial b _ { j } } = \frac { \partial f ( x ; \theta ) } { \partial q _ { j } } \cdot \frac { \partial q _ { j } } { \partial b _ { j } } = p _ { j } . \tag{2.30} bjf(x;θ)=qjf(x;θ)bjqj=pj.(2.30)
另外, p j p_j pj也可通过 p j = ∂ f ( x ; θ ) ∂ q j = ∑ k ∈ S j ∂ f ( x ; θ ) ∂ q k ⋅ ∂ q k ∂ y j ⋅ d y j d q j = σ j ′ ( q j ) ⋅ ∑ k ∈ S j p k ⋅ w j , k for   d + 1 ≤ j < d + K . (2.32) p _ { j } = \frac { \partial f ( x ; \theta ) } { \partial q _ { j } } = \sum _ { k \in S _ { j } } \frac { \partial f ( x ; \theta ) } { \partial q _ { k } } \cdot \frac { \partial q _ { k } } { \partial y _ { j } } \cdot \frac { d y _ { j } } { d q _ { j } } \\ = \sigma _ { j } ^ { \prime } ( q _ { j } ) \cdot \sum _ { k \in S _ { j } } p _ { k } \cdot w _ { j , k } \text{ }\text{ }\text{ }\text{for }\text{ } d + 1 \leq j < d + K .\tag{2.32} pj=qjf(x;θ)=kSjqkf(x;θ)yjqkdqjdyj=σj(qj)kSjpkwj,k   for  d+1j<d+K.(2.32)来计算.

同时, 我们有
∂ f ( x ; θ ) ∂ x j = ∑ k ∈ S j ∂ f ( x ; θ ) ∂ q k ⋅ ∂ q k ∂ y j ⋅ ∂ y j ∂ x j (2.33) \frac { \partial f ( x ; \theta ) } { \partial x _ { j } } = \sum _ { k \in S _ { j } } \frac { \partial f ( x ; \theta ) } { \partial q _ { k } } \cdot \frac { \partial q _ { k } } { \partial y _ { j } } \cdot \frac { \partial y _ { j } } { \partial x _ { j } }\tag{2.33} xjf(x;θ)=kSjqkf(x;θ)yjqkxjyj(2.33)
因此,我们可以首先实现前向传播 (2.27)-(2.28),它传递来自输入 x 1 , … , x d x_1, \dots, x_d x1,,xd 的信息到输出神经元 N d + K N_{d+K} Nd+K
在此阶段,我们从小到大地计算并保存 j = 1 , … , d + K j = 1,\dots, d+K j=1,,d+K 时的 { y j } \{y_j\} {yj} { q j } \{q_j\} {qj}
接下来,我们实现反向传播 (2.29)-(2.32),它从 N d + K N_{d+K} Nd+K 传递到输入。 具体来说,我们依照 j = d + K , d + K − 1 , … , d + 1 j = d+K, d+K-1,\dots, d+1 j=d+K,d+K1,,d+1计算 { p j } \{p_j\} {pj} { ∂ f ( x ; θ ) ∂ w i , j } i ∈ P j \left\{ \frac { \partial f ( x ; \theta ) } { \partial w _ { i , j} } \right\} _ { i \in P j } {wi,jf(x;θ)}iPj { ∂ f ( x ; θ ) ∂ b j } \left\{ \frac { \partial f ( x ; \theta ) } { \partial b_j} \right\} {bjf(x;θ)}. 最终, j = 1 , … , d j = 1,\dots, d j=1,,d时的 { ∂ f ( x ; θ ) ∂ x j } \left\{ \frac { \partial f ( x ; \theta ) } { \partial x_j} \right\} {xjf(x;θ)}可被公式(2.33)计算
在这里插入图片描述
在这里插入图片描述

由路径制定的导数

更一般地,我们可以制定导数的封闭形式。
在图论意义上,将 P ( j , n 1 , n 2 , … , n k , d + K ) \mathcal{P}(j, n_1, n_2, \dots, n_k, d + K) P(j,n1,n2,,nk,d+K) 表示为从顶点 N j N_j Nj x j x_j xj 通过神经元 N n 1 , N n 2 , … , N n k N_{n_1}, N_{n_2}, \dots, N_{n_k} Nn1,Nn2,,Nnk 到输出神经元 N d + K N_{d+K} Nd+K的路径。
然后根据链式法则,对于任何 d + 1 ≤ j ≤ d + K d + 1 ≤ j ≤ d + K d+1jd+K i ∈ P j i ∈ P_j iPj,有
∂ f ( x ; θ ) ∂ w i , j = y i ⋅ ∑ P ( j , n 1 , n 2 , … , n k , d + K ) σ j ′ ( q j ) ⋅ w j , n 1 ⋅ σ n 1 ′ ( q n 1 ) ⋅ w n 1 , n 2 ⋅ σ n 2 ′ ( q n 2 ) ⋯ w n k , d + K ⋅ σ d + K ′ ( q d + K ) , (2.34) \frac { \partial f ( x ; \theta ) } { \partial w _ { i , j } } = y _ { i } \cdot \sum _ { \mathcal{P} ( j , n _ { 1 } , n _ { 2 } , \ldots , n _ { k } , d + K ) } \sigma _ { j } ^ { \prime } ( q _ { j } ) \cdot w _ { j , n _ { 1 } } \cdot \sigma _ { n _ { 1 } } ^ { \prime } ( q _ { n _ { 1 } } ) \cdot w _ { n _ { 1 } , n _ { 2 } } \cdot \sigma _ { n _ { 2 } } ^ { \prime } ( q _ { n _ { 2 } } ) \cdots w _ { n _ { k }, d+K } \cdot \sigma _ { d + K } ^ { \prime } ( q _ { d + K } ) ,\tag{2.34} wi,jf(x;θ)=yiP(j,n1,n2,,nk,d+K)σj(qj)wj,n1σn1(qn1)wn1,n2σn2(qn2)wnk,d+Kσd+K(qd+K),(2.34)其中对从节点 N j N_j Nj N d + K N_{d+K} Nd+K 的所有路径进行求和。 类似地,对于 1 ≤ j ≤ d 1 ≤ j ≤ d 1jd,有:
∂ f ( x ; θ ) ∂ x j = ∑ P ( j , n 1 , n 2 , … , n k , d + K ) σ j ′ ( q j ) ⋅ w j , n 1 ⋅ σ n 1 ′ ( q n 1 ) ⋅ w n 1 , n 2 ⋅ σ n 2 ′ ( q n 2 ) ⋯ w n k , d + K ⋅ σ d + K ′ ( q d + K ) , \frac { \partial f ( x ; \theta ) } { \partial x_ j } = \sum _ { \mathcal{P} ( j , n _ { 1 } , n _ { 2 } , \ldots , n _ { k } , d + K ) } \sigma _ { j } ^ { \prime } ( q _ { j } ) \cdot w _ { j , n _ { 1 } } \cdot \sigma _ { n _ { 1 } } ^ { \prime } ( q _ { n _ { 1 } } ) \cdot w _ { n _ { 1 } , n _ { 2 } } \cdot \sigma _ { n _ { 2 } } ^ { \prime } ( q _ { n _ { 2 } } ) \cdots w _ { n _ { k }, d+K } \cdot \sigma _ { d + K } ^ { \prime } ( q _ { d + K } ) , xjf(x;θ)=P(j,n1,n2,,nk,d+K)σj(qj)wj,n1σn1(qn1)wn1,n2σn2(qn2)wnk,d+Kσd+K(qd+K),其中对从 x j x_j xj N d + K N_{d+K} Nd+K 的所有路径进行求和.

假设 f ( x ; θ ) f(x; θ) f(x;θ) 的所有激活函数都是 sigmoid 函数。 请注意,如果中间变量 q i q_i qi 的模 ∣ q i ∣ |q_i| qi较大,则 σ i ′ ( q i ) σ^{\prime}_i (q_i) σi(qi) 项将接近于零。 那么对于长路径,包含许多小乘数 σ i ′ ( q i ) σ^{\prime}_i (q_i) σi(qi)的右侧乘积将非常接近于零。 因此,如果权重为 w i , j w_{i,j} wi,j 的边距离输出神经元较远,则导数 ∂ f ( x ; θ ) ∂ w i , j \frac { \partial f ( x ; \theta ) } { \partial w_{i , j} } wi,jf(x;θ)可能非常接近于零,甚至在实际计算中被机器精度下溢。

此外,假设我们有一个损失函数 L ( f ( x ; θ ) ) \mathcal{L}(f(x;θ)) L(f(x;θ)),其中 L ( ⋅ ) \mathcal{L}(\cdot) L()是可微分的。当使用梯度下降法优化 L \mathcal{L} L时,我们计算的 ∇ θ L ∇_{θ}\mathcal{L} θL 有以下分量: ∇ w i , j L = L ′ ( f ( x ; θ ) ) ⋅ ∂ f ( x ; θ ) ∂ w i , j . \nabla _ { w _ { i , j } } \mathcal{L}= \mathcal{L}^ { \prime } ( f ( x ; \theta ) ) \cdot \frac { \partial f ( x ; \theta ) } { \partial w _ { i , j } } . wi,jL=L(f(x;θ))wi,jf(x;θ).因此, ∂ f ( x ; θ ) ∂ w i , j \frac { \partial f ( x ; \theta ) } { \partial w _ { i , j } } wi,jf(x;θ)的消失很可能会导致 ∇ w i , j L \nabla _ { w _ { i , j } } \mathcal{L} wi,jL的消失。在这种情况下,参数 w i , j w_{i,j} wi,j 几乎无法通过梯度下降来改变,因此收敛速度会大大减慢。这种梯度消失的问题经常出现在使用 sigmoid 函数的深度神经元网络优化中。解决梯度消失问题的一种有效方法是使用残差神经网络(ResNets)。

权重初始化

在网络层数较少的情况下,将所有权重和偏差初始化为零,或者从零均值的均匀分布或高斯分布中进行采样,通常会提供足够令人满意的收敛结果。 然而,在深度神经网络的情况下,权重的正确初始化会对最优算法的收敛方式产生显着影响。

权重太小/大可能会导致梯度消失或爆炸问题, 这可以从梯度表达式(2.34)中部分地认识到。
如果 σ j ′ σ^{\prime}_j σj 是有限的并且权重 w j i w_{ji} wji 的值太小,则长路径的乘积将接近于零,从而导致梯度消失。
另一方面,对于 sigmoid 激活结果,如果 ∣ w j i ∣ |w_{ji}| wji 较大, q j = ∑ k ∈ P j w k , j y k + b j q _ { j } = \sum _ { k \in P _ { j } } w _ { k , j } y _ { k } + b _ { j } qj=kPjwk,jyk+bj 也会很大,使得 σ j ′ ( q j ) σ^{\prime}_j (q_j ) σj(qj) 接近于零。

从前向传播的观点来看…

权重 w j i w_{ji} wji 如何的正确初始化?
现在假设信息通过前向传播从第 (ℓ − 1) 层传递到第 ℓ 层,即 y j ℓ = σ j ℓ ( ∑ i = 1 M ℓ − 1 w j i ℓ y i ℓ − 1 ) , (2.35) y _ { j } ^ { \ell } = \sigma _ { j } ^ { \ell} ( \sum _ { i = 1 } ^ { M _ { \ell - 1 } } w _ { j i } ^ { \ell } y _ { i } ^ {\ell - 1 } ) ,\tag{2.35} yj=σj(i=1M1wjiyi1),(2.35)
其中 j 是第 ℓ 层神经元的索引。 这里我们省略了偏差 b b b。 在实践中,偏差通常被初始化为零或均值为零的随机变量。 为简单起见,我们假设 { w i j ℓ } i , j \{w^ℓ_{ij}\}_{i,j} {wij}i,j { y i ℓ − 1 } i \{y^{ℓ−1}_i\}_i {yi1}i 是两组独立且同分布的均值为零的随机变量。
此外,在前向传播中, y i ℓ − 1 y^{ℓ−1}_i yi1 是通过先前的权重计算的,因此与当前的 w i j ℓ w^ℓ_{ij} wij无关,因此它俩是相互独立的。

最终, 我们的目标是找到一种 w i j ℓ w^ℓ_{ij} wij的分布,使得第 ℓ 层的输出与它的输入一样分散, 即 Var ( y j ℓ ) = Var ( y i ℓ − 1 ) \text{Var}(y^ℓ_j) = \text{Var}(y^{ℓ−1}_i ) Var(yj)=Var(yi1)
我们首先引入以下结论

引理2.3: 如果 X 和 Y 是两个独立的随机变量且 E [ ( X ) ] = E [ ( Y ) ] = 0 E[(X)] = E[(Y)] = 0 E[(X)]=E[(Y)]=0,则 Var ( X Y ) = Var ( X ) Var ( Y ) \text{Var}(XY ) = \text{Var}(X)\text{Var}(Y ) Var(XY)=Var(X)Var(Y)
在这里插入图片描述
此外,令 f f f为可微函数。 然后 f ( x ) f(x) f(x) x = E [ X ] x = E[X] x=E[X] 处的线性近似给出 f ( x ) ≈ f ( E [ X ] ) + f ′ ( E [ X ] ) ( x − E [ X ] ) . f ( x ) \approx f ( E \left[ X \right] ) + f ^ { \prime } ( E \left[ X \right] ) ( x - E \left[ X \right] ) . f(x)f(E[X])+f(E[X])(xE[X]).用随机变量 X X X 替换变量 x x x 会得到 f ( X ) ≈ f ( E [ X ] ) + f ′ ( E [ X ] ) ( X − E [ X ] ) . f ( X ) \approx f ( E \left[ X \right] ) + f ^ { \prime } ( E \left[ X \right] ) ( X - E \left[ X \right] ) . f(X)f(E[X])+f(E[X])(XE[X]).因此, Var ( f ( X ) ) ≈ Var ( f ′ ( E [ X ] ) ( X − E [ X ] ) ) = f ′ ( E [ X ] ) 2 Var ( X ) . \text{Var}( f ( X ) ) \approx \text{Var} ( f ^ { \prime } ( E \left[ X \right] ) ( X - E \left[ X \right] ) ) = f ^ { \prime } ( E \left[ X \right] ) ^ { 2 } \text{Var} ( X ) . Var(f(X))Var(f(E[X])(XE[X]))=f(E[X])2Var(X).那么带入公式 (2.35) 的数值可知 ( f → σ f\rightarrow\sigma fσ, X → w j i ℓ y i ℓ − 1 X\rightarrow w _ { j i } ^ { \ell } y _ { i } ^ {\ell - 1 } Xwjiyi1, 且已知 w j i ℓ w _ { j i } ^ { \ell } wji y i ℓ − 1 y _ { i } ^ {\ell - 1 } yi1相互独立, 故 E ( w j i ℓ y i ℓ − 1 ) \mathbb{E}(w _ { j i } ^ { \ell } y _ { i } ^ {\ell - 1 }) E(wjiyi1)是可以分离的. 由假设可得, E ( w j i ℓ ) = E ( y i ℓ − 1 ) = 0 \mathbb{E}(w _ { j i } ^ { \ell }) = \mathbb{E}( y _ { i } ^ {\ell - 1 })=0 E(wji)=E(yi1)=0):
在这里插入图片描述
(这里倒数第二个个式子到最后一个式子的原因, 我怀疑是在初始化中, 所有Weight的初始值都是相同的)
因为我们的目标是 Var ( y j ℓ ) = Var ( y i ℓ − 1 ) \text{Var}(y^ℓ_j) = \text{Var}(y^{ℓ−1}_i ) Var(yj)=Var(yi1), 因此需要 M ℓ − 1 ( ( σ j ℓ ) ′ ( 0 ) ) 2 Var ( w j i ℓ ) = 1 M _ { \ell - 1 } ( ( \sigma _ { j } ^ {\ell} ) ^ { \prime } ( 0 ) ) ^ { 2 } \text{Var} ( w _ { j i } ^ { \ell } ) = 1 M1((σj)(0))2Var(wji)=1 故有:
Var ( w j i ℓ ) = 1 M ℓ − 1 ( ( σ j ℓ ) ′ ( 0 ) ) 2 (2.37) \text{Var}( w ^ { \ell } _ { j i } ) = \frac { 1 } { M _ { \ell - 1 } \left( ( \sigma ^ { \ell } _ { j } ) ^ { \prime } ( 0 ) \right) ^ { 2 } } \tag{2.37} Var(wji)=M1((σj)(0))21(2.37)

因此,我们得到两个有用的结论:

  1. 如果 w j i ℓ w^{\ell}_{ji} wji是从正态分布中得出的, 那么 w j i ℓ ∼ N ( 0 , 1 M ℓ − 1 ( ( σ j ℓ ) ′ ( 0 ) ) 2 ) w _ { j i } ^ { \ell } \sim \mathcal{N} ( 0 , \frac { 1 } { M _ { \ell - 1 } ( ( \sigma _ { j } ^ { \ell } ) ^ { \prime } ( 0 ) ) ^ { 2 } } ) wjiN(0,M1((σj)(0))21)
  2. 如果 w j i ℓ w^{\ell}_{ji} wji是从均匀分布中得出的, 因为 U [ − a , a ] U[-a, a] U[a,a]的方差是 a 2 3 \frac{a^2}{3} 3a2, 所以有 w j i ℓ ∼ U [ − 3 M ℓ − 1 ( σ j ′ ) ′ ( 0 ) , 3 M ℓ − 1 ( σ j ℓ ) ′ ( 0 ) ] w _ { j i } ^ { \ell } \sim U \left[ - \frac { \sqrt { 3 } } { \sqrt { M _ { \ell - 1 } ( \sigma _ { j } ^ { \prime } ) ^ { \prime } ( 0 ) } } , \frac { \sqrt { 3 } } { \sqrt { M _ { \ell- 1 } ( \sigma _ { j } ^ { \ell} ) ^ { \prime } ( 0 ) } } \right] wjiU[M1(σj)(0) 3 ,M1(σj)(0) 3 ]

可以发现, 如果要实现网络两层输出值的方差一致, 只需要保证它们之间的边权的初始化服从上述分布即可.
同时, 通过观察方差本身的构成, 我们可以发现这种方差只与 “第一层的结点个数” 和 “第二层的激活函数在0处的导数” 有关.
在这里插入图片描述

从反向传播的观点来看…

另一种策略是从反向传播的角度推导的,也称为 Xavier 初始化 [5]。
我们预计: Var ( ∂ f ( x ; θ ) ∂ w i j ℓ − 1 ) = Var ( ∂ f ( x ; θ ) ∂ w i j ℓ ) (2.38) \text{Var}( \frac { \partial f ( x ; \theta ) } { \partial w _ { i j } ^ { \ell - 1 } } ) = \text{Var} ( \frac { \partial f ( x ; \theta ) } { \partial w _ { i j } ^ { \ell } } )\tag{2.38} Var(wij1f(x;θ))=Var(wijf(x;θ))(2.38)

我们假设 { a i , w j i ℓ } i , j , ℓ \{a_i , w^ℓ_{ji}\}_{i,j,ℓ} {ai,wji}i,j, 中的所有权重都是独立且均值为零的同分布随机变量。 另外,我们假设所有激活函数都是恒等的,则关系式 (2.22)-(2.25) 为 p L + 1 = 1 , p i L = p L + 1 a i , (2.39) p ^ { L + 1 } = 1 , p _ { i } ^ { L } = p ^ { L + 1 } a _ { i } ,\tag{2.39} pL+1=1,piL=pL+1ai,(2.39) p i ℓ − 1 = ∑ j = 1 M ℓ p j ℓ w j i ℓ , for   ℓ = L , L − 1 , … , 2 (2.40) p _ { i } ^ { \ell - 1 } = \sum _ { j = 1 } ^ { M _ { \ell } } p _ { j } ^ { \ell } w _ { j i } ^ { \ell} , \text{ for }\ \ell= L , L - 1 , \ldots , 2 \tag{2.40} pi1=j=1Mpjwji, for  =L,L1,,2(2.40)

通过回溯递归, p j ℓ p_j^\ell pj是由 { w j i ℓ + 1 } i , j ∪ ⋯ ∪ { w j i L } i , j ∪ { a i } i \{w^{\ell+1}_{ji}\}_{i,j} \cup \cdots \cup \left\{ w _ { j i } ^ { L } \right\} _ { i , j } \cup \left\{ a _ { i } \right\} _ { i } {wji+1}i,j{wjiL}i,j{ai}i确定的而非独立的 { w j i ℓ } i , j \{w^\ell_{ji}\}_{i,j} {wji}i,j { y ℓ − 1 } i \{y^{\ell-1}\}_i {y1}i (这俩者是 p j ℓ p_j^\ell pj左侧的边权和输出).
因此, p j ℓ p _ { j } ^ { \ell } pj w j i ℓ w _ { j i } ^ { \ell } wji之间是彼此独立的, 故: E [ ∑ j = 1 M ℓ p j ℓ w j i ℓ ] = ∑ j = 1 M ℓ E [ p j ℓ ] E [ w j i ℓ ] = 0 , \mathbb{E} \left[ \sum _ { j = 1 } ^ { M _ { \ell } } p _ { j } ^ { \ell } w _ { j i } ^ { \ell } \right] = \sum _ { j = 1 } ^ { M _ { \ell } } \mathbb{E} \left[ p _ { j } ^ { \ell } \right] \mathbb{E} \left[ w _ { j i } ^ { \ell } \right] = 0 , E[j=1Mpjwji]=j=1ME[pj]E[wji]=0,因为所有权重都是均值为零的同分布随机变量, 故 E [ w j i ℓ ] = 0 \mathbb{E}[w_{ji}^{\ell}]=0 E[wji]=0, 由上式可得, E [ p i ℓ − 1 ] = 0 \mathbb{E}[p^{ℓ−1}_i] = 0 E[pi1]=0,类似地, E [ p i ℓ ] = 0 \mathbb{E}[p^ℓ_i] = 0 E[pi]=0.

此外,由于 y j ℓ = ∑ i = 1 M ℓ − 1 w j i ℓ y i ℓ − 1 y _ { j } ^ { \ell } = \sum _ { i = 1 } ^ { M _ { \ell - 1 } } w _ { j i } ^ { \ell } y _ { i } ^ { \ell - 1 } yj=i=1M1wjiyi1 w j i ℓ w^ℓ_{ji} wji y i ℓ − 1 y^{ℓ−1}_i yi1 无关 (前向传播的结论),故 E [ y j ℓ ] = ∑ i = 1 M ℓ − 1 E [ w j i ℓ ] E [ y i ℓ − 1 ] = 0. \mathbb{E}[ y _ { j } ^ { \ell } ] = \sum _ { i = 1 } ^ { M _ { \ell - 1} } \mathbb{E} [ w _ { j i } ^ { \ell } ] \mathbb{E} [ y _ { i } ^ { \ell - 1 } ] = 0. E[yj]=i=1M1E[wji]E[yi1]=0.

类似地, E [ y j ℓ − 1 ] = E [ y j ℓ − 2 ] = 0 \mathbb{E}[y_j^{\ell-1}]=\mathbb{E}[y_j^{\ell-2}]=0 E[yj1]=E[yj2]=0.

现在,对于 ℓ ≥ 2 ℓ ≥ 2 2,通过(2.29),目标(2.38)可被写为 Var ( p j ℓ − 1 y i ℓ − 2 ) = Var ( p j ℓ y i ℓ − 1 ) \text{Var}(p_j^{\ell-1}y_i^{\ell-2}) = \text{Var}(p^\ell_j y_i^{\ell-1}) Var(pj1yi2)=Var(pjyi1)
使用引理 2.3 令: Var ( p j ℓ − 1 ) Var ( y i ℓ − 2 ) = Var ( p j ℓ ) Var ( y i ℓ − 1 ) . \text{Var}( p _ { j } ^ { \ell- 1 } ) \text{Var}( y _ { i } ^ { \ell- 2 } ) = \text{Var}( p _ { j } ^ { \ell} ) \text{Var}( y _ { i } ^ { \ell- 1 } ) . Var(pj1)Var(yi2)=Var(pj)Var(yi1).

如上所述,我们还期望 Var ( y i ℓ − 2 ) = Var ( y i ℓ − 1 ) \text{Var}(y^{ℓ−2}_i ) = \text{Var}(y^{ℓ−1}_i) Var(yi2)=Var(yi1) (基于前向传播的目标),因此下式必须成立 Var ( p j ℓ − 1 ) = Var ( p j ℓ ) . (2.41) \text{Var}( p _ { j } ^ { \ell - 1 } ) = \text{Var}( p _ { j } ^ { \ell } ). \tag{2.41} Var(pj1)=Var(pj).(2.41)
对(2.40)进行取方差的操作, 即 Var ( ⋅ ) \text{Var}(\cdot) Var(). 以及引入引理2.3. 可得:
Var ( p i ℓ − 1 ) = ∑ j = 1 M ℓ Var ( p j ℓ ) Var ( w j i ℓ ) = M ℓ Var ( p j ℓ ) Var ( w j i ℓ ) , (2.42) \text{Var} ( p _ { i } ^ { \ell - 1 } ) = \sum _ { j = 1 } ^ { M _ { \ell } } \text{Var}( p _ { j } ^ { \ell } ) \text{Var} ( w _ { j i } ^ { \ell } ) = M _ { \ell} \text{Var}( p _ { j } ^ { \ell } ) \text{Var}( w _ { j i } ^ { \ell} ) ,\tag{2.42} Var(pi1)=j=1MVar(pj)Var(wji)=MVar(pj)Var(wji),(2.42)
其中我们使用了 { p j ℓ } j \{p^ℓ_j\}_j {pj}j 同分布这一事实。 结合(2.41)和(2.42),我们有 Var ( w j i ℓ ) = 1 M ℓ . (2.43) \text{Var} ( w _ { j i } ^ { \ell} ) = \frac { 1 } { M _ { \ell } } .\tag{2.43} Var(wji)=M1.(2.43)
关系式(2.43)表示 w j i ℓ w^ℓ_{ji} wji 的方差与第ℓ层的宽度成反比。 相比之下,在线性激活函数的假设下,关系式(2.37)变为 Var ( w j i ℓ ) = 1 M ℓ − 1 , (2.44) \text{Var} ( w _ { j i } ^ { \ell} ) = \frac { 1 } { M _ { \ell - 1 } } ,\tag{2.44} Var(wji)=M11,(2.44)
这意味着 w j i ℓ w^ℓ_{ji} wji 的方差与 ℓ−1 层的宽度成反比.

现在,只有在 M ℓ = M ℓ − 1 M_ℓ = M_{ℓ−1} M=M1 的情况下 (即当任意两个连续层的宽度相同时),(2.43)和(2.44)同时满足。 由于这个条件限制太多,一个有利可图的折衷方案是取两者的调和平均值,在这种情况下有 Var ( w j i ℓ ) = 2 M ℓ + M ℓ − 1 . \text{Var} ( w _ { j i } ^ { \ell } ) = \frac { 2 } { M _ { \ell } + M _ { \ell - 1 } } . Var(wji)=M+M12.

再次, 我们得到两个具有实际意义的结论:

  1. 如果 w j i ℓ w^{\ell}_{ji} wji是从正态分布中得出的, 那么 w j i ℓ ∼ N ( 0 , 2 M ℓ + M ℓ − 1 ) w _ { j i } ^ { \ell } \sim \mathcal{N} ( 0 , \frac { 2 } { M _ { \ell } + M _ { \ell - 1 } } ) wjiN(0,M+M12)
  2. 如果 w j i ℓ w^{\ell}_{ji} wji是从均匀分布中得出的, 因为 U [ − a , a ] U[-a, a] U[a,a]的方差是 a 2 3 \frac{a^2}{3} 3a2, 所以有 w j i ℓ ∼ U [ − 6 M ℓ + M ℓ − 1 , 6 M ℓ + M ℓ − 1 ] w _ { j i } ^ { \ell } \sim U \left[ - \frac { \sqrt { 6 } } { \sqrt { M _ { \ell} + M _ { \ell - 1 } } } , \frac { \sqrt { 6 } } { \sqrt { M _ { \ell}+ M _ { \ell- 1 } } } \right] wjiU[M+M1 6 ,M+M1 6 ]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/3580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抖音小店运营过程中,每天必须要做的7件事情!少一件都不行!

大家好&#xff0c;我是电商小V 最近很多新手小伙伴刚做店&#xff0c;操作抖音小店每天需要做的事情都是哪些呢&#xff1f;感觉自己一天很忙&#xff0c;但是也没有忙出来结果&#xff0c;思绪很乱&#xff0c;关于这个问题咱们今天就来详细的说一下&#xff0c;给你们梳理总…

02 贪吃蛇

前言 呵呵 这是不知道 在哪里看到的 别人做的一个贪吃蛇 因此 也把我 之前的 贪吃蛇 移植上来了 当然 这个不过是为了 简单的入门了解, 呵呵 然后 c版本的贪吃蛇 需要先移植成 c 版本, 然后 再根据 单片机相关 设计调整 比如 led 点阵的输出, 比如 c99 语法的一些不兼容…

12 c++版本的坦克大战

前言 呵呵 这大概是 大学里面的 c 贪吃蛇了吧 有一些 面向对象的理解, 但是不多 这里 具体的实现 就不赘述, 仅仅是 发一下代码 以及 具体的使用 坦克大战 #include<iostream> #include<windows.h> #include<conio.h> #include<ctime> #include…

Python编程的终极十大工具

Python一直以来都是程序员们的首选编程语言之一&#xff0c;其灵活性和功能强大的库使其成为解决各种问题的理想选择。在本文中&#xff0c;我们将介绍Python编程的终极十大工具&#xff0c;这些工具可以帮助您在各种领域取得成功&#xff0c;无论您是初学者还是经验丰富的开发…

面试(四)

目录 1. 组长安排了一个不可能完成的任务&#xff0c;怎么拒绝&#xff1f; 2.讲一下Freertos的机器人 3. Freertos的中断 4. Freertos功能 5. 树莓派怎么识别二维码&#xff1f; 6. Linux脚本作用&#xff1f; 7. Modbus&#xff1f; 8. freertos的动态创建和静态创建…

【C++】C++的内存管理

目录 内存分布 动态内存管理 C语言的动态内存管理 C的动态内存管理 对内置类型操作 对自定义类型操作 new[]和delete[] 开空间的细节 探讨匹配问题 定位new表达式 内存分布 栈&#xff1a;存放非静态局部变量&#xff0c;函数参数&#xff0c;返回值等。栈是向下增长…

【数字电路与系统】【北京航空航天大学】实验:时序逻辑设计——三色灯开关(五)、小结

本次实验&#xff08;一&#xff09;见博客&#xff1a;【数字电路与系统】【北京航空航天大学】实验&#xff1a;时序逻辑设计——三色灯开关&#xff08;一&#xff09;、实验指导书 本次实验&#xff08;二&#xff09;见博客&#xff1a;【数字电路与系统】【北京航空航天…

大语言模型——涌现能力

在现有文献中,大语言模型的涌现能力被非形式化定义为在小型模型中不存在但在大模型中出现的能力”,具体是指当模型扩展到一定规模时,模型的特定任务性能突然出现显著跃升的趋势,远超过随机水平。类比而言,这种性能涌现模式与物理学中的相变现象有一定程度的相似,但是仍然…

如何在Android应用中安全地使用SQLite数据库,并通过SQLCipher进行加密保护

Android内置SQLite轻量级关系型数据库,可以在Android应用中存储、检索和管理结构化数据。SQLite是一个无服务器的、零配置的、事务性的SQL数据库引擎,非常适合用于移动设备和桌面应用程序中。 SQLite特点: 「轻量级」:SQLite不需要单独的服务器进程或操作系统级别的配置。…

Vim学习笔记01~04

第01章&#xff1a; 遁入空门&#xff0c;模式当道 1.什么是vim Vim是一个高效的文本编辑工具&#xff0c;并且可以在编程开发过程中发挥越来越重要的作用。 事实上&#xff0c;有不少编程高手使用他们来进行代码的开发&#xff0c;并且对此赞不绝口。 2.本系列目的 但是让…

微信小程序按钮点击时的样式hover-class=“hover“

小程序的button组件很好用&#xff0c;按钮点击的时候会显示点击状态&#xff0c;默认的就是颜色加深 但是我们改变了button的背景色之后&#xff0c;就看不出点击效果了&#xff0c;解决起来也很简单 关键代码就是小程序的 hover-class 属性&#xff0c;需要注意的是&#xff…

C 语言实例 - 计算 int, float, double 和 char 字节大小

使用 sizeof 操作符计算int, float, double 和 char四种变量字节大小。 sizeof 是 C 语言的一种单目操作符&#xff0c;如C语言的其他操作符、–等&#xff0c;它并不是函数。 sizeof 操作符以字节形式给出了其操作数的存储大小。 #include <stdio.h>int main() {int …

代码随想录算法训练营Day8 | ● 344.反转字符串● 541. 反转字符串II● 54.替换数字● 151.翻转字符串里的单词● 55.右旋转字符串

&#xff08;记得重学&#xff09; ● 344.反转字符串 题目&#xff1a;编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一…

让Springboot JpaAuditing 支持ZonedDateTime

我们项目需要支持国际化&#xff0c;那么日期时间就需要有时区了&#xff0c;否则我们在今天早上9点干的事&#xff0c;人家美国人看到的是明天的时间。所以我们在Auditable中的创建时间和更新时间我们都定义为ZonedDateTime. 然而在保存的时候却抛出如下错误&#xff1a; Cau…

Qt [获取Dump] 使用WindowsAPI实现生成MiniDump文件

说明 客户现场的软件偶发崩溃是程序开发者&#xff0c;比较头疼的事情。如何更快速的定位到问题点和解决掉&#xff0c;是开发应该具备的基本能力。 Windows提供了一系列的API&#xff0c;可以记录软件崩溃前的堆栈信息。下面就实现一个生成Dump文件的程序实例。 主要代码 回…

计算机系列之输入输出、中断、总线、可靠性、操作系统、进程管理、同步互斥

9、输入输出-中断-总线-可靠性 1、输入输出技术、中断 1、内存与接口地址的编址方法&#xff08;了解概念即可&#xff09; 计算机系统中存在多种内存与接口地址的编址方法&#xff0c;常见的是下面两种&#xff1a;&#xff08;了解概念即可&#xff09; 1&#xff09;内存…

ai大模型应用开发

随着人工智能技术的飞速发展&#xff0c;AI大模型应用开发已成为一个日益重要的领域。本文将从专业角度深入探讨AI大模型的应用开发&#xff0c;并思考其未来的深度影响和逻辑性。 编辑搜图 请点击输入图片描述&#xff08;最多18字&#xff09; ​【一、AI大模型的定义与特点…

Practice Exam: Oracle Cloud Infrastructure Generative AI Professional

Practice Exam: Oracle Cloud Infrastructure Generative AI Professional 1. In the simplified workflow for managing and querying vector data, what is the role of indexing?2. In which scenario is soft prompting appropriate compared to other training styles?3…

ASP.NET Core 3 高级编程(第8版) 学习笔记 03

本篇介绍原书的第 18 章&#xff0c;为 19 章 Restful Service 编写基础代码。本章实现了如下内容&#xff1a; 1&#xff09;使用 Entity Framework Core 操作 Sql Server 数据库 2&#xff09;Entity Framework Core 数据库迁移和使用种子数据的方法 3&#xff09;使用中间件…

Babylon.js 读取GLB模型元数据

如果你熟悉将 3D 资源导出到游戏引擎的过程&#xff0c;那么无疑也会熟悉 3D 资源的 PBR 和 GLB 导出过程。 这是我们之前概述的内容&#xff0c;也是我们交互式工作的所有资产准备的基石。 然而&#xff0c;从传统的管道意义上来说&#xff0c;能够用元数据标记网格有很多逻辑…