LESSON 05 · 卷 基础数学

什么是梯度

蒙着眼睛站在山坡上,怎么走到山谷最低点?

第 1 站

蒙着眼睛下山

先把所有数学符号放一边,来做一个想象游戏。

你被蒙上眼睛,独自站在一片连绵起伏的山坡上。任务只有一个:走到这片山谷的最低点。 你看不见远处的地形,不知道最低点在哪个方向、有多远。你唯一能依靠的, 是脚底下的触感——抬起一只脚,往四周探一探,就能感觉到哪边是上坡、哪边是下坡,以及坡有多陡。

换作是你,会怎么走?几乎每个人都会想到同一个办法:

  • 用脚探一圈,找出脚下最陡的下坡方向
  • 朝那个方向迈一小步
  • 站定,再探一圈,再迈一步……如此重复。

只要每一步都朝着「当前最陡的下坡」走,你迟早会走到一个四面都是上坡的地方——那就是谷底。 这个朴素到不能再朴素的办法,就是神经网络训练的核心思想

谷底起点每一步都朝当前最陡的下坡走
图 5-1蒙眼下山法:感受脚下最陡的下坡方向 → 迈一小步 → 重复。不需要看见全貌,也能一步步逼近谷底。

接下来四站,我们要做的只有一件事:把「用脚感受坡度」这个动作,翻译成计算机能算的数学。 这条翻译之路会依次经过四个概念——导数、偏导数、方向导数,最后总结梯度

第 2 站

导数:曲线在一点的斜率

先把问题简化到极致。假设我们退到足够远的地方,把这座山起起伏伏的走势抽象成平面上的一条函数曲线—— 比如下面这样一条简单的三次曲线。横轴 是你在地面上的位置,纵轴 是该位置的高度,整条曲线就是这座山的「侧影」。

谷底 · 上帝一眼看到你在这里往左 · 上坡往右 · 下坡 ✓位置 x →
图 5-2把山的走势抽象成一条函数曲线。我们俯瞰整张图,一眼能定位谷底;可身处其中的人看不到全局,只能在脚下往左、往右各探一点点,凭升降来判断方向——而升降,正由曲线在该点的斜率决定。

看这张图:我们正端详着整条曲线,带着上帝视角——一眼就能看出谷底在哪、是该往左还是往右走才能到最低点。 可真正身处山中的那个人没有这种视角:他眼前一片漆黑,看不到整条曲线,只知道自己此刻所在的这一个点。 他能做的,只是朝左挪一点点、朝右挪一点点,感觉一下是升还是降,哪边下降就往哪边走。

把这个「左右试探」翻译成数学,靠的就是曲线在你脚下那一点的斜率

  • 斜率为 → 曲线正在上升:往右( 增大)是上坡,往左才是下坡;
  • 斜率为 → 曲线正在下降:往右就是下坡。

斜率的正负告诉你哪边是下坡,斜率的大小告诉你坡有多陡。于是「该往哪走、走得多急」整个被归结成一个计算问题:怎么算出曲线在某一点的斜率?

麻烦在于:直线的斜率好算——任取两点,「竖直方向的上升量 ÷ 水平方向的移动量」,而且整条直线处处是同一个值; 可曲线是弯的,它在每一点的陡峭程度都不一样,根本没有一个统一的「上升 ÷ 移动」。 数学专门为「曲线在一点的斜率」造了一个工具,名字就叫导数(derivative),记作 。那它到底怎么算?

办法其实很自然:直线斜率要取两点,那就先在曲线上也取两点。设你站在位置 , 往旁边挪一小段 ,落到第二点 ;高度相应改变 。 连接曲线上这两点的直线叫割线,它的斜率 是这一小段上的平均斜率—— 可它还不是 那一点的斜率,跨度越大、偏差越大。

位置 x →h(x)=(x−4)²ΔxΔh切线割线P (x₀)Q (x₀+Δx)
Δx = 2.40割线斜率 Δh/Δx = -3.60切线斜率 = -6.00
图 5-3拖动滑块缩小 :第二点 沿曲线滑向 ,橙色割线越转越贴近黑色切线,割线斜率 也随之逼近切线斜率 。这就是「取极限」的全过程。

关键的一步来了:让 不断缩小、趋近于 ,第二个点就沿曲线滑回 , 割线也随之越转越贴合曲线,最终绷成只在 处轻轻擦过的切线。这条切线的斜率, 就是曲线在 这一点的精确斜率。用极限把它钉死,就得到导数的严格定义。

数学定义 · 导数

设函数 在点 的某个邻域内有定义。当自变量在 处取得增量(点 仍在该邻域内)、相应地函数取得增量 时,如果当 时极限

