当前位置: 首页 > article >正文

深度学习中梯度的补充理解

目录

比喻:团队协作完成任务

BP 的作用机制

BP 的具体过程

1. 前向传播(Forward Pass)

2. 计算误差(Loss Calculation)

3. 反向传播(Backward Pass)

4. 更新参数(Parameter Update)

梯度的意义

!W一般都是参数矩阵,参数矩阵中就可能会有w1、w2...,损失函数之所以是复杂的非凸函数一个重要的原因就是参数很多,拟合后非线性因素很复杂,对于这么多个维度的参数,拿出其中的某几个参数w来说,对于w1假设损失函数图像为蓝色图(w2就是红色的),调同样的幅度w1对于损失函数下降的贡献大于w2,那么就更应该调w1(这里是把复杂的损失函数抽象出来看,不同的w其实定义的是同一个损失函数)

爬山

场景:

梯度的意义:

如何下山:

总结


image.png

这里可以更直观地反映‘链式法则’的含义,以及为什么要对每个参数去求偏导:

通过层与层之间的已知关系,递推地去求前面的参数,(w、b都是变量!),从局部梯度进一步推到接近全局的梯度,过程中不断得到参数矩阵中每个对每一个网络层的影响权重,去指导下一次的正向传播(修正参数)

换句话说,如果不链式求导也求不来(未知数太多)

image.png

链式求导法则 构成一条链来求导

  • -------------------------------------------------

比喻:团队协作完成任务

假设你是一个团队的负责人,团队的任务是完成一个复杂的项目(比如建造一座桥)。团队中有多个小组(输入层、隐藏层、输出层),每个小组负责不同的任务。BP 的作用就像是你在项目完成后,检查每个小组的工作,找出问题所在,并指导他们如何改进。

  • -------------------------------------------------


BP 的作用机制

BP 的核心思想是 从错误中学习。具体来说,BP 通过以下步骤实现:

  1. 前向传播:团队按照计划完成任务(模型根据输入数据计算输出)。

  2. 计算误差:检查任务完成情况,计算与目标的差距(损失函数)。

  3. 反向传播:从最终结果开始,逐层分析每个小组的贡献,找出问题所在(计算梯度)。

  4. 更新参数:根据分析结果,调整每个小组的工作方式(更新模型参数)。


BP 的具体过程

我们以一个简单的神经网络为例,假设网络结构如下:

  • 输入层:接收输入数据。

  • 隐藏层:对输入数据进行处理。

  • 输出层:生成最终预测结果。

  • -------------------------------------------------

  • 过程上理解:

1. 前向传播(Forward Pass)
  • 输入数据:假设输入数据是一个向量 x(比如一张图片的像素值)。

  • 隐藏层计算:输入数据经过隐藏层的权重和偏置计算,得到隐藏层的输出 hh:

    h=f(W1x+b1)

    其中,W1 是隐藏层的权重,b1是偏置,f 是激活函数(如 ReLU)。

  • 输出层计算:隐藏层的输出 h 经过输出层的权重和偏置计算,得到最终的预测结果 ypred:

    ypred=g(W2h+b2)

    其中,W2 是输出层的权重,b2 是偏置,g 是激活函数(如 Softmax)。

2. 计算误差(Loss Calculation)
  • 真实值:假设真实值是 ytrue(比如图片的真实标签)。

  • 损失函数:计算预测值 ypred 与真实值 ytrue 之间的差距,常用的损失函数是交叉熵损失:

    L=−∑ytruelog⁡(ypred)

3. 反向传播(Backward Pass)
  • 输出层误差:首先计算输出层的误差(损失函数对输出层输出的梯度):

    然后根据链式法则,计算损失函数对输出层权重 W2 和偏置 b2 的梯度:

  • 隐藏层误差:将输出层的误差传递到隐藏层,计算隐藏层的误差(损失函数对隐藏层输出的梯度):

    然后根据链式法则,计算损失函数对隐藏层权重 W1W1 和偏置 b1b1 的梯度:

