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

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

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

相关推荐
叩码以求索14 分钟前
浅谈:算法萌新如何高效刷题应对面试(一)
算法·面试·职场和发展
c238562 小时前
把 C++ 内存分配拆透:new 与 malloc 的三层血缘
开发语言·c++·算法
aaaameliaaa3 小时前
指针之总结
c语言·笔记·算法
宵时待雨3 小时前
优选算法专题9:哈希表
数据结构·算法·散列表
txzrxz3 小时前
最短路问题——Dijkstra 算法
数据结构·c++·算法·最短路·优先队列
gwf2163 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
noipp3 小时前
推荐题目:洛谷 P6231 [JSOI2013] 公交系统
c语言·数据结构·c++·算法·游戏·洛谷·luogu
一只小bit4 小时前
LangGraph 子图使用和房源搜索Agent综合案例实现
机器学习·langchain·llm·langgraph
c238564 小时前
C/C++每日一练6
c语言·c++·算法
AI小码4 小时前
把动作「画」给视频世界模型,跨本体双向推演,李飞飞参与
大数据·人工智能·算法·ai·大模型·音视频·编程