神经网络反向传播流程

一句话总结:通过“从后往前”传递误差,像教练纠正学生错误一样,指导模型调整参数。


1. 核心目标
  • 解决问题:前向传播得到预测结果后,模型需要知道“错在哪、如何改”。
  • 核心任务:计算每个参数(权重和偏置)对误差的影响程度,并据此调整参数。

2. 反向传播四步流程

步骤1:计算损失(总误差)

  • 用损失函数对比预测值和真实值。
  • 例子:模型预测猫概率70%,真实值100% → 交叉熵损失 ≈ 0.36。

步骤2:反向逐层传递误差

  • 从输出层开始,计算每层神经元对误差的“责任”。
  • 链式法则(通俗理解)
    • 将总误差拆解,像接力赛一样从后往前传递。
    • 比如:输出层误差 → 隐藏层2误差 → 隐藏层1误差。

步骤3:计算每个参数的梯度

  • 梯度:表示“参数微小调整时,损失会变化多少”。
  • 计算方式:用误差和对应层的输入数据相乘。
    • 权重梯度 = 当前层输入 × 下一层传递的误差
    • 偏置梯度 = 直接等于下一层传递的误差

步骤4:更新参数(学习)

  • 梯度下降:参数朝着减小损失的方向调整。
  • 公式
    新权重 = 旧权重 - 学习率 × 权重梯度
    新偏置 = 旧偏置 - 学习率 × 偏置梯度
  • 学习率:控制每次调整的步幅(类似“刹车灵敏度”)。

通俗比喻

  1. 教练改卷子

    • 学生(模型)提交答案 → 教练(损失函数)指出错误 → 从最后一道题开始,逐题分析哪一步出错(反向传播) → 学生根据反馈重点复习薄弱点(参数更新)。
  2. 导航纠偏

    • GPS(损失函数)发现偏离路线1公里 → 反向检查哪里走错(高速出口?转弯路口?) → 调整后续方向(参数更新)。

3. 具体例子(简化计算)

假设一个超简单网络:

  • 输入:x=2(如图片像素值)
  • 权重:w=1.5(初始随机值)
  • 偏置:b=0.5
  • 真实值:y_true=5(假设任务为数值预测)

前向传播
预测值 y_pred = w×x + b = 1.5×2 + 0.5 = 3.5
计算损失(MSE)
损失 = (y_true - y_pred)² = (5-3.5)² = 2.25

反向传播

  1. 计算梯度:
    • 损失对w的梯度 = 2×(5-3.5)×x = 2×1.5×2 = 6
    • 损失对b的梯度 = 2×(5-3.5) = 3
  2. 更新参数(假设学习率=0.1):
    • 新w = 1.5 - 0.1×6 = 0.9
    • 新b = 0.5 - 0.1×3 = 0.2

再次前向传播
新预测值 = 0.9×2 + 0.2 = 2.0 → 损失 = (5-2)² = 9(反而更大了?说明学习率可能太大,需调小)。


关键点总结

  • 反向传播本质:通过误差反推每个参数的“责任”,指导参数调整。
  • 链式法则:误差从输出层到输入层逐层拆解,像多米诺骨牌反向传递。
  • 梯度下降:参数沿着梯度反方向更新,逐步逼近最优解(类似“摸着石头下山”)。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