跟着GPT学习——反向传播演算(隐藏层梯度推导)

我觉得GPT老师的语言功底比大多数的博客主要好(包括我自己),阅读起来更易理解,而且哪里不明白还可以直接问gpt老师,孜孜不倦,尽心尽责,全天待命,究极贴心。有这么厉害的一个老师,不学习简直暴殄天物。

于是乎我准备立一个flag,挑战跟着GPT老师学习365天,每天我都会整理自己的学习心得和脉络(文字大部分都是GPT直接生成的,我觉得比我自己写肯定好多了)感谢gpt老师!跪谢

全系列文章:跟着GPT学习-AI系列

前一篇文章整理了单个神经元输出层的权重推导,接下来将整理单个神经元隐藏层的权重推导。

🤖 推导隐藏层的权重更新公式

假设隐藏层只有一个神经元,我们将基于此单个隐藏层神经元推导其梯度。这将有助于理解反向传播算法在单个神经元情况下的工作机制。

隐藏层的梯度 ∂ C ∂ a ( l ) \frac{\partial C}{\partial a^{(l)}} a(l)C递推公式:
对于任意隐藏层 l l l,使用链式法则递推计算梯度:
∂ C ∂ a ( l ) = ∂ C ∂ z ( l + 1 ) ⋅ ∂ z ( l + 1 ) ∂ a ( l ) \frac{\partial C}{\partial a^{(l)}} = \frac{\partial C}{\partial z^{(l+1)}} \cdot \frac{\partial z^{(l+1)}}{\partial a^{(l)}} a(l)C=z(l+1)Ca(l)z(l+1)
由于:
∂ z ( l + 1 ) ∂ a ( l ) = w ( l + 1 ) \frac{\partial z^{(l+1)}}{\partial a^{(l)}} = w^{(l+1)} a(l)z(l+1)=w(l+1)
所以:
∂ C ∂ a ( l ) = ∂ C ∂ z ( l + 1 ) ⋅ w ( l + 1 ) \frac{\partial C}{\partial a^{(l)}} = \frac{\partial C}{\partial z^{(l+1)}} \cdot w^{(l+1)} a(l)C=z(l+1)Cw(l+1)

隐藏层加权输入 ∂ C ∂ z ( l ) \frac{\partial C}{\partial z^{(l)}} z(l)C的梯度:
∂ C ∂ z ( l ) = ∂ C ∂ a ( l ) ⋅ σ ′ ( z ( l ) ) \frac{\partial C}{\partial z^{(l)}} = \frac{\partial C}{\partial a^{(l)}} \cdot \sigma'(z^{(l)}) z(l)C=a(l)Cσ(z(l))
代入上一步结果:
∂ C ∂ z ( l ) = ( ∂ C ∂ z ( l + 1 ) ⋅ w ( l + 1 ) ) ⋅ σ ′ ( z ( l ) ) \frac{\partial C}{\partial z^{(l)}} = \left( \frac{\partial C}{\partial z^{(l+1)}} \cdot w^{(l+1)} \right) \cdot \sigma'(z^{(l)}) z(l)C=(z(l+1)Cw(l+1))σ(z(l))

隐藏层权重 ∂ C ∂ w ( l ) \frac{\partial C}{\partial w^{(l)}} w(l)C的梯度:
∂ C ∂ w ( l ) = ∂ C ∂ z ( l ) ⋅ ∂ z ( l ) ∂ w ( l ) \frac{\partial C}{\partial w^{(l)}} = \frac{\partial C}{\partial z^{(l)}} \cdot \frac{\partial z^{(l)}}{\partial w^{(l)}} w(l)C=z(l)Cw(l)z(l)
∂ z ( l ) ∂ w ( l ) = a ( l − 1 ) \frac{\partial z^{(l)}}{\partial w^{(l)}} = a^{(l-1)} w(l)z(l)=a(l1)
所以:
∂ C ∂ w ( l ) = ∂ C ∂ z ( l ) ⋅ a ( l − 1 ) = ( ∂ C ∂ z ( l + 1 ) ⋅ w ( l + 1 ) ) ⋅ σ ′ ( z ( l ) ) ⋅ a ( l − 1 ) \frac{\partial C}{\partial w^{(l)}} = \frac{\partial C}{\partial z^{(l)}} \cdot a^{(l-1)} = \left( \frac{\partial C}{\partial z^{(l+1)}} \cdot w^{(l+1)} \right) \cdot \sigma'(z^{(l)}) \cdot a^{(l-1)} w(l)C=z(l)Ca(l1)=(z(l+1)Cw(l+1))σ(z(l))a(l1)

📈 对于权重w的最终梯度公式

