神经网络中梯度计算求和公式求导问题

以下是公式一推导出公式二的过程。

  • 表达式一
    ∂ E ∂ w j k = − 2 ( t k − o k ) ⋅ sigmoid ( ∑ j w j k ⋅ o j ) ⋅ ( 1 − sigmoid ( ∑ j w j k ⋅ o j ) ) ⋅ ∂ ∂ w j k ( ∑ j w j k ⋅ o j ) \frac{\partial E}{\partial w_{jk}} = -2(t_k - o_k) \cdot \text{sigmoid}\left(\sum_j w_{jk} \cdot o_j\right) \cdot (1 - \text{sigmoid}\left(\sum_j w_{jk} \cdot o_j\right)) \cdot \frac{\partial}{\partial w_{jk}} \left(\sum_j w_{jk} \cdot o_j\right) ∂wjk∂E=−2(tk−ok)⋅sigmoid(j∑wjk⋅oj)⋅(1−sigmoid(j∑wjk⋅oj))⋅∂wjk∂(j∑wjk⋅oj)

  • 表达式二
    ∂ E ∂ w j k = − 2 ( t k − o k ) ⋅ sigmoid ( ∑ j w j k ⋅ o j ) ⋅ ( 1 − sigmoid ( ∑ j w j k ⋅ o j ) ) ⋅ o j \frac{\partial E}{\partial w_{jk}} = -2(t_k - o_k) \cdot \text{sigmoid}\left(\sum_j w_{jk} \cdot o_j\right) \cdot (1 - \text{sigmoid}\left(\sum_j w_{jk} \cdot o_j\right)) \cdot o_j ∂wjk∂E=−2(tk−ok)⋅sigmoid(j∑wjk⋅oj)⋅(1−sigmoid(j∑wjk⋅oj))⋅oj

这是一个关于神经网络中梯度计算的推导问题,主要运用了链式法则来进行求导推导,以下是详细过程:

已知条件

已知要对 ∂ E ∂ w j , k \frac{\partial E}{\partial w_{j,k}} ∂wj,k∂E 进行求导,表达式最初形式为:
∂ E ∂ w j , k = − 2 ( t k − o k ) ⋅ sigmoid ( ∑ j w j , k ⋅ o j ) ( 1 − sigmoid ( ∑ j w j , k ⋅ o j ) ) ⋅ ∂ ( ∑ j w j , k ⋅ o j ) ∂ w j , k \frac{\partial E}{\partial w_{j,k}} = -2(t_{k} - o_{k}) \cdot \text{sigmoid}(\sum_{j} w_{j,k} \cdot o_{j})(1 - \text{sigmoid}(\sum_{j} w_{j,k} \cdot o_{j})) \cdot \frac{\partial (\sum_{j} w_{j,k} \cdot o_{j})}{\partial w_{j,k}} ∂wj,k∂E=−2(tk−ok)⋅sigmoid(j∑wj,k⋅oj)(1−sigmoid(j∑wj,k⋅oj))⋅∂wj,k∂(∑jwj,k⋅oj)

这里 E E E 通常表示误差, t k t_{k} tk 是目标值, o k o_{k} ok 是输出值, w j , k w_{j,k} wj,k 是权重, o j o_{j} oj 是前一层神经元的输出, sigmoid \text{sigmoid} sigmoid 是激活函数。

推导过程

  1. 重点关注 ∂ ( ∑ j w j , k ⋅ o j ) ∂ w j , k \frac{\partial (\sum_{j} w_{j,k} \cdot o_{j})}{\partial w_{j,k}} ∂wj,k∂(∑jwj,k⋅oj) 这一项。
    • 根据求和求导的性质,对于 ∑ j w j , k ⋅ o j \sum_{j} w_{j,k} \cdot o_{j} ∑jwj,k⋅oj,因为只有当 j j j 取特定值时, w j , k w_{j,k} wj,k 才是变量(其他项的 w i , k w_{i,k} wi,k 中 i ≠ j i \neq j i=j 对于当前求导来说是常量)。
    • 那么 ∑ j w j , k ⋅ o j \sum_{j} w_{j,k} \cdot o_{j} ∑jwj,k⋅oj 展开后,对 w j , k w_{j,k} wj,k 求导时,除了包含 w j , k w_{j,k} wj,k 的这一项,其他项都为 0(因为它们相对于 w j , k w_{j,k} wj,k 是常数)。
    • 而包含 w j , k w_{j,k} wj,k 的这一项为 w j , k ⋅ o j w_{j,k} \cdot o_{j} wj,k⋅oj,根据求导公式 ( a x ) ′ = a (ax)^\prime = a (ax)′=a( a a a 为常数, x x x 为变量),对 w j , k ⋅ o j w_{j,k} \cdot o_{j} wj,k⋅oj 关于 w j , k w_{j,k} wj,k 求导,结果就是 o j o_{j} oj。
  2. 将 ∂ ( ∑ j w j , k ⋅ o j ) ∂ w j , k = o j \frac{\partial (\sum_{j} w_{j,k} \cdot o_{j})}{\partial w_{j,k}} = o_{j} ∂wj,k∂(∑jwj,k⋅oj)=oj 代入原式,就得到了第二个表达式:
    ∂ E ∂ w j , k = − 2 ( t k − o k ) ⋅ sigmoid ( ∑ j w j , k ⋅ o j ) ( 1 − sigmoid ( ∑ j w j , k ⋅ o j ) ) ⋅ o j \frac{\partial E}{\partial w_{j,k}} = -2(t_{k} - o_{k}) \cdot \text{sigmoid}(\sum_{j} w_{j,k} \cdot o_{j})(1 - \text{sigmoid}(\sum_{j} w_{j,k} \cdot o_{j})) \cdot o_{j} ∂wj,k∂E=−2(tk−ok)⋅sigmoid(j∑wj,k⋅oj)(1−sigmoid(j∑wj,k⋅oj))⋅oj

综上,通过对 ∂ ( ∑ j w j , k ⋅ o j ) ∂ w j , k \frac{\partial (\sum_{j} w_{j,k} \cdot o_{j})}{\partial w_{j,k}} ∂wj,k∂(∑jwj,k⋅oj) 进行求导并代入原式,就从第一个表达式推导出了第二个表达式。

相关推荐
SatVision炼金士4 分钟前
合成孔径雷达干涉测量(InSAR)沉降监测算法体系
算法
wuweijianlove8 分钟前
算法稳定性与数值误差传播研究的技术2
算法
计算机安禾30 分钟前
【数据结构与算法】第35篇:归并排序与基数排序
c语言·数据结构·vscode·算法·排序算法·哈希算法·visual studio
Captain_Data39 分钟前
Python机器学习sklearn线性模型完整指南:LinearRegression/Ridge/Lasso详细代码注释
python·机器学习·数据分析·线性回归·sklearn
爱码小白42 分钟前
MySQL 单表查询练习题汇总
数据库·python·算法
橘颂TA44 分钟前
【笔试】算法的暴力美学——牛客 NC213140 :除2!
c++·算法·结构与算法
汀、人工智能1 小时前
[特殊字符] 第66课:跳跃游戏
数据结构·算法·数据库架构·图论·bfs·跳跃游戏
汀、人工智能1 小时前
[特殊字符] 第70课:加油站
数据结构·算法·数据库架构·图论·bfs·加油站
wsoz1 小时前
Leetcode普通数组-day5、6
c++·算法·leetcode·数组
y = xⁿ1 小时前
【LeetCode】双指针:同向快慢针
算法·leetcode