news 2026/6/11 16:07:50

AI:深度学习的前向传播和反向传播

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI:深度学习的前向传播和反向传播

深度学习的前向传播和反向传播是神经网络训练的核心机制,前者负责生成预测结果,后者负责根据误差优化模型参数,二者共同构成一个完整的训练迭代循环。

一、前向传播(Forward Propagation)

前向传播是神经网络从输入到输出的推理过程,通过逐层计算得到预测结果:

  1. 输入层接收数据
    将原始数据(如图像、文本)转换为数值向量作为输入,例如图像被转换为像素值组成的张量。

  2. 隐藏层计算与转换

    • 线性加权组合:每一层神经元接收上一层输出作为输入,通过权重矩阵与输入向量的矩阵乘法,加上偏置向量,完成线性变换:
      z=W⋅x+b\mathbf{z} = \mathbf{W} \cdot \mathbf{x} + \mathbf{b}z=Wx+b
      其中z\mathbf{z}z称为预激活值,是激活函数的输入。
    • 非线性激活:通过激活函数(如ReLU、Sigmoid)对线性结果进行非线性转换,赋予网络学习复杂模式的能力:
      a=f(z)\mathbf{a} = f(\mathbf{z})a=f(z)
      激活函数通过引入非线性,将数据从原始低维空间映射到高维空间,使原本线性不可分的数据变得可分。
  3. 输出层生成预测
    输出层接收隐藏层的输出,经过最终的线性变换和激活函数(如Softmax用于分类任务),生成预测结果y^\hat{\mathbf{y}}y^

  4. 损失计算
    将预测结果与真实标签比较,计算损失函数值(如均方误差MSE或交叉熵损失),用于衡量模型预测的准确性。

二、反向传播(Backward Propagation)

反向传播是神经网络从输出到输入的参数优化过程,通过计算梯度更新模型参数:

  1. 计算损失函数梯度
    首先计算损失函数对输出层的梯度∂L∂o\frac{\partial \mathcal{L}}{\partial \mathbf{o}}oL,这是反向传播的起点。

  2. 梯度反向传递

    • 从输出层开始,利用链式法则逐层计算损失函数对隐藏层参数的梯度:
      ∂L∂W(2)=∂L∂o⋅h⊤\frac{\partial \mathcal{L}}{\partial \mathbf{W}^{(2)}} = \frac{\partial \mathcal{L}}{\partial \mathbf{o}} \cdot \mathbf{h}^\topW(2)L=oLh
      ∂L∂W(1)=∂L∂h⋅x⊤\frac{\partial \mathcal{L}}{\partial \mathbf{W}^{(1)}} = \frac{\partial \mathcal{L}}{\partial \mathbf{h}} \cdot \mathbf{x}^\topW(1)L=hLx
      其中h\mathbf{h}h是隐藏层输出,x\mathbf{x}x是输入。
    • 梯度传递过程中,每个节点的误差梯度由上一层传来的梯度与当前层的激活函数导数相乘得到。
  3. 参数更新
    根据计算出的梯度,使用优化算法(如梯度下降)更新网络参数:
    W=W−η⋅∂L∂W\mathbf{W} = \mathbf{W} - \eta \cdot \frac{\partial \mathcal{L}}{\partial \mathbf{W}}W=WηWL
    其中η\etaη是学习率,控制参数更新的步长。

  4. 正则化项处理
    如果包含正则化项(如L2正则化),还需计算正则化项对参数的梯度并加入更新过程。

三、前向传播与反向传播的关系

特性前向传播反向传播
方向输入层 → 输出层输出层 → 输入层
计算内容预测值 (y^\hat{\mathbf{y}}y^)梯度 (∂L∂W\frac{\partial \mathcal{L}}{\partial \mathbf{W}}WL)
核心操作矩阵乘法 + 激活函数链式法则 + 梯度累加
计算复杂度O(参数量)O(参数量)(近似)
框架支持自动执行自动微分(autograd)

这两个过程构成一个完整的训练迭代:前向传播生成预测并计算损失,反向传播计算梯度并更新参数。通过多次迭代这一过程,神经网络能够不断调整参数,使损失函数逐渐减小,最终达到模型的优化目标。

在实际应用中,现代深度学习框架(如PyTorch、TensorFlow)会自动构建计算图(Computational Graph)来追踪计算过程,实现高效的自动微分,大大简化了反向传播的实现。理解这两个过程的原理,有助于更好地设计网络架构、调试模型问题以及优化训练效率。

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

打卡信奥刷题(2536)用C++实现信奥 P2044 [NOI2012] 随机数生成器

P2044 [NOI2012] 随机数生成器 题目描述 栋栋最近迷上了随机算法,而随机数是生成随机算法的基础。栋栋准备使用线性同余法(Linear Congruential Method)来生成一个随机数列,这种方法需要设置四个非负整数参数 m,a,c,X0m,a,c,X_0…

作者头像 李华
网站建设 2026/6/9 20:58:39

基于VFNet的安全装备检测系统Python实现(含代码+模型解析)

本数据集名为"apd detection",版本为v2,于2024年2月16日创建,由qunshankj平台用户提供,遵循CC BY 4.0许可协议。该数据集专门用于个人防护装备(APD)的检测与识别任务,包含1346张图像&…

作者头像 李华
网站建设 2026/6/12 6:22:30

基于springboot和vue的校园志愿者服务平台_33938pud(java毕业设计项目源码)

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/6/12 4:48:25

WHERE和HAVING子句的使用场景有何不同?

本报告旨在深入、全面地剖析结构化查询语言(SQL)中两个核心过滤子句——WHERE和HAVING——在使用场景、功能机制、执行顺序及性能影响上的本质区别。尽管两者都承担着数据筛选的功能 但它们的运作逻辑和适用领域截然不同,正确区分并使用它们是…

作者头像 李华