深度学习核心 · 3分钟学会

蒙眼下山
梯度下降通俗指南

想象你被蒙住眼睛,空降在大雾弥漫的山中。
每次往哪走、走多远,机器是怎么算出来的?

向下滑动
第一步 · 蒙眼下山

蒙眼下山:什么是梯度下降?

1 场景设定

你被蒙住双眼,空降在大雾弥漫的山中。看不见全貌,只知道:必须尽快走到山谷最低点。

你唯一的工具是——脚。你能感知脚下地面的坡度。于是你本能地会:

探方向

用脚试探四周,找出最陡的下坡方向

迈一步

朝那个方向迈出小小的一步

重复

停下,再试探,再迈步,直到脚下平坦

2 映射到机器学习

山的世界机器学习
海拔高度损失函数 Loss(越高 = 误差越大)
你所在的位置模型参数(Weights)
脚下的坡度梯度 Gradient(告诉往哪走)
迈步下山更新参数
山谷底部最优解(Loss 最低)
一句话记住:梯度下降 = 每次站在当前位置,找到最陡的下坡方向,迈一小步,重复。直到走到走不动为止(Loss 最低)。
第二步 · 计算公式

梯度下降公式:每次向最低点挪一点

1 核心公式

xnew = x − η · f′(x)
x = 当前位置  |  η = 步子有多大(学习率)  |  f′(x) = 坡度有多陡

2 公式的含义

这个公式说的是:每次把 x 往最小值的方向挪一点点

就好比你站在山坡上,要往山谷底部走:

x

你当前在哪个位置。参数值。

η · f′(x)

这一步要挪多远、往哪边挪。

x_new

挪完之后的下一个位置。

重复这个动作很多次,x 最终会停在 f(x) 的最低点。

3 具体例子走一遍

找 f(x) = x² 的最低点,从 x = 3 开始,η = 0.1:

步骤当前位置 x坡度 f′(x)挪动 η·f′新位置 x_new函数值 f(x)
03+60.1×6 = 0.62.49.00
12.4+4.80.1×4.8 = 0.481.925.76
21.92+3.840.1×3.84 = 0.381.543.69
...一直重复,慢慢逼近 x=0

每次都往最低点挪一点,x 从 3 → 2.4 → 1.92 → ... → 越来越接近 0。

第三步 · 步长计算

步长怎么算?为什么是 η · f′(x)?

1 η · f′(x) = 步长,但分开看更清楚

公式里 η · f′(x) 这一项,代表"这一步要挪多远"。它由两部分组成:

η(学习率)

基础步长基数。你决定每一步最多走多远。比如 η=0.1,就是最多走 0.1。

f′(x)(坡度)

坡度有多陡。陡坡就多走几步,平坡就少走几步——这是自动调节的部分。

η · f′(x) = 基础步长 × 坡度调节 = 实际步长
坡陡(大 f′)→ 步长大  |  坡缓(小 f′)→ 步长小

2 坡度越大 → 步长越大 → 自适应

这个设计非常巧妙——完全不需要人工调节步长:

地形坡度 f′(x)步长 η·f′(x)效果
陡坡(离谷底远)大步快跑 ✅
接近谷底小步精找 ✅
谷底00自动停止 ✅

这就是自适应步长:坡陡就大步,坡缓就小步,算法自动完成。

第四步 · 为什么要减

为什么要"减去"导数?

1 坡度正数时:减去正数 = 往左走

假设你在 x = 3,f′(3) = 6(正数)。

你在 x = 3

坡度 = +6
(正,右边高左边低)

最低点在左边

要往左走
→ 减小 x

=
x − 6 = 往左移

3 − 6 = −3
✅ 方向正确

坡度正 → 最低点在左边 → 减正数 → x 减小 → 往左走 ✅

2 坡度负数时:减去负数 = 往右走

假设你在 x = −3,f′(−3) = −6(负数)。

你在 x = −3

坡度 = −6
(负,右边低左边高)

最低点在右边

要往右走
→ 增大 x

=
x − (−6) = 往右移

−3 + 6 = 3
✅ 方向正确

坡度负 → 最低点在右边 → 减负数(加正数)→ x 增大 → 往右走 ✅

3 一个减法,统一了所有情况!

坡度正 → 减正数 → 往左走
坡度负 → 减负数 → 往右走
无论坡度正负,统一执行减法,机器就能自动找对方向

这就是减法的精妙之处!不需要判断坡度正负再决定是加还是减,直接一个减号,全部搞定。

核心理解:坡度是一个"方向信号"——告诉你应该往哪边走。减号把这个信号翻译成行动:正就减,负也减,但效果截然不同。
第五步 · 学习率

为什么还要乘以 η(学习率)?

1 坡度不能直接用,要有限速

坡度 f′(x) 是一个"信号",告诉你方向和相对力度。但它不能直接拿来当步长用

因为如果坡度太大,直接用会出问题:

❌ 坡度太大

假设 f′ = 1000(悬崖边)
直接减 → 一步跳过了整个山谷

✅ 乘以 η 后

0.1 × 1000 = 100
还是有点大,但可控制了

✅ η 小一点

0.001 × 1000 = 1
安全步长,慢慢逼近

2 η 的作用:把"信号"变成"步长"

坡度 f′(x) 是一个无量纲的比值,η 把这个比值转换成具体的移动距离。

η · f′(x) = 信号转换器 × 坡度信号 = 实际步长
η 决定"每收到一个单位的坡度信号,我走多远"

3 η 太大 vs η 太小

情况现象结果
η 太大步子迈太大跳过山谷,Loss 震荡/发散 ⚠️
η 太小步子像蚂蚁收敛极慢,收敛时间太长 ⏰
η 合适步子适中稳步下山,快速收敛 ✅

实际工程中 η = 0.01 ~ 0.1 是常用范围。需要通过实验调整。

第六步 · 互动演示

互动演示

你可以试试:拖动滑块设置起点和学习率,点击「下一步」或「自动播放」,看梯度下降怎么走。

点击"下一步"开始
5
0.15
等待开始...
总结

梯度下降是什么?

每次挪一点

x_new = x − η·f′(x)。每次把参数往 Loss 最低的方向挪一小步。

η·f′(x) = 自适应步长

坡陡大步,坡缓小步,完全自动。f′(x) 充当动态调节器。

减号 = 统一行动指令

无论坡度正负,统一减法,自动找对方向。

η = 限速器

把坡度信号转成实际步长。太大跳过谷底,太小爬不动。

xnew = x − η · f′(x)
站在当前位置,感受坡度,然后反着坡度的方向走一步
坡陡大步,坡缓小步——这就是梯度下降。
相关阅读:梯度下降在线性回归中的完整应用(含 MSE 与参数更新),见 《线性回归详解》
返回首页