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

server/2024/9/20 8:59:09/ 标签: 神经网络, 网络, 人工智能

(文章的主要内容来自电科的顾亦奇老师的 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.ppmy.cn/server/16810.html

相关文章

git忽略文件.gitignore如何使用?

创建 .gitignore 文件 首先&#xff0c;在你的项目根目录下创建一个名为 .gitignore 的文件。可以通过命令行或者你的编辑器来创建这个文件。 打开 .gitignore 文件&#xff0c;你可以将以下内容粘贴到文件中&#xff1a; 忽略编译生成的文件 *.class *.jar *.war忽略系统文件…

L2-052 吉利矩阵

题目描述 题解思路 这个道题就是很简单&#xff0c;就跟n皇后问题一样&#xff0c;给矩阵填数&#xff0c;使得矩阵满足一个什么条件&#xff0c;最后求方案数或者方案。很容易想到回溯法&#xff0c;根据数据范围&#xff0c;应该能够确定回溯法是没有问题的。 我们只需要枚举…

(九)Pandas表格样式 学习简要笔记 #Python #CDA学习打卡

目录 一. Pandas表格样式 1&#xff09;举例数据 2&#xff09;字体颜色 3&#xff09;背景高亮 4&#xff09;极值背景高亮 &#xff08;a&#xff09;高亮最大值 highlight_max() &#xff08;b&#xff09;高亮最小值 highlight_min() &#xff08;c&#xff09;同时…

ubuntu22.04 CH340/CH34x 驱动安装

CH34x驱动地址&#xff1a;CH341SER_LINUX.ZIP - 南京沁恒微电子股份有限公司 1、卸载旧驱动&#xff08;如果存在&#xff09; sudo rmmod ch341.ko 2、解压进入 driver 目录 unzip CH341SER_LINUX.ZIP cd CH341SER_LINUX/driver 3、编译 make 可能错误&#xff1a; make[1]…

npm包管理器

npm&#xff08;Node Package Manager&#xff09;是Node.js的包管理器&#xff0c;用于安、发布和管理JavaScript模块。它是世界上最大的开源软件注册表&#xff0c;拥有超过100万个包供开发者使用。 使用npm可以轻松地安装和管理项目所需的各种模块。下面是npm包管理器的一些…

Mybatis入门(入门案例,IDEA配置SQL提示,JDBC介绍,lombok介绍)

目录 一、Mybatis入门案例介绍整体步骤创建SpringBoot项目pom依赖准备测试数据新建实体类配置Mybatis数据库连接信息新建接口类,编写SQL代码单元测试 二、IDEA配置SQL提示三、JDBC是什么案例JDBC和Mybatis对比 四、数据库连接池介绍如何实现一个数据库连接池切换数据库连接池 五…

CentOS 7虚拟机配置过程中所需组件的安装(二)

1.安装net-tools组件&#xff08;解决无 ifconfig&#xff09; # yum install net-tools 2.安装gcc、c编译器以及内核文件 # yum -y install gcc gcc-c kernel-devel 验证安装成功 3.安装nano&#xff08;文本编辑器&#xff09; # yum install nano

英特尔数据中心渠道业务部总经理蒋健一行到访Gooxi

4月16日&#xff0c;英特尔数据中心渠道业务部总经理蒋健一行到访Gooxi&#xff0c;在Gooxi公司董事长兼总裁赵士亮等领导陪同下参观了深圳研发总部并进行深入交流&#xff0c;详细了解Gooxi在Intel产品线的业务布局、产品研发、市场营销等领域的合作成果。 Gooxi公司董事长兼总…

Day09-Java进阶-集合体系通用遍历方式List集合数据结构ArrayList-LinkedList

1. 集合体系结构 1.1 集合体系结构介绍 1.2 Collection 的使用 package com.itheima.domain;import java.util.Objects;public class Student {private String name;private int age;Overridepublic boolean equals(Object o) {if (this o) return true;if (o null || getCl…

机器学习day3

一、距离度量 1.欧氏距离 2.曼哈顿距离 3.切比雪夫距离 4.闵可夫斯基距离 二、特征与处理 1.数据归一化 数据归一化是一种将数据按比例缩放&#xff0c;使之落入一个小的特定区间的过程。 代码实战 运行结果 2.数据标准化 数据标准化是将数据按照其均值和标准差进行缩放的过…

如何解决Servlet异常:深入解析`NumberFormatException`

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

Redis缓存淘汰策略分析

一、概述 redis缓存是在内存中保存数据&#xff0c;避免业务从数据库中读取数据&#xff0c;从而提升系统的响应速度&#xff0c;而redis缓存淘汰是指当缓存数据达到一定容量时&#xff0c;为了给新的数据腾出空间&#xff0c;需要按照一定的策略从缓存中移除旧的数据。 二、r…

每日两题 / 46. 全排列 41. 缺失的第一个正数(LeetCode热题100)

46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 经典回溯题&#xff0c;每次搜索选择未选择数字中的一个 当选择了n个数时&#xff0c;将已经选择的数加入答案 class Solution { public:vector<vector<int>> permute(vector<int>& nums) {vector…

图论应用——拓扑排序

拓扑排序的原理和宽度优先搜索差不多 #include <iostream> #include <cstring> #include <algorithm> using namespace std;const int N 100010; int n,m; int h[N],e[N],ne[N],idx; int q[N],d[N];void add(int a,int b) {e[idx]b,ne[idx]h[a],h[a]idx; }…

外包干了9天,技术退步明显。。。。。

时光荏苒&#xff0c;转眼我已是一个拥有近四年功能测试经验的大专生。19年&#xff0c;我满怀激情地通过校招进入湖南某知名软件公司&#xff0c;期待在这里开启我的职业生涯。然而&#xff0c;长时间的舒适环境让我渐渐失去了前进的动力&#xff0c;技术停滞不前&#xff0c;…

李沐66_使用注意力机制的seq2seq——自学笔记

加入注意力 1.编码器对每次词的输出作为key和value 2.解码器RNN对上一个词的输出是query 3.注意力的输出和下一个词的词嵌入合并进入RNN 一个带有Bahdanau注意力的循环神经网络编码器-解码器模型 总结 1.seq2seq通过隐状态在编码器和解码器中传递信息 2.注意力机制可以根…

linux DNS域名解析服务

目录 一.DNS DNS系统的作用 域名结构&#xff1a; 根域 顶级域 二级域 子域 主机 二.DNS解析过程 迭代查询&#xff1a; 递归查询&#xff1a; 三.实验模拟 主、从服务器设置 1.搭建本地DNS服务器------(主服务器配置) 1&#xff09;初始化系统 ​编辑2&#xf…

redis模糊查询redis中的key

redis模糊查询redis中的key 方式一&#xff1a;使用keys命令 /*** 查找匹配的key** param pattern* return*/ public Set<String> keys(String pattern) {return redisTemplate.keys(pattern); }方式二&#xff1a;使用san命令 /*** 查找匹配的key** param pattern* r…

一个网络空间安全的小游戏

为了编写一个网络空间安全的小游戏&#xff0c;我们可以模拟一些基本的网络安全概念&#xff0c;如防火墙、入侵检测、病毒清理等。以下是一个简单的Python小游戏示例&#xff0c;其中玩家需要保护自己的网络免受攻击。 python复制代码 import random class Network: def __…

R可视化:桑基图展示数据层流动

介绍 以桑基图形式展示数据分布情况 加载R包 knitr::opts_chunk$set(message = FALSE, warning = FALSE) library(tidyverse) library(ggalluvial)# rm(list = ls()) options(stringsAsFactors = F) options(future.globals.maxSize = 10000 * 1024^2) 导入数据 metadata…