如果说损失函数告诉模型“你错了多少”,那梯度下降要解决的问题就是:接下来参数应该往哪里改。
模型训练不是随机乱调参数,而是根据损失函数给出的方向,一点点把参数往更好的位置移动。
这个过程就叫梯度下降。
从下山开始理解
想象你站在一座山上,目标是走到山谷最低处。
但现在周围有雾,你看不到整座山,只能感觉脚下这一小块地面往哪个方向更低。
你每次都朝着下降最快的方向走一小步。
走很多步以后,就有机会接近低点。
这就是梯度下降的直觉。
在机器学习里:
- 山的高度就是 loss
- 你的位置就是模型参数
- 下坡方向就是梯度的反方向
- 每一步的大小就是学习率
梯度是什么
梯度可以理解成“某个参数变化时,loss 会怎么变化”。
如果一个参数稍微变大,loss 会明显变大,那说明这个方向不太好。
如果一个参数往另一个方向变,loss 会变小,那模型就应该朝那个方向更新。
梯度给出的不是最终答案,而是当前位置附近最值得尝试的方向。
学习率是什么
学习率决定每次更新参数时迈多大一步。
如果学习率太大,模型可能一步迈过头,在低点附近来回震荡,甚至训练发散。
如果学习率太小,模型会走得很慢,训练很久也没有明显变化。
所以学习率虽然只是一个数字,但对训练影响很大。
参数怎么更新
梯度下降的核心公式可以先这样理解:
新参数 = 旧参数 - 学习率 * 梯度
为什么是减号?
因为梯度指向 loss 增加最快的方向,而我们想让 loss 下降,所以要朝反方向走。
这就是“下降”的来源。
为什么 loss 不一定每步都下降
理论上,梯度下降是在往更低处走。
但真实训练里,loss 不一定每一步都下降。
原因可能是:
- 一次只用了一小批数据
- 数据本身有噪声
- 学习率不合适
- 模型结构复杂
所以看训练效果时,不要盯着单一步的波动,而要看整体趋势。
如果一段时间内 loss 大体在下降,通常说明训练方向是对的。
小结
梯度下降是一种参数更新方法。
它根据 loss 对参数的变化趋势,决定参数下一步怎么改。
初学时先记住这句话就够了:梯度下降就是让模型沿着让错误变小的方向,一步一步调整参数。