Skip to content

实验 03 · 标量自动微分 — 用有限差分证明反向传播是对的 ​

本实验将标量计算图、链式法则与拓扑逆序反向传播从抽象概念转变为可即时验证的数值证据。你可以直接在下方免安装的网页交互计算图中调整参数观察即时前向与梯度反传,随后在本地运行 clean-room 对拍套件。


网页即时交互实验:微型计算图与反向传播 ​

在神经网络中,任何复杂损失都可以拆解为基本运算符构成的有向无环图(DAG)。每个节点保存两个数值:前向计算的值 data 和反向传播累积的偏导数 grad。

y=tanh⁡(x⋅w+b)

拖动下方滑块调节输入 x、权重 w 与偏置 b,实时观察输出 y 以及各叶子节点的解析偏导数 ∂y∂x,∂y∂w,∂y∂b:

交互:最小自动微分

y = tanh(x * w + b)

y = 0.000000 ∂y/∂x = 2.000000 ∂y/∂w = 0.500000 ∂y/∂b = 1.000000

拖动滑块时,浏览器里即时重算前向与反向。对应 Python: python/llm_core/autograd.py

Google Pro 云端实验

实验 03 · 标量 Autograd 计算图 Colab 实验场

⚡推荐规格:Google Pro A100 / L4 GPU (或 CPU)

支持在 Google Colab Pro 上手写 Value 节点并与 PyTorch Autograd 严格对拍

💡 运行提示:若本仓库为 GitHub 私有仓库,首次在 Colab 打开时请在弹出的对话框中点击「Authorize with GitHub」授权读取;或直接点击「⬇️ 下载 .ipynb」并在 Colab 中选择「上传笔记本」运行。
🐍

实验 03 · 标量 Autograd 计算图

手写微型标量 Value 节点,验证拓扑逆序与链式法则偏导数
↗ 独立演练台
Python 3行 1, 列 149 行 · 1479 字符
运行:⌘ / Ctrl + ↵
就绪 (点击运行)
点击右上角「▶ 运行」或按 ⌘/Ctrl+Enter 在浏览器端直接执行

交互实验指南与思考题 ​

  1. 观察饱和区梯度消失:将 x 和 w 调至极大值(如 x=2.0,w=3.0),观察输出 y 逼近 1.0,而所有导数 ∂y∂x,∂y∂w 几乎衰减为 0!这就是著名的激活函数饱和与梯度消失现象。
  2. 权重对称性破缺:调整 w 的符号,观察输出与偏导数的符号变化,思考为什么全连接层不能将所有初始权重设为全零。

本地动手实验与 Clean-Room 对拍 ​

在通过网页直观理解计算图后,你将在本地从零实现 Value 类并与数值差商完成对拍:

bash
cd <仓库根目录>
source .venv/bin/activate
export PYTHONPATH="$PWD/python"

# 运行标量 autograd 单元测试
pytest python/tests/test_autograd.py -v

# 验证 clean-room 契约合规
pnpm clean-room:contract

下一步 ​

→ 返回第4章正文查看完整实现细节与故障注入表
→ 进入实验 04:Bigram 与 MLP 字符语言模型

私有学习站 · 原理从零构建 · 勿提交个人隐私或密钥