Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • Python

  • MLTutorials

    • 机器学习基础

    • 模型与算法

    • 模型优化

      • 局部极小值与鞍点
      • 批量和动量
      • 学习率
      • 梯度下降
      • 反向传播
        • 背景
          • 梯度下降
          • 链式法则
        • 反向传播
          • 取出一个Neuron进行分析
          • Forward Pass
          • Backward Pass
          • case 1 : Output layer
          • case 2 : Not Output Layer
        • 总结
      • 优化算法
      • 各种Optimizer梯度下降优化算法回顾和总结
      • AI算法工程师必备的深度学习最优化上
      • PyTorch优化神经网络训练的17种方法
      • AdamW与Adam的比较可能AdamW依然是最好的优化器
      • 机器学习调参自动优化方法
      • Dropout
  • 卷积神经网络

  • 循环神经网络

  • Transformer

  • VisionTransformer

  • 扩散模型

  • 计算机视觉

  • PTM

  • MoE

  • LoRAMoE

  • LongTailed

  • 多模态

  • 知识蒸馏

  • PEFT

  • 对比学习

  • 小样本学习

  • 迁移学习

  • 零样本学习

  • 集成学习

  • Mamba

  • PyTorch

  • CL

  • CIL

  • 小样本类增量学习FSCIL

  • UCIL

  • 多模态增量学习MMCL

  • LTCIL

  • DIL

  • 论文阅读与写作

  • 分布外检测

  • GPU

  • 深度学习调参指南

  • AINotes
  • MLTutorials
  • 模型优化
Geeks_Z
2024-09-13
目录

反向传播

背景

梯度下降

  • 给到 θ (weight and bias)
  • 先选择一个初始的 θ0,计算 θ0 的损失函数(Loss Function)设一个参数的偏微分
  • 计算完这个向量(vector)偏微分,然后就可以去更新 θ
  • 百万级别的参数(millions of parameters)
  • 反向传播(Backpropagation)是一个比较有效率的算法,让你计算梯度(Gradient) 的向量(Vector)时,可以有效率的计算出来

链式法则

  • 连锁影响(可以看出x会影响y,y会影响z)
  • BP主要用到了chain rule

反向传播

  1. 损失函数(Loss function)是定义在单个训练样本上的,也就是就算一个样本的误差,比如我们想要分类,就是预测的类别和实际类别的区别,是一个样本的,用 L 表示。
  2. 代价函数(Cost function)是定义在整个训练集上面的,也就是所有样本的误差的总和的平均,也就是损失函数的总和的平均,有没有这个平均其实不会影响最后的参数的求解结果。
  3. 总体损失函数(Total loss function)是定义在整个训练集上面的,也就是所有样本的误差的总和。也就是平时我们反向传播需要最小化的值。

对于L(θ) 是所有ln 损失之和,所以如果要算每个L(θ) 偏微分,我们只要算每个ln 偏微分,再把所有ln 微分的结果加起来就是L(θ) 偏微分,所以等下我们只计算每个ln 偏微分。 我们先在整个神经网络(Neural network)中抽取出一小部分的神经(Neuron)去看(也就是红色标注的地方):

取出一个Neuron进行分析

从这一小部分中去看,把计算梯度分成两个部分

  • 计算∂z∂w(Forward pass的部分)
  • 计算∂l∂z ( Backward pass的部分 )

Forward Pass

那么,首先计算∂z∂w(Forward pass的部分):

根据求微分原理,forward pass的运算规律就是:

∂z∂w1=x1∂z∂w2=x2

这里计算得到的x1 x2 好就是输入的x1 x2 直接使用数字,更直观地看到运算规律:

Backward Pass

(Backward pass的部分)这就很困难复杂因为我们的 l 是最后一层: 那怎么计算 ∂l∂z (Backward pass的部分)这就很困难复杂因为我们的 l 是最后一层:

计算所有激活函数的偏微分,激活函数有很多,这里使用Sigmoid函数为例

这里使用链式法则(Chain Rule)的case1,计算过程如下:

∂l∂z=∂a∂z∂l∂a⇒σ′(z) ∂l∂a=∂z′∂a∂l∂z′+∂z″∂a∂l∂z″

最终的式子结果:

但是你可以想象从另外一个角度看这个事情,现在有另外一个神经元,把forward的过程逆向过来,其中σ′(z) 常数,因为它在向前传播的时候就已经确定了

case 1 : Output layer

假设∂l∂z′ ∂l∂z″ 最后一层的隐藏层 也就是就是y1与y2是输出值,那么直接计算就能得出结果

但是如果不是最后一层,计算∂l∂z′ ∂l∂z″ 话就需要继续往后一直通过链式法则算下去

case 2 : Not Output Layer

对于这个问题,我们要继续计算后面绿色的∂l∂za ∂l∂zb,然后通过继续乘w5 w6 到∂l∂z′,但是要是∂l∂za ∂l∂zb 不知道,那么我们就继续往后面层计算,一直到碰到输出值,得到输出值之后再反向往输入那个方向走。

对上图,我们可以从最后一个∂l∂z5 ∂l∂z6 ,因为∂l∂za ∂l∂zb 较容易通过output求出来,然后继续往前求∂l∂z3 ∂l∂z4,再继续求∂l∂z1 ∂l∂z2 最后我们就得到下图的结果

实际上进行backward pass时候和向前传播的计算量差不多。

总结

我们的目标是要求计算∂z∂w(Forward pass的部分)和计算∂l∂z ( Backward pass的部分 ),然后把∂z∂w ∂l∂z 乘,我们就可以得到∂l∂w,所有我们就可以得到神经网络中所有的参数,然后用梯度下降就可以不断更新,得到损失最小的函数

上次更新: 2025/06/25, 11:25:50
梯度下降
优化算法

← 梯度下降 优化算法→

最近更新
01
帮助信息查看
06-08
02
常用命令
06-08
03
学习资源
06-07
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式