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

前向传播、反向传播

《动手学深度学习》-4.7-笔记

是前向传播(Forward Propagation)?

就是 模型拿到输入 → 一步一步计算输出(预测结果) 的过程。

你可以把神经网络想象成一个“公式接力赛”:

  • 输入图片(或数据)从输入层进入

  • 每一层(卷积层、全连接层)都做一堆数学运算(比如:加权、激活函数)

  • 最终得到输出结果(比如:是猫还是狗)

👀 举个例子:

输入图像 ➜ 卷积层 ➜ 池化层 ➜ 全连接层 ➜ Softmax ➜ 预测标签

这整个过程就是前向传播

神经网络训练的核心机制:前向传播 + 反向传播 + 梯度计算 + 正则化

反向传播?

前向传播做完后,模型得到了结果,但它不知道对不对。
所以要和 真实标签比对,用损失函数打分。
然后从后往前一层一层地计算 每一层的“错误”(梯度),告诉模型该怎么改参数。

它就像一个“反思过程”:

  • 输出层发现错了,告诉上一层

  • 上一层再告诉上一层,直到回到最开始

“计算图”?

PyTorch 在你执行前向传播时,悄悄地在背后画了一张图,叫 计算图
每一个操作(加、乘、激活函数)都在图上留下“痕迹”。

有了这张图,它就可以在反向传播时,沿着图的反方向走回去,自动算出每一层的偏导数(梯度)。

“链式法则”?为什么提它?

在数学里,如果一个值依赖另一个值,而那个值又依赖另一个值,我们就用“链式法则”来求导。

举个例子:

z = f(y),y = g(x)

那 z 关于 x 的导数就是:dz/dx = dz/dy × dy/dx

神经网络中,输出结果依赖一层又一层参数,每层都要通过链式法则来一层层传导梯度。

正则项?

正则项是一种“限制模型不要学得太过头”的技术,
它的目的是为了防止过拟合

为什么训练比预测更占内存(显存)?

因为训练时:

  • 需要 保存前向传播中每一层的中间结果(中间变量)

  • 以便后面反向传播要用来算梯度

所以:网络层越多、batch 越大 → 保存的中间值越多 → 更容易显存溢出(OOM)网络层越多、batch 越大 → 保存的中间值越多 → 更容易显存溢出(OOM)

概念通俗解释
前向传播模型根据输入算出预测
反向传播模型根据错误反向调整每一层
计算图PyTorch 在背后画的运算路线图
自动微分PyTorch 自动帮你算导数的魔法
正则化惩罚模型学得太复杂,避免过拟合
链式法则求导数时一步步向前“乘导数”
显存占用高因为要保存每一层的中间结果
为什么训练比预测慢因为训练多了反向传播这一步,还要算导数

相关文章:

  • PDF处理控件Aspose.PDF教程:在Python、Java 和 C# 中旋转 PDF 文档
  • 无限滚动(Infinite Scroll)页面谷歌不收录!必须改回分页吗?
  • FastAPI依赖注入:链式调用与多级参数传递
  • Data_Socket和UDP_Socket
  • 【51单片机】3-3【定时器/计数器/中断】超声波测距模块测距
  • 传值、传址、传引用
  • 0基础 | 硬件 | 电源系统 一
  • LeetCode 1863.找出所有子集的异或总和再求和
  • [Windows] XHS-Downloader V2.4 | 小红书无水印下载工具 支持多平台批量采集
  • 最新版本尚硅谷硅谷甄选1-40集问题解析汇总
  • docker初始环境搭建(docker、Docker Compose、portainer)
  • Java的Selenium元素定位-cssSelector
  • 在蓝牙信号扫描中,dBm 的负值是正常现象,表示信号强度
  • Python地理数据处理 28:基于Arcpy批量操作实现——按属性提取和分区统计
  • JAVA SE:认识类和对象
  • 7. 记忆(Memory)机制:让AI拥有“短期记忆”与“长期记忆”
  • 核心知识—— RDD常用算子之数据转换
  • Hugging Face模型微调训练(基于BERT的中文评价情感分析)
  • 【BFS最小步数】魔板题解
  • 从零构建大语言模型全栈开发指南:附录与资源-3.面试与进阶-200道大模型面试真题与职业发展路线图-基础理论篇50题