随机梯度下降
如果我们一定需要一个大规模的训练集,我们可以尝试使用随机梯度下降法来代替批量梯度下降法。
从下图中可以看出,
批量梯度下降在一轮iteration中使用了所有个样本
随机梯度下降在一轮iteration中使用了1个样本
随机梯度下降算法为:
- 对训练集随机“洗牌”,
- Repeat
随机梯度下降算法在每一次计算之后便更新参数 ,而不需要首先将所有的训练集求和,在梯度下降算法还没有完成一次迭代时,随机梯度下降算法便已经走出了很远。但是这样的算法存在的问题是,不是每一步都是朝着”正确”的方向迈出的。因此算法虽然会逐渐走向全局最小值的位置,但是可能无法站到那个最小值的那一点,而是在最小值点附近徘徊。
小批量
小批量梯度下降在一轮iteration中使用了个样本
通常我们会令 在 2-100 之间。这样做的好处在于,我们可以用向量化的方式来循环个训练实例
在批量梯度下降中,我们可以令代价函数为迭代次数的函数,绘制图表,根据图表来判断梯度下降是否收敛。但是,在大规模的训练集的情况下,这是不现实的,因为计算代价太大了。
在随机梯度下降中,我们在每一次更新之前都计算一次代价,然后每次迭代后,求出这次对训练实例计算代价的平均值,然后绘制这些平均值与次迭代的次数之间的函数图表。
我们可以令学习率随着迭代次数的增加而减小
随着我们不断地靠近全局最小值,通过减小学习率,我们迫使算法收敛而非在最小值附近徘徊。
网友评论