【Machine Learning公开课】Chapter 2

来源:互联网 发布:1到100全部素数c语言 编辑:程序博客网 时间:2024/06/05 14:21

这一讲Ng给我们讲了什么是有监督学习,以及一种常用的求最值方法:梯度下降法。

首先我们回顾下一个简单的机器学习过程:首先给出一个输入数据,我们的算法会通过一系列的过程得到一个估计的函数,这个函数有能力对没有见过的新数据给出一个新的估计,也被称为构建一个模型。我们用 X1,X2..Xn 去描述 feature 里面的分量,比如 x1=房间的面积,x2=房间的朝向, 等等,我们可以做出一个估计函数:

h(x)=hθ(x)=θ0x0+θ1x1+θ2x2
PS:此处θ代表参数,这里令x0=1,则有:

h(x)=θTX(向量表示法)

因为我们的目的是得到最优的θ,于是不妨定义一个均方误差函数J来评估hθ(x),J的定义如下:

J(θ)=12mi=1[hθ(x(i)y(i))]2
PS:公式前面乘1/2是为了之后求导方便

那么,我们的目的是得到使J(θ)取到最小值的θ,即归结于求最小值问题,方法很多,这一讲Ng用的是梯度下降法。

那么什么是梯度下降法呢?
step1. 对 θ 赋值,这个值可以是随机的,也可以让 θ 是一个全零的向量。
step2. 改变 θ 的值,使得 J(θ)按梯度下降的方向进行减少,直至收敛。

梯度方向由 J(θ)对 θ 的偏导数确定,由于求的是极小值,因此梯度方向是偏导数的反方向。 结果为:

θj:=θj+α(y(i)hθ(x(i)))x(i)j
PS: 这里符号:=表示的是把左边变量的值设为右边变量的值,符号α代表学习速率,可以手工设置,它控制了步子迈的有多大,设置的太小,则每步迈的步子很小,算法收敛速度很慢,设置的太大,则可能会越过最小值。

那么梯度下降法就是一个不断迭代更新的过程,其中有两种方法:
1.批梯度下降
对全部的训练数据求得误差后再对 θ 进行更新。
2.随机梯度下降
每扫描一步都要对 θ 进行更新,每次更新只用取一个θ,减少运算量,但可能无法收敛至最小点处。

总结:梯度下降法收敛速度比较慢,而且容易陷入局部最优。

0 0
原创粉丝点击