批量梯度下降(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)
}