第2章 微积分:AI 的学习引擎
上一章,我们把数据变成了"数字积木"。这一章要回答一个更关键的问题:AI 到底是怎么学会"改自己"的?答案藏在微积分里 - 它是 AI 的"学习引擎"。别怕,这一章不讲推导,只讲三件事:变化有多快(导数)、往哪变最猛(梯度)、一环扣一环(链式法则)。看完你会恍然大悟:微积分,不过是"开车看速度表 + 爬山看坡度"而已。
2.1 导数:瞬间的变化率
先看一个你天天用、却没细想过的东西:汽车的速度表。它显示"60 公里/小时",可你并不是真的在 1 小时里跑了 60 公里 - 它说的是此时此刻的速度。问题来了:"此刻"没有长度,速度是怎么算出来的?答案是:先算一小段路的平均速度,再把这一小段越缩越短,短到几乎不存在,就得到了"瞬间的速度"。
\[ \text{平均速度}=\frac{\Delta s\;\text{(路程变化)}}{\Delta t\;\text{(时间变化)}} \]
人话解释:Δ 读作"德尔塔",意思就是"变化了多少"。把时间间隔 Δt 越缩越短,缩到几乎为 0,平均速度就变成了"瞬间速度" - 导数就是这么诞生的。
数学里,一个函数 \(y\) = \(f\)(\(x\)) 就像一条山路:\(x\) 是你站的位置,\(y\) 是这里的海拔。想知道这段路陡不陡,就量"升高了多少 ÷ 前进了多少",这叫平均坡度。可山路不是直的:前面可能陡,后面可能缓。于是我们做同样的事 - 把"前进的距离"缩得越来越短,得到的瞬间坡度,就是导数。
\[ f'(x)=\frac{\mathrm{d}y}{\mathrm{d}x}=\text{曲线在 }x\text{ 这一点的坡度} \]
人话解释:\(f'\)(\(x\)) 读作"f 撇 x",发音不重要,你只需要记住:导数 = 瞬间变化率 = 坡度。它是正数,说明 \(y\) 在往上走;是负数,说明在往下走;是 0,说明这一带是平的。
什么是切线?
在曲线上取一点,顺着曲线"擦"过去画一条直线,让它只和曲线碰一下、不穿过去,这条直线就是切线。切线是曲线在这一点最忠实的"复印件" - 它的坡度,就是曲线的坡度。所以求导数,也可以看成"找切线、量坡度"。
有了"坡度"这把尺子,我们就能回答:某个变量一动,结果会变多快。下一节,先认识几张 AI 世界出场率最高的"坡度表"。
2.2 常见导数速查表
先给你吃颗定心丸:这一节不用会推导,只用会"查"和"认"。就像你会用手机计算器,不需要懂里面怎么焊电路。真正训练 AI 时,框架(比如 PyTorch)会自动帮你算导数 - 你要做的,是看得懂它算出来的东西。
那为什么还要认识这几个导数?因为读别人的模型、调参、改网络结构时,这些"老朋友"会反复冒出来。下面这张表,就是 AI 世界里出场率最高的几位:
| 函数 \(f\)(\(x\)) 导数 $f’ | \((\)x$) 人话解释 | |
|---|---|---|
| \(C\)(常数) 0 | 平路 | ,怎么走都没有坡度 |
| \(x\) 1 | 45° | 的直坡,坡度恒为 1 |
| \(x^{2}\) 2 | \(x\) 越往右 | 越陡,坡度跟着 \(x\) 涨 |
| \(x^{3}\) 3 | \(x^{2}\) 同 | 款规律,但涨得更猛 |
| \(e^{x}e^{x}\) | 神奇函数:自己的坡度和自 | 己一模一样 |
| ln \(x\) 1/$x | $ 越往右越 | 平缓,坡度越来越小 |
| sin \(x\) cos | \(x\) 波浪曲线 | ,坡度像"平移"了一下 |
| \(ax\) + \(ba\) | 直线,坡度就是斜率 \(a\) |
记不住?没关系,记住一个口诀就够:幂函数求导,把指数拿到前面当系数,指数再减一(\(x^{2}\) → 2\(x\),\(x^{3}\) → 3\(x^{2}\))。剩下三个"怪咖"单独记:\(e^{x}\) 的导数还是 \(e^{x}\)(自己不变);ln \(x\) 的导数是 1/\(x\)(越往右越平缓);常数 \(C\) 的导数是 0(平路没坡度)。
为什么 eˣ 这么特殊?
\(e\) 约等于 2.718,是个"天生会自我复制"的数:它的曲线形状,和它自己的变化率一模一样。AI 里的 sigmoid、softmax(第 3 章会讲)全都靠它,所以值得你混个脸熟。
会用就行,不用会推导
就像你按下 Ctrl+C 能复制,不必懂操作系统的源码。这张速查表就是你的"公式字典",忘了随时翻回来。真正的 AI 框架会自动求导,你负责的是"认识它、信任它、知道它在算什么"。
最后补一句:导数不是一个数,而是一个函数 - 把每个位置的坡度都算出来,连起来又是一条线。比如 \(x^{2}\) 在每个点的坡度是 2\(x\):\(x\) 越大,坡越陡,跟"越往上爬越费劲"的感觉一模一样。
2.3 偏导数:多变量逐个看
上一节的函数都只有一个输入。可现实世界没这么简单:房价由面积、地段、房龄共同决定;你站在山坡上,面前既有东西方向,也有南北方向。AI 里的函数,输入常常是成千上万个。
问题来了:输入这么多,怎么知道"谁"影响了"多少"?答案是:一次只动一个。就像你想知道"亮度旋钮转一格,画面变多少",就把音量、对比度全部按住不动,只转亮度 - 转完松手,再试下一个。
这种"只动一个变量、按住其他变量"算出来的坡度,就叫偏导数。数学里用 ∂ 表示"偏":∂\(f\)/∂\(x\) 就是"只动 \(x\) 时,\(f\) 的变化有多快"。
\[ \begin{aligned} \frac{\partial f}{\partial x}&=\text{只改变 }x\text{ 时的坡度},\\ \frac{\partial f}{\partial y}&=\text{只改变 }y\text{ 时的坡度}. \end{aligned} \]
人话解释:∂ 读作"偏",和 d 长得像但含义不同:d 是"所有变量一起动",∂ 是"只动一个,其余全部按住"。这是它俩唯一的区别。
类比:调电视
一台电视的画面由亮度、音量、对比度共同决定。想知道"调亮度"的影响,就把另外两个旋钮固定住,只转亮度,看画面变化。偏导数就是这个"只转一个旋钮、其余按住"的实验 - AI 调参数,靠的正是成千上万次这样的"单旋钮实验"。
在 AI 里,模型有几十万、几百万个参数,训练时"该动哪个、动多少",靠的就是对每个参数分别算偏导数。一个人数众多的"旋钮面板" - 这正是下一节的故事。
2.4 梯度:指向最陡的方向
偏导数告诉你每个方向有多陡,但没告诉你:该往哪个方向走?想象你在大雾天的山坡上,能感觉到脚下东边陡、北边也陡,却看不清全局。这时候你最需要的是一根"方向仪" - 告诉你往哪走最快。
这根方向仪就是梯度。梯度的做法很朴素:把每个偏导数都当成一个"小箭头"(长短=有多陡,朝向=那个变量的方向),然后把它们拼成一个总箭头。这个总箭头,就叫梯度 ∇\(f\)。
\[ \nabla f=\left(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y}\right)\qquad\text{指向函数上升最快的方向} \]
人话解释:∇ 读作"nabla",读音不用记,记住含义:梯度就是把每个偏导拼成一个大箭头 - 方向=往上爬最陡的方向,长短=有多陡。它的反方向 −∇\(f\),就是最陡下山的方向。
AI 要的是"损失最小",也就是往山下走,所以它每一步都朝负梯度的方向挪:∇\(f\) 是"最陡上升",−∇\(f\) 才是"最陡下山"。这一来一回,就是下一章"梯度下降"的全部秘密。
为什么梯度总是垂直穿过等高线?
等高线是"同一高度"的线,沿着它走高度不变,等于白走;只有垂直方向才是在快速爬升或下降。所以"垂直穿过等高线"就是梯度的"指纹",看到它就认得。
类比:大雾天找下山路
看不见全局,只能感觉脚下哪边最陡,就朝反方向迈一步,再感觉,再迈 - 反反复复,总能下山。梯度就是那根"脚下最陡方向仪",AI 的下山路,就是这么一步步走出来的。
2.5 链式法则:连锁反应
前面讲的函数都是一步到位:\(x\) 进来,\(y\) 出去。但 AI 里的函数是套娃 - \(x\) 先变成中间量 \(u\),\(u\) 再变成 \(y\)。就像面包流水线:面粉 → 面团 → 面包,一环扣一环。
现在问题来了:我想让面包更松软,得先问"面粉加多少"?面粉的变化,会先影响面团,面团再影响面包。每一环都有个"传递比例",最后的总影响,就是把每一环的比例乘起来。这就是链式法则。
\[ \frac{\mathrm{d}y}{\mathrm{d}x}=\frac{\mathrm{d}y}{\mathrm{d}u}\frac{\mathrm{d}u}{\mathrm{d}x}\qquad\text{总影响等于各步影响的乘积} \]
人话解释:它只说了一件事:\(x\) 对 \(y\) 的总影响 = "\(x\) 对 \(u\) 的影响" × "\(u\) 对 \(y\) 的影响"。就像两段齿轮,每段都把转速放大 2 倍,最后就是 2 × 2 = 4 倍。
为什么这一节对你特别重要?因为神经网络就是一条巨大的流水线:输入 → 第 1 层 → 第 2 层 → …… → 输出,层数可能有几百层。训练时,我们想知道"最前面那层的参数该改多少",可误差是从最后输出的"差"往回传的 - 每一层都要"乘"一次影响比例。这个从后往前、一路相乘的过程,就是大名鼎鼎的反向传播(Backpropagation)。
记住这一句
链式法则 = 连锁反应 = 每一步的影响相乘。反向传播,就是链式法则在神经网络里的工程实现 - 它靠"乘法"把误差从输出端一路传回输入端,告诉每个参数该往哪调。
需要你会算吗?
不需要 - 框架会自动算。你只需要记住"连锁相乘"这个直觉。等第 7 章看到反向传播的代码时,你会一拍大腿:哦,原来就是它!
2.6 微积分在 AI 里到底干嘛
现在把这一章串成一条完整的线。先回答一个总问题:AI 的"学习"到底在干嘛?答案是四个字 - 调参数,让损失变小。损失(loss)是衡量"模型答得有多差"的一个数:答得差,损失大;答得好,损失小。
第一步:把"损失"画成一座山。横轴是参数(先简化成一个,代表所有参数),纵轴是损失。参数不同,损失不同,连起来就是一座"损失山" - 你现在的表现在山顶附近,我们想去的地方在谷底。
第二步:梯度下山。站在损失山上,用梯度这根"最陡方向仪"找路,每一步朝负梯度方向挪一小步:
\[ w_{\text{新}}=w_{\text{旧}}-\eta\frac{\partial L}{\partial w}\qquad\text{新参数=旧参数-学习率×梯度} \]
人话解释:\(\eta{}\)(学习率)就是"步子迈多大",第 4 章会细讲,这里先混个脸熟:导数告诉方向,学习率告诉步幅。这套"摸着最陡的方向一步步往下走"的方法,就是梯度下降。
第三步:反向传播。但损失山有个麻烦:参数有上百万个,山是"百万维"的,没法一眼看全。反向传播用链式法则,从输出端把误差一路"乘"回输入端,一口气算出每个参数的偏导 - 相当于给这座百万维大山配了一台自动化测量仪。
类比:微积分 = 方向盘 + 油门
导数告诉你"往哪调、调多少"(方向盘),学习率决定"踩多狠"(油门)。没有它,AI 就只能瞎猜参数;有了它,AI 才能一步一个脚印,越学越好。
所以,微积分不是一门要背公式的课,而是 AI 的"学习引擎":导数给它坡度,梯度给它方向,链式法则帮它穿透层层网络。现在,你手里已经握着这台引擎的钥匙了。
本章要点
- 导数 = 瞬间变化率 = 坡度;正负号告诉你它在上升还是下降。
- 常见导数不用会推,会用就行:\(x^{2}\) → 2\(x\),\(e^{x}\) → \(e^{x}\),ln \(x\) → 1/\(x\),常数 → 0。
- 偏导数 = 只动一个变量、按住其他变量看变化率(山坡的东西、南北两个坡度)。
- 梯度 = 把每个偏导拼成一个箭头,指向最陡上升;−∇\(f\) 是最陡下山,AI 靠它下山。
- 链式法则 = 连锁反应 = 每步影响相乘;反向传播就是它在神经网络里的工程实现。
- 一句话总结:微积分让 AI 知道每个参数该往哪调、调多少。




