《neural network and deep learning》题解——ch02 反向传播

重磅推荐专栏: 《Transformers自然语言处理系列教程》
手把手带你深入实践Transformers,轻松构建属于自己的NLP智能应用!

http://blog.csdn.net/u011239443/article/details/74859614

2.4 反向传播的四个基本方程

( B P 1 ) : δ L = ∇ a C ⊙ σ ′ ( z L ) \large \color{blue}{ (BP1):δ ^L = ∇ _a C ⊙ σ ′ (z ^L ) } (BP1)δL=aCσ(zL)
( B P 2 ) : δ l = ( ( w l + 1 ) T δ l + 1 ) ⊙ σ ′ ( z l ) \large \color{blue}{ (BP2):δ ^l = ((w ^{l+1} ) ^T δ ^{l+1} ) ⊙ σ ′ (z^ l )} (BP2):δl=((wl+1)Tδl+1)σ(zl)
( B P 3 ) : ∂ C ∂ b l j = δ j l \large \color{blue}{ (BP3): \frac{∂C}{ ∂b_{lj} } = δ_j^l} (BP3):bljC=δjl
( B P 4 ) : ∂ C ∂ w j k l = a k l − 1 δ j l \large \color{blue}{ (BP4): \frac{∂C}{ ∂w^l_{jk} } = a_k^{l-1}δ_j^l} (BP4):wjklC=akl1δjl

问题一:

另一种反向传播方程的表示方式: 我已经给出了使用 Hadamard 乘积的反向传播的公式(尤其是 (BP1) 和 (BP2))。如果你对这种特殊的乘积不熟悉,可能会有一些困惑。下面还有一种表示方式,那就是基于传统的矩阵乘法,某些读者可能会觉得很有启发。(1)证明(BP1) 可以写成:

δ L = Σ ′ ( z L ) ∇ a C \large \color{blue}{ δ^L = Σ ′ (z^L )∇_a C} δL=Σ′(zL)aC

其中$ Σ ′ (z^L ) 是一个方阵 , 其对⻆线的元素是 是一个方阵,其对⻆线的元素是 是一个方阵,其对线的元素是σ ′ (z_j^L )$,其他的元素均是 0。注意,这个矩阵通过一般的矩阵乘法作用在 ∇ a C ∇_a C aC 上。

设: ∇ a C = ( c 1 c 2 . . . c n ) \large \color{blue}{ 设 :∇ _a C = \begin{pmatrix} c1\\ c2\\...\\cn \end{pmatrix} } 设:aC= c1c2...cn
σ ′ ( z L ) = ( σ 1 σ 2 . . . σ n ) \large \color{blue}{σ ′ (z ^L ) = \begin{pmatrix} σ1\\ σ2\\...\\σn \end{pmatrix} } σ(zL)= σ1σ2...σn
$\large \color{blue}{则: (BP1):δ ^L = ∇ _a C ⊙ σ ′ (z ^L ) = \begin{pmatrix} c1σ1\ c2σ2\…\cnσn \end{pmatrix} } $

$\large \color{blue}{ 由: Σ ′ (z^L ) =
\begin{pmatrix}
σ_1\
&σ_2 & & \text{0}\
&&…\
& \text{0} &&σ_{n-1}\
&&&& σ_n
\end{pmatrix}
} $
得: Σ ′ ( z L ) ∇ a C = ( σ 1 σ 2 0 … 0 σ n − 1 σ n ) ( c 1 c 2 . . . c n ) = ( c 1 σ 1 c 2 σ 2 . . . c n σ n ) = δ L \large \color{blue}{得: Σ ′ (z^L )∇_a C = \begin{pmatrix} σ_1\\ &σ_2 & & \text{0}\\ &&…\\ & \text{0} &&σ_{n-1}\\ &&&& σ_n \end{pmatrix} \begin{pmatrix} c1\\ c2\\...\\cn \end{pmatrix} = \begin{pmatrix} c1σ1\\ c2σ2\\...\\cnσn \end{pmatrix} = δ^L} 得:Σ′(zL)aC= σ1σ200σn1σn c1c2...cn = c1σ1c2σ2...cnσn =δL

问题二:

证明 (BP2) 可以写成

δ l = Σ ′ ( z l ) ( w l + 1 ) T δ l + 1 \large \color{blue}{ δ^l = Σ ′ (z^l )(w^l+1 )^T δ^{l+1}} δl=Σ′(zl)(wl+1)Tδl+1

设: w = ( w 1 , w 2 , . . . , w n ) \large \color{blue}{ 设 :w = \begin{pmatrix} w1, w2,...,wn \end{pmatrix} } 设:w=(w1,w2,...,wn)
δ = ( δ 1 δ 2 . . . δ n ) \large \color{blue}{ δ = \begin{pmatrix} δ1\\ δ2\\...\\δn \end{pmatrix} } δ= δ1δ2...δn
则: δ l = ( w 1 δ 1 σ 1 w 2 δ 2 σ 1 . . . w n δ n σ n ) \large \color{blue}{ 则:δ^l = \begin{pmatrix} w1δ1σ1\\ w2δ2σ1\\...\\wnδnσn \end{pmatrix} } 则:δl= w1δ1σ1w2δ2σ1...wnδnσn

