WMX · 随记
·AI· 3 分钟阅读

有限差分:用数值近似检查梯度方向

手写一个求导公式后,符号或系数错误可能让优化器朝反方向走。有限差分能作为小规模梯度检查工具。

▶ 本文含视频讲解
▶ 教学视频手动播放 · 英语讲解

Gradient descent, how neural networks learn

结合模型讲解理解本文实验的背景;正文提供可独立运行的简化示例。此为外部原版课程,多篇笔记可能共用;未剪辑为本文专属视频。

播放器需要能访问 YouTube 的网络;若这里无法加载,可打开原视频。本文与本地图解仍可独立阅读。

AI 系列概览:模型机制、系统边界与效果评估
AI 系列概览:模型机制、系统边界与效果评估 点击图片查看大图 ↗

问题从哪里出现

手写一个求导公式后,符号或系数错误可能让优化器朝反方向走。有限差分能作为小规模梯度检查工具。

理解核心机制

中心差分用 f(x+h) 与 f(x-h) 的变化估算导数。h 太大时截断误差明显,太小时相减会放大浮点误差,因此它适合检查而不是替代大模型反向传播。

动手做一个小实验

Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。数字与样本均为教学演示,不代表真实模型或服务器的测量结果。

Python9 行 · 可横向滚动
def loss(x):
    return (x - 3.0) ** 2
x, h = 1.0, 1e-5
numeric = (loss(x + h) - loss(x - h)) / (2 * h)
analytic = 2 * (x - 3.0)
assert abs(numeric - analytic) < 1e-6
updated = x - 0.1 * analytic
assert loss(updated) < loss(x)
print(numeric, analytic, updated)

适用边界与常见误区

非光滑点、随机层和状态更新会使检查复杂化。应先固定随机性,并避免把数值差分的误差直接认作自动微分错误。

继续练习

将 h 从 1e-1 改到 1e-12,记录误差趋势;再对绝对值函数在零点附近尝试,说明导数假设哪里失效。

参考资料

阅读相关官方文档或原始资料 ↗

← 返回文章归档