约定
第二讲正式开始介绍机器学习中的监督学习,首先声明了以下约定:对于m组训练样本,x表示其输入(input feature),y表示其输出(target variable),m是一个正整数(表示个数的嘛),x和y可是是向量也可以是标量,不过入门而言一般y为标量,(x(i),y(i))表示训练样本,{(x(i),y(i)); i=1,2...m}表示训练集
目标
我们的目标是得到一个函数h:X->Y,使映射结果与数据更为接近,方程h称为假设(hypothesis),其过程如下图所示。
当我们希望得到的y(输出)是连续值时,我们称之为回归问题(regression problem),为离散值时,我们称之为分类问题(classification problem)。
线性回归 Linear Regression
以下形式称为线性回归:
h(x;θ) = θ0+θ1*x1+θ2*x2+...+θn*xn
= θ0*x0+θ1*x1+θ2*x2+...+θn*xn
= (θ^T)*X
即假设方程可视为参数向量和输入向量的乘积,上式中第二行x0为intercept term,其值为1,用于统一格式,由此可见上式中乘以的X与实际的输入向量X是有差别的,差别在于增加了x0=1这一项
损失方程 Cost Function
由此可定义损失方程,用于表示估计值与实际值之间的差距,显然差距越小越好,即估计与实际越接近越好,尽管在入门时y常为标量,但考虑到对后来的兼容,我们将其视为向量进行考虑,因此两个向量之间的差异可以视为两个点之间的距离,自然地,损失方程可定义如下形式:
J(θ) = 1/2*Sum(i=1 to m)[(h(x;θ)-y)]^2)
梯度下降法 Gradient Descent
为了求得使损失方程取得最小值的参数θ,我们使用梯度下降法,其思想可简化如下:
在初始化初始状态后,我们选择初始状态下梯度下降最大(负数指示下降、绝对值最大表示下降最快)的方向作为对θ迭代的方向。
这是一种贪心的算法,假想我们只有一座正常的平滑的那种山峰,显然我们通过这种方法可以找到最小值;但如果我们的山峰顶端有个坑(比如是个火山),而且恰好在坑旁边的梯度更大,那么这种算法只能找到坑的最低点,并认为这就是全局的最低点,这种情况实际上称为局部最优,而我们希望找到的点称为全局最优。
但梯度下降法之所以可以成功用于损失方程的计算,在于已经证明,对于凸函数,梯度下降法所求的的解正是全局最优解,典型的损失方程图像如下图所示。图中圆形的线可以理解为等高线,蓝色的折线即梯度下降的方向。
由此,我们可以得到关于th迭代更新的方程
θj = θj - α(δ/δθ)J(θ)
上始终α表示学习速度,即每一次更新的步长,其后就是该点处的导数
最小均方误差算法 Least Mean Square LMS
最小均方误差算法与损失方程具有近似的思想,其更新方程如下:
θj = θj + α*(y(i)-h(x;θ))*x(i)j
可见,这是一种对θ的各个参数分开调优的算法,所以根据调优的顺序可分为下面两种算法
批梯度下降 Batch Gradient Descent
repeat until convergence{
//for every i
θj := θj + α*Sum(i = 1 to m)[(y(i)-h(x;θ))x(i)j]^2
}
这一算法在每一次更新是更新所有的参数,因此其值较准确,但显然其使用的计算资源更多
随机梯度下降法 Stochastic Gradient Descent
loop{
for i = 1 to m{
// for every i
θj := θj + α*(y(i)-h(x;θ))*x(i)j
}
}
这一算法更适用于训练集较大的情况。
一般化方程 The Normal Equations
每一次进行一次梯度下降法所需要的计算资源太大了,因此考虑到矩阵的的特殊性质,科学家将这一办法化简为一个一般化方程,此时,每次计算时只需使用方程计算即可,化简的思想在于函数的极值取于导数为0的点,其具体表示为
θ = [((X^T)*X)^(-1)]*X^T*y
上述的X为训练集的集合,即是一个矩阵,y为一个向量,是各个标量的集合。
这一形式十分简洁,但其推导过程比较复杂,如下
//这里是分割线~
//顺便给自己的公众号打个广告,希望大家多多关注哦~
//关注我的公众号可以看到更多有意思的东西哦~