Skip to content

实验 02 · Python 与数学最小坡道 — 读懂第4章代码前的最小练习集 ​

本实验为进入第4章独立手写标量自动微分引擎(Value)和实现有限差分数值对拍(gradcheck)建立稳固的编程与微积分直觉。你可以先在下方免安装的网页交互组件中即时体验核心数学机制,随后在本地运行完整的 36 道自动化判分练习集。


网页即时交互实验:中心差商数值导数与对拍 ​

在微积分理论中,导数定义为极限 limh→0f(x+h)−f(x)h。但在计算机浮点数世界中,由于存在截断误差与舍入误差,简单的单侧采样容易带来显著失真。现代深度学习引擎(如 PyTorch 与本书第 4 章的 gradcheck)普遍采用对称中心差商:

f′(x)≈f(x+h)−f(x−h)2h,h≈10−5

通过在 x 两侧对称采样,泰勒展开中的二阶误差项 f″(x)2h2 发生完美奇偶抵消,使截断误差由 O(h) 跃升至 O(h2)。

你可以直接在下方交互实验台中直观验证该物理机制,并在线完成测试用例对拍:

在线实验 02

中心差商数值导数与对拍演练

中心差商 [f(x + h) - f(x - h)] / (2h) 通过在目标点两侧对称采样,让泰勒展开中的二阶误差项相互抵消,达到 O(h²) 极高逼近精度。滑动下方的步长 h,观察割线如何完美收敛于真实切线。

选择测试函数:
解析切线斜率 (真实导数): 12.000000
中心差商割线斜率 (近似导数): 12.000000
解析真实导数 f'(x)12.00000000通过微积分法则直接推导
中心差商数值导数12.00000000 绝对误差: 2.118e-10
前向差商 (单侧采样)12.00006000 绝对误差: 6.000e-5 (比中心差商大 283235 倍)
Google Pro 云端实验

实验 02 · Python 与数学坡道 Colab 交互实验场

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

支持一键跳转 Google Colab Pro 运行;本章轻量数学计算 CPU 即可极速完成

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

在线 Python 终端沙箱 (按需加载 WebAssembly)

无需离开页面,在浏览器端直接手写 Python 代码并验证差商与 Softmax 计算
↗ 独立演练台
Python 3行 1, 列 119 行 · 546 字符
运行:⌘ / Ctrl + ↵
就绪 (点击运行)
点击右上角「▶ 运行」或按 ⌘/Ctrl+Enter 在浏览器端直接执行

交互实验指南与思考题 ​

  1. 几何割线逼近切线:在「几何直觉」标签中,滑动步长 h(从 1.0 逐步缩小至 10−5),观察蓝色实线(割线斜率)如何逐步旋转并精确重合到红色虚线(解析真实切线)上。
  2. 极端工况与浮点灾难:尝试将步长切换至 10−17,观察为何界面弹出红色警报?在 IEEE 754 规范中,当 h 小于计算机机器精度(ϵ≈2.22×10−16)时,浮点加法 x+h 将直接等于 x,导致分子相减归零。这正是工业级 autograd 不能将 h 取无限小,而是选用 10−5 的物理根因。
  3. 在线手写与断言对拍:切换至「在线手写」标签,尝试点击「试探前向差商」观察为什么测试用例报错未达标;再切换回中心差商,点击「运行对拍测试」,查看 4 组用例的实时 PASS 状态。

本地 36 题自动化测试重跑 ​

在通过网页交互建立直觉后,强烈建议在本地环境完成完整的 36 道 Python 与数学坡道练习(覆盖 dunder 魔术方法、闭包、NumPy 广播与梯度向量):

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

# 运行全量 36 道练习的自动判分套件
pytest python/tests/test_w0p_python_math.py -v

核心练习分类索引 ​

模块板块核心考察练习对应第4章手写机制
Python 最小集Vector2D.__add__、Vector2D.__mul__Value 类运算符重载与计算图构建
闭包机制make_counter、make_adder_backward 局部梯度反向传播闭包
NumPy 与张量numpy_shape_stride、manual_matmul广播机制与第7/8章高维张量变形
微积分直觉difference_quotient、partial_derivative数值有限差分与 gradcheck 对拍契约

下一步 ​

→ 返回第2章正文查看 Python 工程底座 或 第3章数学速查库
→ 进入实验 03:标量 autograd 与计算图实现

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