对于任意隐藏层 l l l中的权重 w ( l ) w^{(l)} w(l),梯度公式为:
∂ C ∂ w ( l ) = ( ∂ C ∂ z ( l + 1 ) ⋅ w ( l + 1 ) ) ⋅ σ ′ ( z ( l ) ) ⋅ a ( l − 1 ) \frac{\partial C}{\partial w^{(l)}} = \left( \frac{\partial C}{\partial z^{(l+1)}} \cdot w^{(l+1)} \right) \cdot \sigma'(z^{(l)}) \cdot a^{(l-1)} w(l)C=(z(l+1)Cw(l+1))σ(z(l))a(l1)
对于输出层的权重梯度公式为:
∂ C ∂ w ( L ) = ( a ( L ) − y ) ⋅ σ ′ ( z ( L ) ) ⋅ a ( L − 1 ) \frac{\partial C}{\partial w^{(L)}} = \left( a^{(L)}-y\right) \cdot \sigma'(z^{(L)}) \cdot a^{(L-1)} w(L)C=(a(L)y)σ(z(L))a(L1)

对于偏置量b的最终梯度公式:

由于 Z ( L ) = w ( L ) ⋅ a ( L − 1 ) + b ( L ) Z^{(L)} = w^{(L)} \cdot a^{(L-1)} + b^{(L)} Z(L)=w(L)a(L1)+b(L)

所以将上面公式中的z对于w求导结果 a ( L − 1 ) a^{(L-1)} a(L1) 都换成z对于b求导的1即可。
所以:
对于任意隐藏层 l l l中的权重 b ( l ) b^{(l)} b(l),梯度公式为:
∂ C ∂ w ( l ) = ( ∂ C ∂ z ( l + 1 ) ⋅ w ( l + 1 ) ) ⋅ σ ′ ( z ( l ) ) \frac{\partial C}{\partial w^{(l)}} = \left( \frac{\partial C}{\partial z^{(l+1)}} \cdot w^{(l+1)} \right) \cdot \sigma'(z^{(l)}) w(l)C=(z(l+1)Cw(l+1))σ(z(l))
对于输出层的权重梯度公式为:
∂ C ∂ w ( L ) = ( a ( L ) − y ) ⋅ σ ′ ( z ( L ) ) \frac{\partial C}{\partial w^{(L)}} = \left( a^{(L)}-y\right) \cdot \sigma'(z^{(L)}) w(L)C=(a(L)y)σ(z(L))

多个神经元的通用梯度公式

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

对于隐藏层中具有多个神经元的情况,通用梯度公式如下:

1. 对于任意隐藏层 l l l 中的权重 w i j ( l ) w_{ij}^{(l)} wij(l),梯度公式为:

∂ C ∂ w i j ( l ) = ( ∑ k ∂ C ∂ z k ( l + 1 ) ⋅ w j k ( l + 1 ) ) ⋅ σ ′ ( z j ( l ) ) ⋅ a i ( l − 1 ) \frac{\partial C}{\partial w_{ij}^{(l)}} = \left( \sum_{k} \frac{\partial C}{\partial z_k^{(l+1)}} \cdot w_{jk}^{(l+1)} \right) \cdot \sigma'(z_j^{(l)}) \cdot a_i^{(l-1)} wij(l)C=(kzk(l+1)Cwjk(l+1))σ(zj(l))ai(l1)

2. 对于输出层的权重 w i j ( L ) w_{ij}^{(L)} wij(L),梯度公式为:

∂ C ∂ w i j ( L ) = ( a j ( L ) − y j ) ⋅ σ ′ ( z j ( L ) ) ⋅ a i ( L − 1 ) \frac{\partial C}{\partial w_{ij}^{(L)}} = (a_j^{(L)} - y_j) \cdot \sigma'(z_j^{(L)}) \cdot a_i^{(L-1)} wij(L)C=(aj(L)yj)σ(zj(L))ai(L1)

3. 对于任意隐藏层 l l l 中的偏置 b j ( l ) b_j^{(l)} bj(l),梯度公式为:

∂ C ∂ b j ( l ) = ( ∑ k ∂ C ∂ z k ( l + 1 ) ⋅ w j k ( l + 1 ) ) ⋅ σ ′ ( z j ( l ) ) \frac{\partial C}{\partial b_j^{(l)}} = \left( \sum_{k} \frac{\partial C}{\partial z_k^{(l+1)}} \cdot w_{jk}^{(l+1)} \right) \cdot \sigma'(z_j^{(l)}) bj(l)C=(kzk(l+1)Cwjk(l+1))σ(zj(l))

4. 对于输出层的偏置 b j ( L ) b_j^{(L)} bj(L),梯度公式为:

∂ C ∂ b j ( L ) = ( a j ( L ) − y j ) ⋅ σ ′ ( z j ( L ) ) \frac{\partial C}{\partial b_j^{(L)}} = (a_j^{(L)} - y_j) \cdot \sigma'(z_j^{(L)}) bj(L)C=(aj(L)yj)σ(zj(L))

  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值