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

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

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

相关推荐
hahaha60164 分钟前
HLS高层次综合设计--axi之burst纠偏
开发语言·算法·fpga开发·c#
hans汉斯9 分钟前
【计算机科学与应用】基于联合熵驱动改进麻雀搜索优化VMD的DAS信号去噪方法
深度学习·算法·yolo·软件工程·汉斯出版社
词却12 分钟前
机器学习入门:手写数字识别与算法对比
人工智能·算法·机器学习
张欣-男39 分钟前
3分钟理解线性代数
线性代数·算法
白狐_79843 分钟前
408 数据结构|外部排序优化:怎么减少时间开销
数据结构·算法
小白说大模型43 分钟前
Hermes 全配置指南:从裸版到 AI Agent 天花板
大数据·人工智能·学习·算法·机器学习·数据挖掘
在所不辞兄1 小时前
【神经网络干货】可穿戴电子皮肤正在从“单点传感”走向“多通道、多模态、连续监测”
人工智能·神经网络·机器学习·数据挖掘
a187927218311 小时前
【算法】动态规划入门:从打家劫舍到状态设计的三堂课
算法·leetcode·动态规划·dp·回溯·暴力
淡海水11 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
leobertlan11 小时前
好玩系列:训练一个神经网络模型指导小孩玩游戏2-大局观教练
算法