AIUnlimited
🌳

AI基础

🌱
AI 种子

从零开始

🌿
AI 萌芽

打好基础

🌳
AI 枝干

付诸实践

🏕️
AI 树冠

深入探索

🌲
AI 森林

精通AI

🔨

AI精通

✏️
AI 草图

从零开始

🪨
AI 雕刻

打好基础

⚒️
AI 匠心

付诸实践

💎
AI 打磨

深入探索

🏆
AI 杰作

精通AI

📘

AI实战

📖
理解开源模型

开源模型的基础知识和资源

🎯
问题到模型任务

将业务问题转化为模型任务

⚡
跑通第一个模型

30分钟快速看到第一个结果

🔧
微调与评测

微调模型并评估性能

🚀
应用系统

构建实际AI应用系统

🎨
生成式AI

探索AIGC的开源模型

🤖
Agent智能体

学习Agent框架和MCP工具

📐
基础补充

LLM基础知识和评测

🎓

Claude 学院

🤖
Claude 101 入门

用 Claude 学习 AI 基础知识

💻
Claude Code 101 入门

让 Claude 成为你的结对编程伙伴

🤝
Claude Cowork 入门

与 Claude 协作完成复杂项目

⚙️
Claude 平台 101

使用 Claude API 构建应用

实验室

已加载 7 个实验
🧬神经网络沙盒🤖AI 还是人类?🥋提示工程道场🏁算法竞速🧠AI 知识挑战🏗️系统设计画布
🎯模拟面试进入实验室→
🚀

职业发展

🚀
面试发射台

开启你的旅程

🌟
行为面试精通

掌握软技能

💻
技术面试

通过编程轮次

🤖
AI与ML面试

ML面试精通

🏆
Offer与未来

拿下最好的Offer

立即开始
AIUnlimited

AI 教育平台

沪ICP备18025655号-11

学习

  • AI基础
  • AI实战
  • Claude学院
  • 实验室
  • 职业发展

社区

  • 关于
  • 常见问题

支持

  • 服务条款
  • 隐私政策
  • 联系我们
AI & 工程学习计划›🌿 AI 萌芽›课程›反向传播
⛓️
AI 萌芽 • 中级⏱️ 16 分钟阅读

反向传播

反向传播 - 学习的引擎

在前面的课程中,您看到神经网络具有权重,并且训练会调整这些权重。但是网络“如何”知道要改变哪些权重以及改变多少?答案是反向传播——现代深度学习中最重要的算法。

安德烈·卡帕蒂 (Andrej Karpathy) 称其为“了解神经网络最重要的事情”。让我们看看为什么。

快速前传回顾

在前向传递期间,数据从左到右通过网络流动:

  1. 输入乘以权重并求和。 2.添加偏置。
  2. 应用激活函数(如 ReLU)。
  3. 输出进入下一层,重复直到出现最终预测。

然后使用损失函数(在下一课中介绍)将预测与真实答案进行比较。损失是一个数字,表示:“这就是你的错误。”

显示通过三个节点的前向传递的计算图,箭头表示从输入到丢失的数据流
前向传递构建了一个计算图。然后反向传播反向传播。

关键见解 - 指责分配

想象一下你烤了一个蛋糕,味道很糟糕。你用了五种成分。问题是:哪种成分对不良味道影响最大,影响程度有多大?

反向传播正好回答了神经网络的这个问题。它通过询问“如果我稍微推动这个权重,损失会改变多少?”来将责备分配给每个权重。

这种变化率称为梯度,它来自微积分 - 具体来说,导数。

🤯

“人工智能教父”之一杰弗里·辛顿 (Geoffrey Hinton) 表示,反向传播是使深度学习变得实用的关键思想。如果没有它,训练具有数百万个参数的网络在计算上将是不可能的。

链式法则 - 一个想法就能统治一切

神经网络是由一系列简单操作组成的链。微积分中的链式法则告诉我们如何区分组合函数:

如果y = f(g(x)),则dy/dx = f'(g(x)) × g'(x)。

日常类比: 你开车去一家商店。你的速度取决于你踩油门的力度。油门位置取决于交通状况。要了解交通状况如何影响您的速度,您可以乘以:(每次按下油门的速度) × (根据交通状况按下油门)。这就是链式法则——沿链乘局部变化率。

