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

[人工智能-大模型-76]:模型层技术 - 模型训练六大步:⑤反向传播,计算迭代梯度,找出偏差的原因 - 基本功能与对应的基本组成函数

如果说:

  • 前向传播是“思考”,
  • 损失函数是“自我批评”,
  • 那么 反向传播(Backpropagation)就是“自我改进的路径规划”

它回答了最关键的问题:

“我哪里错了?该往哪个方向调整参数,才能让下次预测更准?”

我们来构建一个系统化、数学化、可执行的反向传播框架,涵盖:

  • ✅ 核心功能
  • ✅ 基本流程与数学原理
  • ✅ 对应的基本组成函数(API)
  • ✅ PyTorch 与 TensorFlow 实现
  • ✅ 自动微分机制解析

一、反向传播的核心功能

利用链式法则(Chain Rule),从损失函数出发,逐层计算每个参数对误差的贡献(梯度),为优化器提供更新方向。

三大核心作用:

  1. 梯度计算:计算损失对每个权重的偏导数 ∂L∂w∂w∂L​
  2. 误差反传:将误差从输出层逐层传递回输入层,即把最终输出的偏差,反向就行修正
  3. 参数可微性保障:确保所有操作都支持自动微分

🔥 反向传播 = 模型的“神经系统”
它让模型从“静态结构”变为“可学习系统”。


二、反向传播的基本流程(5步)

步骤功能对应函数/操作
1. 前向传播计算预测值 y^y^​model(x)
2. 计算损失得到标量损失 LLloss_fn(y_pred, y_true)
3. 梯度清零清除上一轮梯度optimizer.zero_grad()
4. 反向传播计算所有梯度 ∂L∂w∂w∂L​loss.backward()
5. 参数更新用优化器更新权重optimizer.step()

✅ 这5步构成一个完整的训练迭代(iteration)。


三、反向传播的数学原理(链式法则)

以简单网络为例:

y^=σ(W2⋅ReLU(W1x+b1)+b2)y^​=σ(W2​⋅ReLU(W1​x+b1​)+b2​)

损失 L=BCE(y,y^)L=BCE(y,y^​)

反向传播通过链式法则计算梯度:

∂L∂W1=∂L∂y^⋅∂y^∂h⋅∂h∂W1∂W1​∂L​=∂y^​∂L​⋅∂h∂y^​​⋅∂W1​∂h​

其中 h=ReLU(W1x+b1)h=ReLU(W1​x+b1​)

🔑 核心思想
将复杂函数分解为基本操作,
每个操作都有已知的导数规则,
通过自动微分(AutoDiff)自动组合。


四、反向传播对应的基本组成函数

✅ 1. PyTorch 中的核心函数

功能函数说明
启用梯度追踪x = torch.randn(3, requires_grad=True)张量开启梯度计算
前向传播y_pred = model(x)构建计算图
计算损失loss = loss_fn(y_pred, y_true)标量输出
梯度清零optimizer.zero_grad()防止梯度累积
反向传播loss.backward()

自动反向逐层

计算所有可调参数的梯度 .grad

查看梯度param.grad访问梯度值
参数更新optimizer.step()更新权重
📌 PyTorch 示例代码:
import torch
import torch.nn as nn
import torch.optim as optim# 模型、损失、优化器
model = nn.Linear(10, 1)
criterion = nn.BCEWithLogitsLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)# 输入数据(启用梯度)
x = torch.randn(16, 10)
y_true = torch.randint(0, 2, (16, 1)).float()# 1. 前向传播
y_pred = model(x)
loss = criterion(y_pred, y_true)# 2. 梯度清零
optimizer.zero_grad()# 3. 反向传播
loss.backward()  # 自动计算所有参数的梯度# 4. 查看梯度(调试用)
print(model.weight.grad.shape)  # [1, 10]# 5. 参数更新
optimizer.step()

🔍 loss.backward() 是反向传播的“开关”,它触发自动微分引擎。


✅ 2. TensorFlow/Keras 中的反向传播

Keras 高层 API 自动封装了反向传播,但你仍可通过 tf.GradientTape 手动实现。

