积分、概率与梯度下降项目
本节目标
先把积分理解为累积与面积,连接连续概率、CDF 和期望;再用一个不依赖第三方库的线性回归项目,把 MSE 梯度、中心有限差分、梯度下降、发散检测和输入边界串成可运行、可测试的闭环。
积分的最低直觉
定积分把区间切成很多小片并累加:
若 是速度,积分给位移;若 是概率密度,积分给区间概率:
连续分布期望:
密度某点的高度不是该点概率。数值积分与 Monte Carlo 采样是复杂模型估计期望的常见方式,但样本误差仍需概率统计描述。
合法概率密度需满足 且全域积分为 1。累积分布函数:
在密度连续等合适条件下,。期望是按密度加权的平均,不是“最可能值”;长尾分布的期望还可能不存在。
微积分基本定理把累积与变化率连接:若 ,则 (合适条件下)。
数值积分把无限细分换成有限网格,存在离散误差;Monte Carlo 用随机样本近似期望,存在抽样误差。增大网格或样本只能减少相应随机/离散误差,不能修复错误密度、偏置采样或目标定义。
项目:拟合
实现:gradient_descent.py|测试:test_gradient_descent.py。
模型与梯度
对 个点拟合 ,均方误差:
解析梯度:
输入与训练契约
xs、ys等长且至少两个观测,每个值为有限实数;- 布尔、字符串、
NaN、无穷值和所有 相同的不可识别情况被拒绝; - 学习率、差分 step 和梯度容差必须为正有限数,训练步数为正整数;
- 更新前先在初始参数处比较解析梯度与中心有限差分;
- 训练中发现非有限数或 loss 相对初始值急剧增大时显式报发散;
- 输出包含数据量、step、学习率、初始/最终 loss、参数和最大梯度检查误差。
运行与测试
从 vault 根目录运行:
$env:PYTHONDONTWRITEBYTECODE = '1'
python -B '.\Knowledge\AI Agent Engineer\docs\微积分基础\examples\gradient_descent.py'
python -B -m unittest discover `
-s '.\Knowledge\AI Agent Engineer\docs\微积分基础\examples' `
-p 'test_*.py' `
-v中心差分:
它只用于小规模独立核验,不适合替代大模型反向传播。脚本预期输出:
observations=5 steps=2000 learning_rate=0.050000
initial-loss=9.000000000000 final-loss=0.000000000000
weight=2.000000 bias=1.000000
gradient-check-max-abs-error=1.118e-099 项测试覆盖解析梯度、中心差分、精确收敛、行顺序不变性、常量 、长度边界、非法数据、非法控制参数和过大学习率发散。项目使用显式异常与退出状态,不用会被 python -O 移除的 assert 承担关键验证。
2026-07-14 实际验证
在 Python 3.11.9 下,脚本以普通模式和
python -O模式运行结果一致;9 项unittest全部通过,两个 Python 文件也通过py_compile语法检查。验证生成的__pycache__已删除,未作为知识库内容保留。
必做实验
- 把学习率从 0.05 改为 1.0,记录 loss 是否发散。
- 故意删掉梯度中的因子 2,确认梯度检查失败。
- 将特征放大 100 倍,观察同一学习率为何不再合适。
- 加噪声后区分“无法精确拟合”与“优化器没收敛”。
- 扫描
difference_step从1e-2到1e-12,画出最大梯度误差;解释为何不是越小越好。 - 将 MSE 从
mean改成sum,同步推导梯度并说明学习率为何要重新选择。 - 为 loss 下降但验证指标恶化的情况写出停止和审计记录。
常见错误与排查
- 有限差分与解析梯度使用了不同数据、reduction 或参数点。
- 差分 step 太大产生截断误差,太小产生浮点消减。
- 只检查最终参数接近答案,却未检查初始梯度方向。
- 把发散留成巨大数值继续运行,而不是记录学习率、step 和首个异常位置后停止。
- 训练集精确拟合就宣称模型泛化或具有因果解释。
- 将输入放大后沿用旧学习率,却没有检查曲率和梯度尺度。
掌握检查
- 我能解释积分是累积,导数是局部变化。
- 我能手推 MSE 对 的梯度。
- 我会用有限差分验证,而不是只看最终 loss。
- 我能解释学习率与尺度的关系。
- 我知道训练 loss 通过不等于线上有效。
- 我能解释 9 项测试分别防止什么错误。
- 我会把非有限数和急剧增大的 loss 作为显式失败。
参考资料
核验日期:2026-07-14。
- MIT OpenCourseWare:18.01SC Single Variable Calculus
- Google ML Crash Course:Gradient Descent
- Google ML Crash Course:Hyperparameters
- PyTorch:Gradcheck mechanics
返回 微积分基础。