🤯

反向传播在 Rumelhart、Hinton 和 Williams 1986 年发表的具有里程碑意义的论文中得到普及,但反向模式自动微分的核心思想可以追溯到 20 世纪 60 年代。

计算图 - 数学可视化

像 PyTorch 这样的现代框架在前向传播过程中构建了一个计算图。每个操作 - 加法、乘法、ReLU - 都会成为一个节点。然后反向传播反向遍历该图,在每个节点应用链式法则来计算梯度。

把它想象成一个河流系统。损失就是最后的海洋。反向传播追踪上游的每个支流,以找出每个源(权重)对最终流量的贡献程度。

一个小例子

假设 L = (w × x - y)² 与 w = 2、x = 3、y = 10。

  1. 向前: w × x = 6,然后6 - 10 = -4,然后(-4)² = 16。损失=16。
  2. 向后: dL/d(diff) = 2 × (-4) = -8,然后d(diff)/d(wx) = 1,所以dL/d(wx) = -8。
  3. 最后,d(wx)/dw = x = 3,所以**dL/dw = -8 × 3 = -24**。

−24 的梯度告诉我们:*增加 w 将迅速减少损失。*这正是我们需要改进的信号。

🧠小测验

在链式法则中,我们如何处理每个节点的局部导数?

层间梯度流

在深层网络中,梯度必须穿过许多层。每层将梯度乘以其局部导数。这会产生两种危险的故障模式:

消失梯度

如果局部导数很小(例如 sigmoid 函数在 0 或 1 附近饱和),则重复相乘会使梯度收缩到零。早期层几乎没有学习——它们几乎没有接收到信号。这困扰着早期的深度网络。

梯度爆炸

如果局部导数很大,梯度会呈指数增长。权重收到巨大的更新,网络变得不稳定,产生 NaN 值。

🤔
Think about it:

ReLU 的导数为 0 或 1 - 它在激活时绝不会收缩梯度。为什么这个简单的属性对于训练深度网络来说可能是革命性的?

现代解决方案包括:

  • ReLU 激活 - 正输入的导数为 1,避免收缩。
  • 剩余连接(跳过连接) - 为梯度提供绕过层的高速公路。
  • 批量归一化 - 将值保持在健康范围内。
  • 渐变剪裁 - 限制渐变以防止爆炸。

权重实际上是如何更新的

一旦反向传播计算出每个梯度,优化器(下一课)就会更新每个权重:

w_new = w_old - learning_rate × gradient

学习率控制步长。太大就会超调;太小了,训练需要很长时间。梯度告诉你方向;学习率告诉你要走多远。

🧠小测验

是什么导致深度网络中梯度消失?

为什么反向传播很重要

每当 ChatGPT 改进其下一个单词预测时,每次自动驾驶汽车改进其转向时,反向传播都会在下面运行。正是这种算法使得从错误中学习在数学上变得精确。

如果没有反向传播,我们就没有有效的方法来训练具有数百万或数十亿参数的网络。

🧠小测验

关于权重,梯度告诉我们什么?

🤔
Think about it:

Karpathy 强调反向传播“只是链式法则的递归应用”。如果您了解链式法则和计算图,您就了解了反向传播。还有哪些复杂的系统可以通过将其分解为简单的、可组合的部分来理解?

要点

  • 反向传播 通过反向遍历计算图来计算梯度。
  • 链式法则沿每条路径乘以局部导数。
  • 梯度消失学习缓慢; 梯度爆炸会破坏它的稳定性。
  • 现代技巧(ReLU、跳过连接、梯度裁剪)保持梯度流健康。
  • Backprop + 优化器 = 所有现代深度学习的学习引擎。

📚 进一步阅读

  • Andrej Karpathy - nn-zero-to-hero (micrograd) - 在 Python 中从头开始构建反向传播
  • 3Blue1Brown - 反向传播微积分 - 神经网络中链式法则的美丽视觉解释
  • CS231n Backprop Notes - 斯坦福关于计算图和梯度流的简明参考
第 6 课,共 16 课已完成 0%
←AI 伦理与偏见

讨论

登录 参与讨论