机器学习中的梯度下降与回归方法
1. 随机梯度下降(Stochastic Gradient Descent)
1.1 原理与特点
批量梯度下降(Batch Gradient Descent)在每一步都使用整个训练集来计算梯度,当训练集很大时,速度会非常慢。而随机梯度下降(SGD)则在每一步随机选择训练集中的一个实例,并仅基于该实例计算梯度。这种方式使得算法每次迭代处理的数据量很少,因此速度更快,也使得在巨大的训练集上进行训练成为可能,因为每次迭代只需要将一个实例保存在内存中。
然而,由于其随机性,SGD 比批量梯度下降更不规则。成本函数不会平稳地下降到最小值,而是会上下波动,只是平均而言呈下降趋势。随着时间的推移,它会接近最小值,但到达后会继续波动,不会稳定下来,最终得到的参数值是不错的,但并非最优。
不过,当成本函数非常不规则时,这种随机性有助于算法跳出局部最小值,因此 SGD 比批量梯度下降更有可能找到全局最小值。
1.2 学习率调度
为了解决 SGD 无法稳定在最小值的问题,可以逐渐降低学习率。开始时学习率较大,有助于快速取得进展并跳出局部最小值,然后逐渐变小,使算法能够稳定在全局最小值。这个过程类似于模拟退火算法,确定每一次迭代学习率的函数称为学习调度(learning schedule)。
如果学习率降低过快,可能会陷入局部最小值,甚至在到达最小值的中途停滞;如果降低过慢,可能会在最小值附近跳跃很长时间,如果过早停止训练,最终得到的解决方案可能不是最优的。
以下是使用简单学习调度实现 SGD 的代码:
超级会员免费看
订阅专栏 解锁全文
3059

被折叠的 条评论
为什么被折叠?



