[note]李宏毅Deep Learning 之 BackPropagation笔记

文章目录

  • [Gradient Descent](#Gradient Descent)
  • [Math premise](#Math premise)
  • [Back Propagation](#Back Propagation)
    • [forward pass](#forward pass)
    • [backward pass](#backward pass)
  • Summary

中文名:反向传播算法

用于Gradient Descent 来train 一个neural network时用到

BackPropagation的核心是通过链式法则改变微分形式,并用forward pass 与 backward pass求出对应微分

Gradient Descent

在进行Gradient Descent 步骤的时候,我们需要计算 ∇ L \nabla L ∇L ,也就是要计算L对各个parameter的偏微分,如果我们的parameter非常多,我们的layers也比较多(例如在做语音识别模型的时候可能有7,8层)

To compute the gradients efficiently,we use backpropagation

Math premise

数学前置知识:Chain Rule

不懂的自行学习Calculus

Back Propagation

这里 C n C^n Cn 代表预测值 y n y^n yn 与 真实值 y ^ n \hat y^n y^n 的距离

对公式整体取偏微分可以得到右式

我们先取三角形中的neuron出来考虑

我们想要计算 ∂ C ∂ w \frac { \partial C } { \partial w } ∂w∂C ,根据一阶微分形式不变性可得 \\frac { \\partial C } { \\partial w } = \\frac { \\partial z } { \\partial w } \\frac { \\partial C } { \\partial z }

我们将前面的 ∂ z ∂ w \frac {\partial z}{\partial w} ∂w∂z 称为Forward Pass :commute ∂ z ∂ w \frac {\partial z}{\partial w} ∂w∂z for all parameters,这个很容易计算即是前面feature的值

将后面的 ∂ C ∂ z \frac { \partial C } { \partial z} ∂z∂C 称为Backward Pass :commute ∂ C ∂ z \frac { \partial C } { \partial z} ∂z∂C for all activation function inputs z

forward pass

forward pass 计算起来很简单

也就是说Forward pass 过程就是将input输入进neural network中计算每一个neuron 的Output即可

backward pass

如何计算 ∂ C ∂ z \frac { \partial C } { \partial z} ∂z∂C ?

我们同样使用一阶微分形式不变性\\frac { \\partial C } { \\partial z } = \\frac { \\partial a } { \\partial z } \\frac { \\partial C } { \\partial a }

∂ a ∂ z \frac{\partial a}{\partial z} ∂z∂a 就是Activation function的微分(假如是sigmoid function就是 σ ′ ( z ) \sigma ^ { \prime }(z) σ′(z))

那么 ∂ C ∂ a \frac{\partial C}{\partial a} ∂a∂C 计算则是利用Chain rule表示为 ∂ C ∂ a = ∂ z ′ ∂ a ∂ C ∂ z ′ + ∂ z ′ ′ ∂ a ∂ C ∂ z ′ ′ \frac { \partial C } { \partial a } = \frac { \partial z ^ { \prime } } { \partial a } \frac { \partial C } { \partial z ^ { \prime } } + \frac { \partial z ^ { \prime \prime } } { \partial a } \frac { \partial C } { \partial z ^ { \prime \prime } } ∂a∂C=∂a∂z′∂z′∂C+∂a∂z′′∂z′′∂C

这里两项的原因是因为a的下一项只有两个neuron,如果有n个则是n个的summation

也就是说现在如果我们知道?的两个值就可以得出 ∂ C ∂ z \frac { \partial C } { \partial z} ∂z∂C 的值了

∂ C ∂ z = σ ′ ( z ) w 3 ∂ C ∂ z ′ + w 4 ∂ C ∂ z ′ ′ \frac { \partial C } { \partial z } = \sigma ^ { \prime } ( z ) \left w _ { 3 } \\frac { \\partial C } { \\partial z \^ { \\prime } } + w _ { 4 } \\frac { \\partial C } { \\partial z \^ { \\prime \\prime } } \\right ∂z∂C=σ′(z)w3∂z′∂C+w4∂z′′∂C

在这里我们注意到,每次我们想要计算当前这个neuron的C关于z的偏微分的时候,我们需要求出下一层的C的偏微分,也就是说,我们需要从后往前来反复求偏微分就可以了 ,这就是为什么叫做backpropagation ,这在ppt中叫做Compute ∂ C ∂ z \frac{\partial C}{\partial z} ∂z∂C reversely

Summary

因此我们的Back Propagation一共分为两步:

  1. forward pass 求出z的预测值并求出 ∂ z ∂ w \frac{\partial z}{\partial w} ∂w∂z 的值

  2. backward pass逆向顺序过程求出对应的偏微分

相关推荐
阿拉斯攀登2 小时前
15-限流防刷配置:接口限流、IP限流、防恶意请求、保护SaaS后台
人工智能
AI服务老曹2 小时前
AI视频分析私有化验收性能优化指南:从资源瓶颈排查到运维交接
人工智能·性能优化·音视频
云物互联2 小时前
企业垂类智能体的 Harness 工程:从第一性原理到架构设计
人工智能
greasyfork2 小时前
Ps 2026 v27.6 For Mac:专业图像处理工作流解析
图像处理·人工智能·macos·ps
饼干哥哥3 小时前
保姆级教程|Codex接入 DeepSeek、Kimi K3后,天下无对手!
人工智能·深度学习·ai编程
Mr数据杨3 小时前
【CanMV K210】系统环境 IDE 连接开发板与串口通信
人工智能·硬件开发·canmv k210
tedcloud1233 小时前
diagram-design 怎么安装?用 AI 自动生成更专业的架构图、流程图
linux·运维·前端·人工智能·开源·流程图
疯狂打码的少年3 小时前
【数据结构】复习日:树 + 图 + 排序(整理对比表)
数据结构·笔记·算法
zzz海羊3 小时前
2026全平台移动办公远控助手横测:从鸿蒙到工作站,ToDesk、向日葵、TeamViewer、AnyDesk谁更适配?
人工智能·华为·agent·harmonyos·teamviewer
故七月3 小时前
AI 搜索重构信息分发逻辑:2026年企业 GEO 布局现状与行业演进分析
大数据·人工智能