梯度下降
前面我们在讨论“优化器”时提到了梯度下降(Gradient Descent)。作为机器学习中最核心的优化算法,它的思想其实非常直观。
直观理解:蒙眼下山
想象这样一个场景: 你被蒙住了眼睛,空降在一座高低起伏的山脉中。你的目标是走到这座山的最低谷。
由于你看不见周围的地形,你只能用脚去感受当前站立位置的倾斜程度(也就是坡度或梯度)。
- 你用脚探了探,发现前面是下坡。
- 于是,你朝着下坡最陡峭的方向迈出一步。
- 到了新位置后,你再探一探,再次朝着当前最陡峭的下坡方向迈步。
- 不断重复这个过程。
只要你每次都往下坡走,最终你大概率会走到一个谷底,停在那里(因为四周都是上坡了)。
这就是梯度下降算法的全部核心思想。
对应到机器学习中
把上面的比喻翻译成机器学习的术语:
- 山脉的地形:代表我们的 损失函数(Loss Function) 的曲面。
- 当前的位置:代表模型当前的参数(如权重和偏置)。
- 海拔高度:代表在当前参数下,模型预测的损失值(误差有多大)。海拔越高,误差越大。
- 最低谷:代表损失值最小的地方,也就是模型预测最准确时的最优参数。
- 坡度(下坡方向):就是损失函数对各个参数求导数得到的梯度(Gradient)。梯度的反方向,就是损失值下降最快的方向。
- 步伐的大小:代表学习率(Learning Rate)。
数学公式表达
虽然我们强调直观理解,但稍微看一眼它的数学公式,会让你对它的工作机制有更严谨的认识。借助刚才开启的数学公式渲染功能,梯度下降的参数更新公式可以非常简洁地表达为:
公式里的符号完美对应了我们上面的比喻:
:当前的位置(模型中的某个具体参数, 表示将计算结果重新赋值给它)。 :步伐的大小,也就是学习率 (Learning Rate),通常是一个很小的正数(如 )。 :山脉的地形,即损失函数 (Loss Function)。 :当前位置沿着该参数方向的坡度,也就是损失函数关于该参数的偏导数 (Partial Derivative)。 - 负号 (
):代表我们要朝着坡度的反方向(下坡方向)走。
学习率:步伐的艺术
在下山的过程中,“迈多大步”是一个非常关键的因素,也就是超参数学习率:
- 步子太大(学习率过大):你可能会直接跨过谷底,跑到对面的山坡上,甚至越走越高,导致模型无法收敛(Loss 不断震荡甚至爆炸)。
- 步子太小(学习率过小):虽然你走的每一步都很稳,但你需要走无数步才能到达谷底,导致模型训练速度极慢。
因此,选择一个合适的学习率,或者使用能够自动调整步伐的高级优化器(如 Adam,它会根据地形自动调整步长和惯性),是模型训练中的一门重要手艺。
局部最优:不小心走进了坑里
下山比喻还能解释一个常见的问题:局部最优(Local Minima)。
如果这座山有很多个坑洼,你蒙着眼往下走,很可能会停在半山腰的一个小坑里,以为自己到了谷底(因为四周都是上坡)。但在整座山的全局来看,那并不是真正的最低点(Global Minimum)。
为了跳出这些小坑,后来的算法引入了“动量(Momentum)”的概念——就像是在下坡时积攒了速度,遇到小坑时能依靠惯性冲过去,从而更有可能找到真正的全局最优点。