函数与极限 -- 微积分的起跑线
微积分是 AI 训练过程的数学引擎。在学导数之前,先回顾函数概念,再理解「极限」——微积分的核心思想。
什么是极限?
极限描述「当 x 无限接近但不等于某个点时,f(x) 趋近于什么值」。
例如:\( f(x) = \frac{x^2-1}{x-1} \),x=1 时无定义。但当 x 趋近于 1 时,f(x) 趋近于 2。
左极限
x → 1⁻(从左边接近)
f(0.999) → 2
极限
左右极限相等 → 存在
\( \lim_{x\to 1} f(x) = 2 \)
右极限
x → 1⁺(从右边接近)
f(1.001) → 2
连续 = 不断裂
f(x) 在 a 点连续:\( \lim_{x\to a} f(x) = f(a) \)——该点的极限 = 该点的函数值。
大多数损失函数(MSE、交叉熵)都是连续且可导的——这是能用梯度下降优化的前提。
生活例子
瞬时速度
你想知道在第 3 秒那一瞬间的速度。但「一瞬间」时间间隔为 0,位移也为 0,0/0 无意义。
微积分的解法:取越来越短的时间间隔,看平均速度趋近于什么值。这个趋近的值就是瞬时速度——也就是导数。
数学定义
\[ \lim_{x \to a} f(x) = L \]极限运算法则:和差积商的极限 = 极限的和差积商(分母极限不为 0)。
Python 动手实践
实例
def f(x):
return (x**2 - 1) / (x - 1)
print("=== lim_{x->1} (x^2-1)/(x-1) = 2 ===")
# 从左右两边逼近
for delta in [0.1, 0.01, 0.001, 0.0001]:
print(f"x = {1-delta:.4f}, f(x) = {f(1-delta):.6f}")
print(f"x = {1+delta:.4f}, f(x) = {f(1+delta):.6f}")
print("→ 无论从哪边逼近,f(x)都趋近于 2")
=== lim_{x->1} (x^2-1)/(x-1) = 2 ===
x = 0.9000, f(x) = 1.900000
x = 1.1000, f(x) = 2.100000
x = 0.9900, f(x) = 1.990000
x = 1.0100, f(x) = 2.010000
→ 无论从哪边逼近,f(x)都趋近于 2
AI 中的应用场景
梯度的定义依赖极限
导数的定义本身是极限:\( f'(x) = \lim_{h \to 0} \frac{f(x+h)-f(x)}{h} \)。反向传播中的梯度计算虽然用了解析求导而非数值极限,但极限的思想是理解「学习率不能太大」的关键——太大的学习率相当于用太大的 h 近似导数。
损失函数的连续性要求
梯度下降要求损失函数几乎处处可导。MSE 和交叉熵都是光滑连续的——这是它们成为标准损失函数的前提。Hinge Loss(SVM 用)在转折点处不可导,需要用次梯度代替。
激活函数的选择
ReLU 在 x=0 处不可导(左右导数不相等),但实践中用次梯度 0 代替,模型仍能正常训练。LeakyReLU 和 GELU 则处处可导,梯度流更平滑。
