news 2026/8/29 10:16:26

大模型反向传播计算梯度-loss.backward

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大模型反向传播计算梯度-loss.backward

loss.backward() 是 PyTorch 中反向传播计算梯度的核心函数:
从当前计算出的损失值(loss)出发,沿着神经网络的计算路径 “倒着走”
算出每个可训练参数(比如权重 w、偏置 b)对损失值的影响程度(也就是梯度),为后续更新参数、降低损失做准备

举例

把神经网络训练比作 “调整奶茶配方,让顾客觉得更好喝”:
损失值(loss):代表 “顾客不满意的程度”,数值越大,配方越差
模型参数:比如糖量、茶底比例、奶的用量(对应神经网络的 w/b)
loss.backward():就是 “分析每个参数错在哪、错多少”,从 “顾客不满意” 这个结果倒推:
是糖放多了?茶底太浓了?每个参数需要调整多少才能让顾客更满意(损失值降低)

示例

用最简单的线性模型(y = w*x + b),展示 loss.backward() 在完整训练流程中的位置和效果:

importtorch# 1. 定义参数(w和b是需要训练的参数,requires_grad=True表示要计算梯度)w=torch.tensor([2.0],requires_grad=True)# 初始权重,创建张量(Tensor) 包含数值 2.0 的一维张量b=torch.tensor([1.0],requires_grad=True)# 初始偏置# 2. 模拟输入和真实标签(期望y = 3x + 0,所以当前w/b = 2不对)x=torch.tensor([1.0])y_true=torch.tensor([3.0])# 3. 前向传播:用当前参数计算预测值y_pred=w*x+b# 计算结果:2*1 + 1 = 3?不,这里故意设错,实际我们改下w=1.0更明显w=torch.tensor([1.0],requires_grad=True)# 重新设w=1.0,y_pred=1*1+1=2y_pred=w*x+b# 4. 计算损失(均方误差:(预测值-真实值)²)loss=(y_pred-y_true)**2# loss = (2-3)² = 1.0# 5. 反向传播:计算梯度(核心就是这行!)loss.backward()# 6. 查看计算出的梯度print("w的梯度:",w.grad)# 输出:tensor([-2.]) → 表示w增加,loss会减少(梯度为负)print("b的梯度:",b.grad)# 输出:tensor([-2.]) → 表示b增加,loss会减少

梯度的本质:loss.backward() 计算的梯度,是 “损失函数对每个参数的偏导数”(数学上是 d(loss)/dw、d(loss)/db)
比如 w 的梯度是 - 2,意味着:如果把 w 从 1.0 增加 0.1,loss 会增加 (-2)*0.1,即减少 0.2(loss 从 1.0 变 0.8),这就是参数更新的方向
必须先重置梯度:每次调用 loss.backward() 前,要先用 optimizer.zero_grad() 清空上一批的梯度(比如 w.grad 会累加)
否则梯度叠加,导致参数更新错误
只对可训练参数生效:只有设置了 requires_grad=True 的张量(模型参数默认开启),才会计算梯度;普通的输入 / 输出张量不会计算

# 重置梯度(清空上一批的梯度)optimizer.zero_grad()# 前向传播:算预测值y_pred=model(x)# 算损失:衡量预测和真实值的差距loss=loss_fn(y_pred,y_true)# 反向传播:算每个参数的梯度(核心)loss.backward()# 更新参数:用梯度调整w/b,降低损失optimizer.step()

总结

loss.backward() 的核心是反向计算梯度:从损失值倒推每个参数对损失的影响
它是参数更新的 “前提”:没有这一步,优化器就不知道该往哪个方向调整参数
梯度的意义:告诉我们 “调整参数能让损失降得最快的方向和幅度”

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 15:04:16

使用三方库头文件未使用导出符号情景

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录核心结论先行一、关于省略 __declspec 修饰符的原理与影响1. 为什么不用写也能正常导出?2. 使用方不写 __declspec(dllimport) 的影响二、关于省略 exter…

作者头像 李华
网站建设 2026/8/22 4:26:43

GPU服务器:驱动人工智能与科学计算的关键基础设施

在当下计算密集型任务愈发常见的情形里,图形处理单元服务器从一个专业范畴的概念,渐渐变成推动人工智能、科学计算以及视觉处理等前沿技术进步的关键基础设施。和传统中央处理器服务器主要借助少量复杂计算核心处理通用任务不一样,GPU服务器的…

作者头像 李华
网站建设 2026/8/28 22:12:37

主流门店管理软件对比,为商家提供选型思路

现今,实体商业正加速数字化转型,一套高效且适配的门店管理软件,已然成为零售、餐饮等服务行业用以提升运营效率、优化顾客体验以及实现业绩增长的核心工具。面对市场上种类繁多的产品,商家常常觉得难以进行抉择。本文的目的在于&a…

作者头像 李华
网站建设 2026/8/28 8:43:42

华为激活组织的“五大引擎”与“四驾马车”

在瞬息万变的商业环境中,企业最大的危机往往不是来自外部,而是内部的僵化与活力丧失。如何打破大企业病?如何让听得见炮声的人呼唤炮火?本文结合华为资深专家吕远洋的分享,为你揭秘激活组织活力的BRAVE模型与管理增效的…

作者头像 李华
网站建设 2026/8/25 10:09:06

娴嬭瘯鏂囩珷

娴嬭瘯鏂囩珷 杩欐槸涓�涓祴璇曟枃绔犵殑鍐呭锛岀敤浜庨獙璇丆SDN鏂囩珷鍙戝竷鍔熻兘鏄惁姝e父宸ヤ綔銆�

作者头像 李华
网站建设 2026/8/21 21:39:50

pytest 在命令行调试单个测试用例

在进行 Python 测试时,我们经常需要针对性地运行或调试单个测试用例,而不是执行整个测试套件。pytest 提供了多种灵活的方式来实现这一需求。本文将详细介绍如何在命令行中精准地调试单个测试用例。 环境准备 创建示例测试文件 test_math_operations.py&…

作者头像 李华