Processing math: 100%

批量梯度下降和随机梯度下降

批量梯度下降(Batch Gradient Decent)

批量梯度下降的思路是:对于要优化的目标参数,比如θ,在迭代的第i步,计算出误差函数的梯度i,然后沿着负梯度下降某个步长α,更新θi+1:=θiαi,进行下一次迭代。α可以随i变化,也可以保持不变。
批量梯度下降的过程如下:
Repeat until convergence
{
θ:=θα
}
批量梯度下降存在一个问题:在每一次迭代中,都需要整个数据集才能计算出梯度。如果数据集大小m非常大,则梯度下降法便会运行得很慢。

随机梯度下降(Stochastic Gradient Decent)

随机梯度下降可以克服这个问题,同时仍可以得到一个比较优的解。它的思路是:每次只使用一个样本来确定梯度,循环m次,就可以得到一个十分逼近最优解的值。
随机梯度下降的过程如下:
For j=1 to m
{
θ:=θαj
}
其中j表示用第j个样本计算出来的梯度。当然,随机梯度下降不是完美的。它比批量梯度下降收缩得快,但却不太容易收敛到最优值,而是在最优值附近振动。然而,在许多实际应用中,这个逼近的最优值已经足够。

如果在算法运行过程中逐渐将步长α减小至0,则可能使结果收敛到最优,而不是在最优解附近振动。

以线性回归为例

数学记号

m————————-样本数量
n————————–特征数量
x(i),y(i)————–第i个样本
x(i)j———————-第i个样本中第j个特征分量
θj————————第j个参数
hθ(x)——————预测函数

批量梯度下降

Repeat until convergence
{
θj:=θjαmi=1(y(i)hθ(x(i)))x(i)j(for every j)
}

随机梯度下降

For j=1 to m
{
θj:=θjα(y(i)hθ(x(i)))x(i)j(for every j)
}

参考资料

  1. 斯坦福大学机器学习公开课
  2. 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
  3. CS229 Lecture notes