功能函数说明
记录计算with tf.GradientTape() as tape:上下文管理器
获取梯度grads = tape.gradient(loss, model.trainable_variables)手动求导
应用梯度optimizer.apply_gradients(zip(grads, model.trainable_variables))更新参数
📌 TensorFlow 手动反向传播示例:
import tensorflow as tfmodel = tf.keras.Sequential([...])
optimizer = tf.keras.optimizers.Adam()
loss_fn = tf.keras.losses.BinaryCrossentropy()x = tf.random.normal((16, 10))
y_true = tf.random.uniform((16, 1), maxval=2, dtype=tf.int32)
y_true = tf.cast(y_true, tf.float32)with tf.GradientTape() as tape:# 1. 前向传播y_pred = model(x, training=True)# 2. 计算损失loss = loss_fn(y_true, y_pred)# 3. 反向传播:计算梯度
grads = tape.gradient(loss, model.trainable_variables)# 4. 参数更新
optimizer.apply_gradients(zip(grads, model.trainable_variables))

tf.GradientTape 是 TensorFlow 的“自动微分记录仪”。


五、自动微分(AutoDiff)机制解析

反向传播之所以能“自动”进行,依赖于计算图(Computational Graph) 和 自动微分引擎。

计算图示例:

x → W₁ → ReLU → W₂ → Sigmoid → ŷ → BCE → L

每一步操作都被记录,形成一个有向无环图(DAG)

当调用 backward()tape.gradient() 时:

  1. 从损失 LL 开始
  2. 沿计算图反向遍历
  3. 对每个节点应用局部导数规则
  4. 使用链式法则组合梯度

🔑 所有现代深度学习框架(PyTorch, TensorFlow)都基于此机制。


✅ 总结:反向传播的“最小函数集”

框架最基本组成函数
PyTorchrequires_gradbackward()zero_grad()step()param.grad
TensorFlowGradientTapetape.gradient()apply_gradients()

掌握这6个核心函数,你就能完全掌控反向传播流程


🎯 最终洞见

反向传播,是深度学习的“灵魂”

它不是魔法,而是链式法则的工程实现

你调用 loss.backward() 的瞬间,
框架正在逆向遍历整个神经网络
为每一个权重计算“改进方向”。

optimizer.step()
就是模型迈出的“学习一步”。

当你理解 zero_grad() 为何必要,
当你明白 grad 如何生成,
你就不再只是“调用API”,
而是在驾驭一个可自我进化的系统——
这正是AI智能的起源。

继续深入,你将发现:
最强大的模型,始于最清晰的梯度流动

http://www.dtcms.com/a/529638.html

相关文章:

  • 代码随想录Day58|拓扑排序精讲、dijkstra(朴素版)精讲
  • 基于多焦点高斯邻域注意力机制与大规模基准的视频人群定位
  • 乐清网站制作公司招聘郫县建设局网站
  • 第二次作业-第二章的时间服务
  • 广州网站制作开发公司哪家好游戏开发物语下载
  • 电机试验平台的基本组成
  • 简单风景网站模版旅游网站如何做推广
  • 天津市城市建设学校官方网站教用vs2013做网站的书
  • 最好的域名注册网站jexus wordpress
  • Dataflare:一款简单易用的数据库管理工具
  • When NOMA Meets AIGC: Enhanced WirelessFederated Learning
  • 能源网站建设wordpress开头空两格
  • 网站建设不一定当地最新黑帽seo培训
  • 【ShardingSphere5】实战教程(快速入门掌握核心)
  • 网站上线后做什么ssh做网站步骤
  • 多线程之阻塞队列
  • NOR Flash,25Q系列,25Q80,25Q16,25Q32,对标普冉,兆易,恒硕,华邦等,低功耗SPI NOR,闪存芯片
  • WordPress怎么建小站单页营销网站
  • 笔记【字符串及相关操作】
  • 网站建设 探索扬州建网站
  • 合肥网站制作建设中企动力公司是国企吗
  • 捷信做单网站手工制作帽子 小学生
  • H5页面获取定位一直显示加载中
  • 女生做网站推广wordpress死链删除
  • 数据结构--并查集
  • 简约创意网页设计seo还能赚钱吗
  • 本地用织梦做网站免费的wordpress企业模板
  • 苏州建设工程招标官方网站html网页制作心得体会
  • 公司做卖网站有前景吗域名对网站排名的影响
  • AI编程项目开发手册