第 12 篇 · 神经网络基础

反向传播:AI如何从错误中

学习

你学骑自行车的时候,是怎么学会的?肯定不是看一遍教程就会了吧?

你是这样学的:骑上去 → 歪了 → 调整身体 → 又歪了 → 再调整 → 终于平衡了。每次摔倒,你都会从错误中学习,慢慢找到正确的方法。

AI也是这样学习的。前向传播就像「骑上去试一试」,反向传播就像「从错误中调整」。今天,我们来看看这个神奇的算法。

1
反向传播的核心思想

反向传播(Backpropagation)由三个步骤组成:

反向传播三步曲
第1步
🔮

前向传播

做出预测

第2步
📊

计算误差

错得有多离谱

第3步
🔄

反向传播

调整权重

核心思想:把误差从输出层往回传,告诉每一层「你贡献了多少错误」,然后调整权重来减少错误。

继续看下去

2
链式法则:误差的传递

反向传播的核心是「链式法则」。听起来很数学,但概念很简单。

就像多米诺骨牌
输出层隐藏层2隐藏层1误差从这里开始...然后一层一层往回传

就像推倒多米诺骨牌一样,误差从输出层开始,沿着连接往回传递,影响每一层的权重调整。

🧮
链式法则的数学本质:如果 y = f(g(x)),那么 dy/dx = dy/dg × dg/dx。误差对某一层权重的梯度,等于后面所有层梯度的乘积。

3
一个具体的例子

假设我们在训练一个识别手写数字的神经网络,输入是数字「7」的图片。

训练过程示例
步骤1:前向传播

7️⃣

输入图片

预测结果:

7: 60%

1: 30%

其他: 10%

步骤2:计算误差

实际

7️⃣ 100%

预测

7️⃣ 60%

误差 = 实际 - 预测 = 40%

步骤3:反向传播调整

告诉输出层:「你应该更确定这是7」

告诉隐藏层:「你们的特征提取需要调整」

告诉输入层:「这些像素的重要性需要重新分配」

权重调整:w_new = w_old - 学习率 × 梯度

关键点:每次调整后,网络对「7」的识别能力都会提高一点点。重复这个过程成千上万次,网络就能学会准确识别所有数字。

4
梯度消失问题

反向传播有一个著名的难题:梯度消失。

梯度消失:越靠前的层越难学
输入层隐藏层1隐藏层2隐藏层3输出层梯度大 ✅梯度中梯度小梯度很小几乎为0 ❌

误差在往回传的时候,经过每一层都会被「稀释」。到了前面的层,梯度已经小到几乎为0,这些层就几乎学不到东西。

问题😰

梯度消失

深层网络的前几层几乎学不到东西,因为误差传不到那么远。这就是为什么早期的深层网络表现并不好。
解决💡

解决方案

ReLU激活函数、残差连接(ResNet)、批归一化(BatchNorm)等技术缓解了这个问题,让超深网络成为可能。

5
常见误区

❌ 误区1:反向传播会改变输入数据

反向传播只调整权重和偏置,不会改变输入数据。输入数据只是用来计算误差和调整权重的依据。

❌ 误区2:一次反向传播就能让网络学会

一次反向传播只能让网络进步一点点。通常需要成千上万次的迭代,网络才能收敛到好的状态。

❌ 误区3:反向传播是唯一的训练方法

虽然反向传播是最常用的方法,但还有其他训练方法,如进化算法、强化学习等。不同场景可能适合不同方法。

总结

🎓 一句话总结

  • 反向传播 = 计算误差 → 往回传递 → 调整权重
  • 使用链式法则把误差从输出层往回传到每一层
  • 梯度消失是深层网络的难题,需要特殊技术解决
  • 反向传播 + 梯度下降 = 神经网络训练的核心

下篇预告

第13篇:过拟合——AI「背书」而不是真正理解

AI有时候会把训练数据「背」下来,而不是真正学会规律。这就是过拟合。下一篇,我们来看看如何识别和解决过拟合问题。

✏️ 手绘图解 · AI Catch 出品

第 12 篇 / 共 84 篇