本文主要是介绍【Machine Learning公开课】Chapter 2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这一讲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(θ)=12∑mi=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.随机梯度下降
每扫描一步都要对 θ 进行更新,每次更新只用取一个 θ ,减少运算量,但可能无法收敛至最小点处。
总结:梯度下降法收敛速度比较慢,而且容易陷入局部最优。
这篇关于【Machine Learning公开课】Chapter 2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!