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

初识pytorch:更新网络参数的反向传播、损失函数和优化器

目录
  • 反向传播、损失函数和优化器
    • 这三者之间的联系
    • 损失函数(Loss Function),模型优化的“指南针”
    • 反向传播(Backpropagation):参数优化的 “路径规划”
    • 优化器:参数优化的执行者

——————————————————————————————————————————————————————————————————————————————————————————————————————————

反向传播、损失函数和优化器

在之前的章节中我们讲述了关于数据部分和网络结构部分的知识,在这一章节里面我们将讲到反向传播和损失函数相关的知识

这三者之间的联系

在 PyTorch 中,损失函数(Loss Function)、反向传播(Backpropagation)和优化器(Optimizer)是模型训练流程中紧密协作的三个核心组件,它们共同构成了参数更新的完整闭环。三者的联系可概括为:损失函数提供误差量化,反向传播计算参数梯度,优化器利用梯度更新参数。

示例代码:

# 1. 定义模型、损失函数、优化器
model = MyModel()
criterion = nn.CrossEntropyLoss()  # 损失函数
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)  # 优化器# 2. 训练循环
for inputs, labels in dataloader:# 前向传播:计算预测值outputs = model(inputs)# 计算损失(损失函数的核心作用)loss = criterion(outputs, labels)  # 量化预测误差# 反向传播:计算梯度(依赖损失值)optimizer.zero_grad()  # 清空上一轮梯度loss.backward()        # 自动计算所有参数的梯度(存储在 param.grad 中)# 优化器更新参数(依赖梯度)optimizer.step()       # 根据梯度调整模型参数

损失函数(Loss Function),模型优化的“指南针”

损失函数是衡量模型预测结果与真实标签之间差异程度的函数,其输出值(损失值,Loss)越小,说明模型预测越准确。它是模型训练的 “目标”—— 我们的最终目的是通过调整参数使损失值最小化。

1. 核心作用

量化误差:将 “预测是否准确” 转化为可计算的数值(如分类任务中预测类别与真实类别不符的程度)。
指导参数更新:损失函数的梯度(对每个参数的偏导数)是反向传播的核心依据,决定了参数调整的方向和幅度。

2. 常见损失函数及适用场景

损失函数类型 适用场景
均方误差(MSE) 回归任务(如房价预测、温度预测)
交叉熵损失(Cross-Entropy) 分类任务(如图片分类、情感分析)
二元交叉熵(BCE) 二分类任务(如垃圾邮件检测)
三元组损失(Triplet Loss) 相似度学习(如人脸识别、推荐系统)

反向传播(Backpropagation):参数优化的 “路径规划”

反向传播是一种高效计算梯度的算法,它根据损失函数的输出(损失值),从模型的输出层开始,逐层反向计算损失对每个参数(权重、偏置)的偏导数(梯度),最终指导参数更新。

1. 核心原理:链式法则
神经网络的计算是 “正向” 的(输入→隐藏层→输出),而梯度计算是 “反向” 的,依赖微积分中的链式法则.
通俗理解:反向传播像 “多米诺骨牌”,从输出层的损失出发,依次计算每一层参数对损失的 “贡献度”(梯度),最终传递到输入层附近的参数。

正向传播:输入数据通过网络计算,得到预测值,并通过损失函数计算损失L。

反向传播:
- 从输出层开始,计算损失L对输出层参数(如最后一层权重)的梯度;
- 利用链式法则,将梯度传递到前一层,计算损失对隐藏层参数的梯度;
- 重复上述步骤,直到计算出所有参数的梯度。

参数更新:根据梯度和优化器调整参数,使损失减小。

优化器:参数优化的执行者

优化器(Optimizer)是深度学习模型训练的核心组件,其作用是根据反向传播计算出的梯度,调整模型参数(权重、偏置等),以最小化损失函数。简单来说,优化器是 “参数调整的策略”,直接影响模型的收敛速度和最终性能。

一、优化器的核心目标
深度学习的本质是优化问题:通过调整模型参数 w,使损失函数 L(w)达到最小值。优化器的任务就是:
1.利用反向传播得到的梯度 ∇L(w)(参数对损失的影响程度);
2.按照特定规则更新参数 w 。

二、优化器的核心要素
1.学习率(Learning Rate, lr)
控制参数更新的步长(lr越大,更新越激进;过小则收敛慢)。是优化器最关键的超参数。

2.梯度利用方式
不同优化器的核心差异在于 “如何利用当前梯度和历史梯度”,例如:

  • 基础优化器仅用当前梯度;
  • 高级优化器会结合历史梯度的均值、方差等信息。

3.正则化机制
部分优化器支持权重衰减(Weight Decay),通过对参数大小施加惩罚,防止模型过拟合。

三、常见优化器及分类

优化器名称 优化器类型 适用场景
随机梯度下降(SGD) 基础优化器 数据量大、作为基准对比,或配合学习率调度器使用。
SGD + 动量(Momentum) 基础优化器 比纯 SGD 收敛更快,适合非凸优化问题(多数深度学习场景)。
Adam 自适应学习率优化器:自动调参 收敛快、稳定性好,对超参数不敏感,是多数场景的默认选择。
AdamW 自适应学习率优化器:自动调参 预训练模型(如 BERT、GPT)、需要强正则化的任务。
http://www.hskmm.com/?act=detail&tid=32538

相关文章:

  • Composition API 与 React Hook 很像,区别是什么?
  • 题解:CF1483E Vabank
  • 20251016 正睿二十连测
  • [贝佐斯-六页纸]
  • cc
  • 感知节点@7@ ESP32+arduino+ 第五个程序FreeRTOS 上 增加一个新任务ADC任务
  • 2025年10月切削液厂家 TOP 企业品牌推荐排行榜,全合成切削液,半合成切削液,微乳切削液推荐这十家公司!
  • 普源精电RIGOL DS2202A示波器保存波形到CSV文件过慢解决方法:保存为WFM格式、通过LAN接口使用SCPI+PyVISA控制
  • 动手学深度学习——引言
  • CF1989E Distance to Different
  • AngularJS:构建更智能的Web应用框架
  • 给档案装上“智慧大脑”:文档抽取技术的四大赋能场景
  • P11816QOJ1250 Pionki 轮廓线DP
  • linux系统scatter/gather I/O技术
  • PostgreSQL 为什么不选择 B+ 树索引? - Lafite
  • Joeys shell
  • Redis 集群从部署到可视化管理全流程(超详细实战指南)
  • 什么是BPM流程自动化?从“财务报销”入手,一文读懂企业效率引擎
  • 软件工程学习日志2025.10.16
  • P1072 [NOIP 2009 提高组] Hankson 的趣味题
  • 25w41a快照测评:鹦鹉螺成精了?长矛教你戳穿末影人!
  • Day15-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\classlei
  • Day14
  • window电脑开启hyperV虚拟化功能后导致本地服务端口被占用问题处理方案
  • RAG检索质量差?这5种分块策略帮你解决70%的问题
  • 初识pytorch:网络骨架中的填充之各种层
  • Day5字符型
  • 本地链路地址
  • 体育
  • Meta推出Agent Learning via Early Experience,推动语言代理自主学习新范式