存在,就称函数 在点 可导,并称这个极限值为 在点 处的导数,记作,也记作 。 如果上述极限不存在,就说函数在这一点不可导

注意:导数 一个具体的数,它依赖于你站在哪一点 。 如果这条曲线每一点都可导,那么每给定一个位置 ,就唯一对应一个斜率值 。 这种「位置 ↦ 斜率 」的对应关系,本身又构成一个新的函数, 叫做 导函数(derivative function),记作

一句话分清这对容易混淆的概念:导数是某一点上的一个数(比如 );导函数是覆盖所有点的一整个函数(比如 )。把具体的 代进导函数,得到的就是那一点的导数。所以日常说的「求导」,通常是指先求出导函数 ,用到哪点再代入哪点。 不过有时候为了简单,也把导函数直接称之为导数——具体指哪一个,看上下文就知道。

下面用一条最简单的曲线,把上面的极限定义实地跑一遍——取一条开口向上的抛物线(它正是这类曲线里最简单的特例,只有一个谷底):

这条抛物线的最低点在 。我们不借助现成的求导公式,直接套用上面的定义, 把它的导函数从极限算出来:

于是得到导函数 。现在你站在 的位置,把它代进导函数,就得到这一点的导数:

这个 在告诉你两件事:

  • 符号是负的 → 往右走( 增大)高度会下降,所以这一点往右是下坡。
  • 大小是 6 → 坡挺陡的,挪一步高度掉得快。

所以「下坡」这件事,被一个数完全说清楚了:朝着让导数下降的方向走—— 也就是导数为负时往 增大的方向走,导数为正时往 减小的方向走。一句话:沿导数的反方向走,就是下坡

图 5-4导数就是曲线在某一点的切线斜率。 处斜率为 (负、且陡),说明往右是下坡且下降很快。这正是「脚底感觉」的精确版本。
如果不用导数,你会怎么判断该往东还是往西?这个办法有什么坏处?
第 3 站

偏导数:山其实是二维的

刚才那条「只能东西走」的小路太理想了。真实的山坡是一片开阔的二维地面: 你可以往东西(坐标 )走,也可以往南北(坐标 )走。海拔高度同时取决于两个坐标,写成

下面这张图,就是把高度 真正立起来看——一个开口朝上的。 用鼠标拖一拖,你能从任意角度打量它:碗底是最低点,越往边缘海拔越高。蒙着眼站在碗壁上的你,要做的就是滚到碗底。

可拖拽旋转 · 滚轮缩放

图 5-5二维函数 的立体曲面。红点是你现在的位置 ,深色点是碗底 。坡度该怎么测?

很自然的想法是分两次量

  • 站着别往南北动,只往东西挪一点,量出东西方向的坡度;
  • 站着别往东西动,只往南北挪一点,量出南北方向的坡度。

这两个「只动一个方向、其余按住不动」量出来的坡度,就叫偏导数(partial derivative), 用一个圆头的 来写,区别于单变量的

=只往东西动时的坡度=只往南北动时的坡度

「偏」这个字就是「偏心、只顾一个」的意思——求 时,把 当成钉死的常数, 只看 怎么影响高度。对刚才那个碗求两个偏导数:

假设你现在站在 。代进去:

东西方向:导数为负 → 往东是下坡南北方向:导数为正 → 往北是上坡,往南才是下坡
谷底 (4,2)你在 (1, 5)∂h/∂x:往东下坡∂h/∂y:往南下坡东 →↑ 北
图 5-6把碗从正上方俯视,就是一圈圈等高线。偏导数把二维坡度拆成两个「只动一根轴」的坡度:东西方向往东下坡,南北方向往南下坡。越往里海拔越低。

现在你手里有了两个数。但问题来了:你真正想知道的,不是「沿东西」或「沿南北」的坡度, 而是「随便朝哪个方向迈步,坡度是多少」——尤其是哪个方向最陡。下一站解决它。

第 4 站

方向导数:朝任意方向看坡度

下山时你并不会傻乎乎地只沿正东或正南走——你会朝任意一个方向探脚,比如「东偏南 30°」。 沿着某个指定方向迈步时的坡度,就叫方向导数(directional derivative)。

神奇的是,你不需要对每个方向都重新实地测一遍。只要有了两个偏导数, 任意方向的坡度都能算出来。把你想走的方向写成一个单位向量 ,那么:

看右边这个式子——它正是第 2 课讲过的点积!把两个偏导数拼成一个向量,方向导数就等于它和方向 的点积。 而我们当时讲过,,几何上就是「投影」

这一下就把问题点透了。沿用上一站的数:在 处那个「坡度向量」是 。 试几个方向,算算各自的坡度( 取单位向量):

