AI学习路线图:微积分
微积分是研究变化的数学。在 AI 中,它被用来优化模型参数,找到使损失函数最小化的最佳解,这是梯度下降等核心算法的基础。
1. 导数 (Derivative)
导数衡量函数在某一点上的瞬时变化率,也就是该点切线的斜率。在机器学习中,我们通过计算损失函数相对于模型参数的导数来更新参数。
动手试试:
拖动滑块,观察函数 `f(x) = x²` 在不同点 `x` 处的切线和导数值(斜率)的变化。
# 函数 f(x) = x^2
def f(x):
return x**2
# 导数 f'(x) = 2x
def df(x):
return 2*x
# 在点 x=1.0 处
slope = df(1.0)
print(f"在 x={1.0} 处的导数是: {slope}")
导数值 (斜率):
2. 偏导数与梯度
对于多变量函数,偏导数是函数相对于其中一个变量的导数,同时保持其他变量恒定。所有偏导数组成的向量就是梯度 (Gradient),它指向函数值上升最快的方向。
动手试试:
对于函数 `f(x, y) = x² + y²`,输入一个点 (x, y),计算该点的偏导数和梯度。
# 函数 f(x, y) = x^2 + y^2
# 偏导数
# ∂f/∂x = 2x
# ∂f/∂y = 2y
# 在点 (x, y) = (2, 3)
df_dx = 2 * 2
df_dy = 2 * 3
gradient = [df_dx, df_dy]
print(f"梯度 ∇f = {gradient}")
计算结果:
3. 链式法则与泰勒展开
链式法则用于计算复合函数的导数,是神经网络中反向传播算法的核心。泰勒展开用一个多项式来近似一个函数,在优化算法中非常重要。
泰勒展开 (Taylor Expansion)
拖动滑块,增加泰勒展开的阶数,观察多项式如何越来越好地近似 `sin(x)` 函数。
# sin(x) 在 x=0 处的泰勒展开
# f(x) ≈ f(0) + f'(0)x + f''(0)/2! * x^2 + ...
# 1阶: x
# 3阶: x - x^3/6
# 5阶: x - x^3/6 + x^5/120
# 当前选择阶数: 3