4. 更新参数(Parameter Update)
  • 梯度下降:根据计算出的梯度,更新模型的权重和偏置:

    其中,η 是学习率,控制参数更新的步长。

  • 也就是:W t+1 = W t - a*g (其中,a就是学习率,求导 -- 损失函数的结果除以本次该参数)

  • -------------------------------------------------

  • 梯度的意义
  • image.png

  • !W一般都是参数矩阵,参数矩阵中就可能会有w1、w2...,损失函数之所以是复杂的非凸函数一个重要的原因就是参数很多,拟合后非线性因素很复杂,对于这么多个维度的参数,拿出其中的某几个参数w来说,对于w1假设损失函数图像为蓝色图(w2就是红色的),调同样的幅度w1对于损失函数下降的贡献大于w2,那么就更应该调w1(这里是把复杂的损失函数抽象出来看,不同的w其实定义的是同一个损失函数)

  • 梯度 g=∂L∂Wg=∂W∂L 表示损失函数 LL 对参数 WW 的变化率。

!eg:

爬山

场景:

假设你在山上,目标是找到山谷的最低点(即损失函数的最小值)。

  • 你的位置由参数 W 决定。

  • 山的高度由损失函数 L(W) 决定。

梯度的意义:
  • 梯度 ∂L/∂W告诉你:

    • 朝哪个方向走:梯度的方向是山最陡的方向(即损失函数增长最快的方向)。

    • 走多快:梯度的大小表示山的陡峭程度(即损失函数变化的速度)。

如何下山:
  • 你要沿着梯度的 反方向 走,因为梯度指向的是山最陡的方向(上升最快的方向),而你要下山(减小损失)。

  • 更新公式:

    其中,a 是学习率,控制你每一步走多远。

---------------------------------------------------


总结

BP 的作用机制可以概括为:

  1. 前向传播:模型根据输入数据计算输出。

  2. 计算误差:比较预测值与真实值的差距。

  3. 反向传播:从输出层到隐藏层,逐层计算梯度。

  4. 更新参数:根据梯度调整模型参数,使预测结果更接近真实值。


http://www.kler.cn/a/513159.html

相关文章:

  • 《Effective Java》学习笔记——第1部分 创建对象和销毁对象的最佳实践
  • 机器学习-核函数(Kernel Function)
  • 美特CRM mcc_login.jsp存在SQL注入漏洞
  • 目标跟踪算法发展简史
  • MySQL篇之对MySQL进行参数优化,提高MySQL性能
  • 深度学习 · 手撕 DeepLearning4J ,用Java实现手写数字识别 (附UI效果展示)
  • 《探秘鸿蒙Next:如何保障AI模型轻量化后多设备协同功能一致》
  • Jira中bug的流转流程
  • mybatis plus 中 使用 updateById或updateBatchById 更新字段为null 不更新问题
  • 虚幻基础-1:cpu挑选(14600kf)
  • 【FPGA】MIPS 12条整数指令【1】
  • html,css,js的粒子效果
  • 【Elasticsearch】Elasticsearch文档操作
  • IoTDB 1.2 升级 1.3 后 Pipe 插件失效
  • vif-方差膨胀因子计算
  • macOS如何进入 Application Support 目录(cd: string not in pwd: Application)
  • QD Laser携“Lantana”激光器参展SPIE光子学西部展2025,聚焦紧凑型设计
  • 日历热力图,月度数据可视化图表(日活跃图、格子图)vue组件
  • (二叉树)
  • HarmonyOS Next 最强AI智能辅助编程工具 CodeGenie介绍
  • OpenSeaOtter使用手册-变更通知和持续部署
  • C#高级:用控制台程序模拟WebAPI处理接口请求信息
  • 无人设备航电系统的构成
  • 【gopher的java学习笔记】Java中Service与Mapper的关系详解
  • 深度学习-90-大型语言模型LLM之基于LM Studio本地化部署运行自己的大模型
  • 京华春梦,守岁这方烟火人间