正东东偏南正南西偏北同一个点,不同方向,坡度天差地别 → 总有一个「最陡」
图 5-7站在同一点,朝不同方向迈步,坡度各不相同。正东、正南都是下坡(),但「东偏南」那个方向下降最快——它恰好对着碗底。

这里藏着一个关键直觉。方向导数 = 坡度向量在 方向上的投影。 一个固定向量投影到不同方向上,什么时候投影最长?当 和它方向完全一致的时候。换句话说——坡度最陡的方向,就是那个「坡度向量」自己指的方向

为什么「最陡的方向」恰好是坡度向量自己指的方向?用点积 = |a||b|cosθ 想一想。
第 5 站

梯度:最陡方向,打包成一个向量

上一站那个反复出现的「坡度向量」,其实就是本课的主角。把所有偏导数排成一个向量, 它有一个正式的名字——梯度(gradient),记作 (读作 "nabla h"):

梯度不是新算出来的东西,它就是把第 3 站的几个偏导数装进一个向量。 但这个打包动作让它一下子有了两个极其有用的几何含义,正是第 4 站推出来的结论:

  • 方向:梯度指向上升最快(坡最陡)的方向。
  • 大小 就是那个最陡方向上的坡度有多陡。

处,,指向「西偏北」——那是爬升最快的方向。 而我们要下山,所以朝它的正反方向走,也就是 =「东偏南」,这正是图 5-7 里最陡的下坡。 于是「蒙眼下山」的每一步,变成了一个干净的公式:

减号就是「朝梯度反方向走」; 是步长(迈多大步)。这个动作不断重复,就把你一步步带向谷底。 它有个正式名字,梯度下降(Gradient Descent)。

图 5-8梯度 永远垂直于等高线、指向上升最陡的方向。沿它的反方向()一步步走,就垂直穿过一圈圈等高线,最快地逼近谷底。红线是真实算出来的梯度下降轨迹。

注意一个收束:第 4 站说「最陡方向就是坡度向量指的方向」,第 5 站给这个向量起名叫梯度。 所以梯度的全部意义,就是替你完成了「用脚探一圈、找最陡方向」这件事——而且是一次计算精确给出,无需试探。

第 6 站

从山坡到神经网络

最后,把场景换回 AI——你会发现神经网络训练就是一次「蒙眼下山」,只是换了套名字: 山的海拔高度,对应模型的损失(预测错得多离谱);你站的位置坐标, 对应模型的所有参数脚下最陡的下坡方向,就是梯度的反方向。 走到谷底,就是把损失训练到最小。

唯一的区别是维度:山坡只有 两个坐标,而大模型有上千亿个参数 。 道理却一字不差——损失对每个参数都有偏导数,打包成梯度 ,再同时更新所有参数:

一次更新,就把上千亿个参数全部朝「损失更小」的方向推了一步。这就是神经网络训练的核心引擎。 至于下山路上的坑(会不会卡在小水洼里、步子 怎么选、上千亿个梯度如何高效算出来), 都留到后面的神经网络篇章再展开——梯度下降(第 12 课)和反向传播(第 13 课)会专门讲。

本课核心 · TAKEAWAY

梯度就是「蒙眼下山时脚底感受到的最陡方向」的数学版本。 一维时它是导数(一个坡度数);多维时先对每根轴求偏导数, 任意方向的坡度由方向导数(梯度与方向的点积)给出; 而坡度最陡的方向,就是把偏导数打包成的向量——梯度 ∇L。 沿其反方向更新参数 w ← w − α·∇L,就是整个神经网络训练的核心机制。

这一课你一步步走过了

  • 导数 dh/dx:单变量时的精确坡度,符号给方向、大小给陡峭程度。
  • 偏导数 ∂h/∂x:多变量时「只动一根轴、其余按住」量出的坡度。
  • 方向导数:任意方向的坡度 = 梯度与该方向的点积(投影),无需逐个实测。
  • 梯度 ∇L:所有偏导数组成的向量,指向上升最陡的方向;下山就走它的反方向。
  • 梯度下降:w ← w − α·∇L,一步把全部参数推向更低的损失。
小测验

学习小测验

做完这一课,来检测一下核心知识点。选出你的答案后点击「提交」,即可看到正确选项与讲解。

Q1蒙眼站在山坡上想尽快下到谷底。「梯度」在这个比喻里扮演什么角色?
Q2当一个点的梯度变成(接近)零向量时,通常意味着什么?
NEXT · 第 6 课

概率与信息

神经网络的输出为什么叫「概率」?——从频率的定义到交叉熵损失的来历

0 人点赞,0 人看过