Σ ′ ( z l ) ( w l + 1 ) T δ l + 1 = ( σ 1 σ 2 0 … 0 σ n − 1 σ n ) ( w 1 w 2 . . . w n ) ( δ 1 δ 2 . . . δ n ) = ( w 1 δ 1 σ 1 w 2 δ 2 σ 1 . . . w n δ n σ n ) = δ l \large \color{blue}{ Σ ′ (z^l )(w^l+1 )^T δ^{l+1} = \begin{pmatrix} σ_1\\ &σ_2 & & \text{0}\\ &&…\\ & \text{0} &&σ_{n-1}\\ &&&& σ_n \end{pmatrix} \begin{pmatrix} w1\\ w2\\...\\wn \end{pmatrix}\begin{pmatrix} δ1\\ δ2\\...\\δn \end{pmatrix}= \begin{pmatrix} w1δ1σ1\\ w2δ2σ1\\...\\wnδnσn \end{pmatrix} = δ^l } Σ′(zl)(wl+1)Tδl+1= σ1σ200σn1σn w1w2...wn δ1δ2...δn = w1δ1σ1w2δ2σ1...wnδnσn =δl

问题三

结合(1)和(2)证明
δ l = Σ ′ ( z l ) ( w l + 1 ) T . . . Σ ′ ( z L − 1 ) ( w L ) T Σ ′ ( z L ) ∇ a C δ^l = Σ ′ (z^l )(w^{l+1})^T . . . Σ ′ (z^{L−1} )(w^L )^T Σ ′ (z^L )∇_a C δl=Σ′(zl)(wl+1)T...Σ′(zL1)(wL)TΣ′(zL)aC

δ l = Σ ′ ( z l ) ( w l + 1 ) T δ l + 1 \large \color{blue}{ δ^l = Σ ′ (z^l )(w^{l+1} )^T δ^{l+1}} δl=Σ′(zl)(wl+1)Tδl+1

= Σ ′ ( z l ) ( w l + 1 ) T Σ ′ ( z l + 1 ) ( w l + 2 ) T δ l + 2 \large \color{blue}{= Σ ′ (z^l )(w^{l+1} )^TΣ ′ (z^{l+1} )(w^{l+2} )^T δ^{l+2} } =Σ′(zl)(wl+1)TΣ′(zl+1)(wl+2)Tδl+2

= . . . = Σ ′ ( z l ) ( w l + 1 ) T . . . Σ ′ ( z L − 1 ) ( w L ) T δ L \large \color{blue}{= ... = Σ ′ (z^l )(w^{l+1})^T . . . Σ ′ (z^{L−1} )(w^L )^Tδ^L} =...=Σ′(zl)(wl+1)T...Σ′(zL1)(wL)TδL

= Σ ′ ( z l ) ( w l + 1 ) T . . . Σ ′ ( z L − 1 ) ( w L ) T Σ ′ ( z L ) ∇ a C \large \color{blue}{ = Σ ′ (z^l )(w^{l+1})^T . . . Σ ′ (z^{L−1} )(w^L )^T Σ ′ (z^L )∇_a C} =Σ′(zl)(wl+1)T...Σ′(zL1)(wL)TΣ′(zL)aC

2.5 四个基本方程的证明

问题一

证明方程 (BP3) 和 (BP4)。

  • (BP3)

$\large \color{blue}{ δ_j^l = \frac{∂C}{∂b^l_j} \frac{∂bl_j}{∂zl_j} = \frac{∂C}{∂b^l_j} \frac{∂(z_j^{l} - \sum_kw_{jk}{l}a{l-1}_k)}{∂z^l_j} = \frac{∂C}{∂b^l_j}} $

  • (BP4)

∂ C ∂ w j k l = a k l − 1 δ j l = > ∂ C ∂ w j k l = a k l − 1 ∂ C ∂ z j l = > ∂ z j l ∂ w j k l = a k l − 1 \large \color{blue}{ \frac{∂C}{ ∂w^l_{jk} }= a_k^{l-1}δ_j^l => \frac{∂C}{ ∂w^l_{jk} }= a_k^{l-1}\frac{∂C}{∂z^l_j} => \frac{∂z^l_j}{ ∂w^l_{jk} }= a_k^{l-1} } wjklC=akl1δjl=>wjklC=akl1zjlC=>wjklzjl=akl1

由于 ∂ z j l ∂ w j k l = ∂ ( ∑ j w j k l a k l − 1 + b j l ) ∂ w j k l = a k l − 1 , 所以命题成立。 \large \color{blue}{ 由于 \frac{∂z^l_j}{ ∂w^l_{jk} }= \frac{∂(\sum_jw_{jk}^la_k^{l-1}+b_j^{l})}{ ∂w^l_{jk} } = a_k^{l-1} ,所以命题成立。} 由于wjklzjl=wjkl(jwjklakl1+bjl)=akl1,所以命题成立。

#2.6 反向传播算法

问题一

使用单个修正的神经元的反向传播。假设我们改变一个前馈网络中的单个神经元,使得那个神经元的输出是 f ( ∑ j w j x j + b ) f (\sum_j w_j x_j + b) f(jwjxj+b),其中 f 是和 S 型函数不同的某一函数。我们如何调整反向传播算法?

把$ σ() 换成 换成 换成f()$

问题二

线性神经元上的反向传播假设我们将非线性神经元的 σ 函数替换为 σ(z) = z。重写反向传播算法。

(2)中 a l = z l a^l = z^l al=zl
(3)中 δ L = ∇ a C δ^L = ∇_a C δL=aC
(4)中 δ l = ( ( w l + 1 ) T δ l + 1 ) δ^l = ((w^l+1 )^T δ^{l+1} ) δl=((wl+1)Tδl+1)

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小爷毛毛(卓寿杰)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值