CS229学习笔记(2)

LMS算法

在上一小节中,我们定义了代价函数 J(θ) ,当其值最小时,我们则称找寻到了拟合数据集最佳的参数 θ 的值。那么我们又该如何选择参数 θ 的值使得代价函数 J(θ) 最小化?

我们不妨考虑使用搜索算法(Search Algorithm),其先将参数 θ 初始化,然后不断给参数 θ 赋予新值,直至代价函数 J(θ) 收敛于最小值处。因此,我们可以梯度下降算法(Gradient Descent Algorithm),其更新规则为:

Repeatuntilconvergence{θj:=θjαθjJ(θ)(foreveryj)}

其中, α 表示学习速率,其值过小会导致迭代多次才能收敛,其值过大可能导致越过最优点而发生震荡现象。

当只有一个训练实例时,偏导数的计算公式如下:

θjJ(θ)=θj12(hθ(x)y)2=212(hθ(x)y)θj(hθ(x)y)=(hθ(x)y)θj(j=0nθjxjy)=(hθ(x)y)xj

因此,梯度下降算法的更新规则可改写为如下:

Repeatuntilconvergence{θj:=θjαi=1m(hθ(xi)y(i))x(i)j(foreveryj)}

其中,对于单个训练实例其更新规则为:

θj:=θjα(hθ(xi)y(i))x(i)j

这规则被称为Widrow-Hoff学习规则,其也被称最小二乘法(LMS,Least Mean Squares)。

由于该算法在计算参数 θj 时都要遍历训练集,因此该算法也称为批量梯度下降算法(Batch Gradient Descent)。

对于训练集较大时,使用批量梯度下降算法其计算成本较大。因此,我们推荐采用随机梯度下降算法(Stochastic Gradient Descent)(也称为增量梯度下降算法,Increment Gradient Descent)。其更新规则如下:

Repeatuntilconvergence{fori=1tom,{θj:=θjα(hθ(xi)y(i))x(i)j(foreveryj)}}

该算法在计算参数 θj 时,只需一个训练实例,其大大提高了运行效率。但该算法无法收敛至最优值处,只能无限接近该值。一般情况下,其值也足够我们最佳地拟合训练集了。

猜你喜欢

转载自blog.csdn.net/u013058162/article/details/79291349