一元导数、切线与变化率
层级:A|必学
1. 导数回答“输入动一点,输出怎样变”
训练模型就是调整参数让损失下降。导数提供函数在当前位置的局部斜率:正导数表示向右走函数上升,负导数表示向右走函数下降,绝对值表示局部敏感程度。
2. 平均变化率
从 x 到 x+h:
hf(x+h)−f(x)
是区间平均变化率,也是两点割线斜率。要得到某一点的瞬时变化率,让 h→0。
3. 导数定义
f′(x)=h→0limhf(x+h)−f(x),
若极限存在。常见记号还有
dxdf,dxdy,Df(x).
导数是一个新的函数,把每个可微位置映射为斜率。
4. 从定义推导 x2
令 f(x)=x2:
h(x+h)2−x2=h2xh+h2=2x+h.
令 h→0:
f′(x)=2x.
这不是把指数“搬下来”的魔法,而是局部差商极限的结果。
5. 切线与线性近似
函数在 x0 的切线:
y=f(x0)+f′(x0)(x−x0).
当 Δx 很小时:
f(x0+Δx)≈f(x0)+f′(x0)Δx.
导数是最佳局部线性近似的系数。梯度下降正是利用该近似,选择让一阶变化为负的方向。
6. 导数符号与单调性
在一个区间内:
- f′(x)>0:函数递增;
- f′(x)<0:函数递减;
- f′(x)=0:该点是驻点候选。
驻点不一定是极小值。f(x)=x3 在 0 导数为 0,却既不是局部最大也不是局部最小。
7. 二阶导数与曲率
f′′(x)=dxdf′(x).
它描述斜率如何变化:
- f′′(x)>0:局部向上弯,导数递增;
- f′′(x)<0:局部向下弯;
- 在驻点处,f′′(x)>0 常可判定局部极小,<0 判定局部极大;
- f′′(x)=0 时二阶检验不确定。
例如 f(x)=x2,f′′=2>0;f(x)=x4 在 0 二阶导为 0,但仍是极小点。
8. 常用基本导数
dxdc=0,
dxdxp=pxp−1,
dxdex=ex,
dxdlogx=x1(x>0),
dxdsinx=cosx,dxdcosx=−sinx.
三角函数不是经典机器学习主线,但周期时间编码和某些表示方法会用到。
9. 极值必要条件
若可微函数在定义域内部点 x∗ 取得局部极值,则
f′(x∗)=0.
这是必要条件,不是充分条件,并且不覆盖:
- 边界极值;
- 不可微点,如 ∣x∣ 在 0;
- 无穷远处的下确界。
优化时不能只解 f′=0 就宣布全局最优。
10. 导数与单位
若 x 单位是小时、f(x) 单位是请求数,f′(x) 单位是“请求数/小时”。在机器学习中参数和特征尺度会直接影响导数大小,这解释了为何标准化和学习率选择相关。
11. 数值导数
前向差分:
f′(x)≈hf(x+h)−f(x).
中心差分:
f′(x)≈2hf(x+h)−f(x−h).
中心差分通常更准确。h 太大,局部近似差;太小,相减产生浮点消去误差。数值导数适合验证,不适合替代大规模自动微分。
12. 一维梯度下降
xt+1=xt−ηf′(xt).
若导数为正,向左移动;导数为负,向右移动。学习率过大可能越过谷底甚至发散,过小则收敛慢。导数只提供局部信息,非凸函数中可能到达不同局部极值。
易错点
- 导数是局部变化率,不是函数值。
- 导数为零不保证极小。
- 不可微不等于不连续,连续也不保证可微。
- 二阶导数为零时不能直接判定。
- 数值差分的 h 不是越小越好。
常见问答
Q1:神经网络 ReLU 在 0 不可导,为什么还能训练?
不可导点集合很小,框架选定一个次梯度值;随机浮点训练精确落在该点并长期受其影响的机会有限。非光滑优化本身也有成熟理论。
Q2:梯度很大是否说明离最优点很远?
不一定。它表示局部斜率大,受函数尺度和曲率影响;有些地方离最优点近但很陡,有些地方远却很平。
Q3:二阶导数与学习率有什么关系?
曲率大时同样步长更容易越过谷底。二次函数稳定步长上限与最大曲率(Hessian 最大特征值)相关。
练习
- 用定义求 f(x)=3x+2 的导数。
- 求 x3−4x 的一阶与二阶导数。
- 求 f(x)=(x−2)2+1 的驻点和最小值。
- 给出一个导数为零但不是极值的例子。
- f(x)=x2,从 x=3、学习率 0.1 做一步梯度下降。
答案与提示
- 3。
- 3x2−4 与 6x。
- x=2,最小值 1。
- x3 在 0。
- 导数 6,新位置 3−0.6=2.4。