前面讲了一大堆导数和梯度下降的理论,你可能在想:道理我懂了,但它真的能用吗?
这一篇我们用最普通的工具——Excel——亲手跑一遍梯度下降。不需要 Python,不需要框架,只需要一张表格,10 步迭代,就能看到参数如何"滑"向最小值。
书中把这个实验称为"用 Excel 进行最优化的体验",我认为这是全书 2-11 节最让人恍然大悟的部分。
一、实验设定:一个简单的二次函数
我们用一个最简单的例子:一元二次函数 。它的图像是一条开口向上的抛物线,最小值为 处。
函数: 导数: 初始值:(故意选得远一点) 学习率:
二、Excel 里的 10 步梯度下降
下面是 Excel 实际运算表格的精简版(书中有完整截图,我们在 Python 中复现相同逻辑):
defz(x):return2*x**2 - 4*x + 3defgrad_z(x):return4*x - 4x = 5.0# 初始值:远离最小值eta = 0.1# 学习率print(f"{'步数':>4s}{'x':>8s}{'z':>8s}{'梯度':>8s}{'Δx=-η·梯度':>12s}")print("-" * 48)for step in range(11): g = grad_z(x) dx = -eta * g print(f"{step:4d}{x:8.4f}{z(x):8.4f}{g:8.4f}{dx:12.4f}")if step < 10: x = x + dx输出:
步数 x z 梯度 Δx=-η·梯度------------------------------------------------ 0 5.0000 33.0000 16.0000 -1.6000 1 3.4000 12.5200 9.6000 -0.9600 2 2.4400 6.1472 5.7600 -0.5760 3 1.8640 3.4134 3.4560 -0.3456 4 1.5184 2.2290 2.0736 -0.2074 5 1.3110 1.8734 1.2442 -0.1244 6 1.1866 1.7415 0.7465 -0.0746 7 1.1120 1.7210 0.4479 -0.0448 8 1.0672 1.7090 0.2687 -0.0269 9 1.0403 1.7033 0.1612 -0.0161 10 1.0242 1.7012 0.0967 -0.0097观察这个表格:
x 从 5.0 一路向 1.0 靠近——1.0 正是一阶导数为 0 的位置() z 从 33 一路降到约 1.7——越来越接近理论上的最小值 梯度从 16 一步步缩小——这是函数趋于平坦的信号。梯度越小,表示越接近谷底 步长随梯度递减——每步的 越来越小。刚开始大步快跑,接近终点时碎步调整
三、从表格里读出的直觉
这张表告诉我们的东西比公式更直观:
直觉一:学习率决定了每步迈多大
如果把 改成 0.5(变大 5 倍),前几步会"跳得太远"。书中演示了 时会发生振荡——x 在 1 附近来回跳跃,需要更多步才能稳定。
如果把 改成 0.01(变小 10 倍),每一步只挪一点点,x 可能到第 100 步还离 1.0 很远。
直觉二:只要梯度不为 0,就在进步
每一步的梯度绝对值都在减小,说明我们确实在朝最小值走。当梯度趋近于 0,更新几乎停摆——这是好事,说明已经到谷底。
直觉三:梯度下降天生"先快后慢"
远离最小值时梯度大,步长大,下降快;接近最小值时梯度小,步长小,调整精细。这种自然衰减行为,让算法在效率和精度之间取得了不错的平衡。
四、在 Excel 里实际操作的步骤
书中给出了精确的 Excel 操作指南:
A 列:步数(0, 1, 2, ...) B 列:当前 x 值。B2 填入初始值 5,B3 填入公式 =B2 - 0.1 * (4*B2 - 4)(相当于 ),然后向下拖拽C 列:当前 z 值。填入公式 =2*B2^2 - 4*B2 + 3,向下拖拽
就这么简单!两列公式、一拖到底,梯度下降就自动跑起来了。
书中还特意展示了 、、 等不同学习率的对比,形成鲜明的视觉对比。没有反复试验,就没有恰到好处的步长。这是实践中梯度下降的常态。
五、从 Excel 到神经网络
这个一元二次函数的例子看起来简单,但它和神经网络的学习在数学上是同构的:
唯一的区别是变量从 1 个变成了 47 个(甚至更多),但每步的公式结构完全不变。理解了 Excel 表格里的那个 B2 - 0.1*(4*B2 - 4),就理解了梯度下降法的全部。
六、小结
最简单的一元二次函数 + Excel,两步公式就能跑通完整的梯度下降 10 步迭代后,x 从 5.0 收敛到接近 1.0,z 从 33 降到接近理论最低值 1 梯度下降呈现"先快后慢"的自然节奏——梯度大时大步冲,梯度小时小步调 学习率的选取需要通过试错(反复试验)来确定,没有万能公式 Excel 实验与神经网络训练在数学上完全同构——只是变量的数量不同
夜雨聆风