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

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

  • 表达式一
    ∂ 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) 进行求导并代入原式,就从第一个表达式推导出了第二个表达式。

相关推荐
聆风吟º4 小时前
CANN runtime 实战指南:异构计算场景中运行时组件的部署、调优与扩展技巧
人工智能·神经网络·cann·异构计算
你撅嘴真丑7 小时前
第九章-数字三角形
算法
聆风吟º7 小时前
CANN runtime 全链路拆解:AI 异构计算运行时的任务管理与功能适配技术路径
人工智能·深度学习·神经网络·cann
uesowys7 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
AI_56787 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
ValhallaCoder7 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
董董灿是个攻城狮7 小时前
AI 视觉连载1:像素
算法
智驱力人工智能8 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
孞㐑¥9 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法
月挽清风9 小时前
代码随想录第十五天
数据结构·算法·leetcode