您的位置:首页 > 其它

Andrew Ng机器学习(ML)入门学习笔记(一)

2015-10-27 19:45 351 查看
一.机器学习的定义(Definition)

定义:是一门在不需要很明显很复杂的计算机编程的情况下让计算机具有学习能力的学科。

更现代化的定义:给计算机程序提供一个任务T和一种性能测量方法P,在经验E的影响下测量方法P对任务T的测量结果得到了改进。(该程序从E中学习)

二.机器学习的种类(Type)

(1)监督学习:用于训练的数据提供了一组“标准答案”。

监督学习又可细分为①回归问题(regression)②分类问题(classification)

①回归问题:需要预测的变量是连续的(consecutive)

例:采集一组房屋面积和对应价格的数据,预测要买一套指定面积的房屋需要多少钱。这里的标准答案指的是给出了采集的那组数据中房屋面积对应的价格,要预测的变量即房屋的价格是连续的,故属于监督学习中的回归问题。


②分类问题:需要预测的变量是离散的(discrete)

例:给定一组肿瘤大小和对应性质(良性/恶性)的数据,预测一特性大小的肿瘤是良性还是恶性。标准答案指的是训练数据给出了肿瘤大小对应的性质,要预测的变量即肿瘤的性质要不为良性,否则就为恶性(只有0/1这种二值选择),是离散变量,股属于监督学习中的分类问题。


(2)无监督学习:与监督学习相反,没有提供“标准答案”,预测结果无反馈,也称为聚类问题(clustering)。

例:网页将每天发生的各类新闻分类,相似的新闻会归到一类;多话者同时说话的情况下,将语音按照不同的说话人分开提取。

另:associative memory也是一种非监督学习。如医生根据以往相似病人联想出现在的病人可能患有的疾病。


三.单变量线性回归(Univariate linear regression)

以房价预测问题为例,首先给出一些符号说明:

mm → 训练数据的数目

xx → 输入变量(features)

yy → 输出变量(target)

(x,y)(x,y) → 一个训练数据

(x(i),y(i))(x^{(i)},y^{(i)}) → 第ii个训练数据

①假设函数(hypothesis function)

房屋面积(x)→假设函数h→(x) → 假设函数h → 预计房价(预估的y值)(预估的y值)

假设函数是变量x到y的映射x到y的映射,学习算法主要是根据训练数据集求出合理的假设函数。

对于单变量的线性回归,假设函数为hθ(x)=θ0+θ1x,其中hθ(x)可简写为h(x)h_{\theta}(x)=\theta_0+\theta_1x,其中h_{\theta}(x)可简写为h(x)。

②代价函数(cost function)

有了假设函数,接下来的问题就是如何选择θ0和θ1的值,让hθ(x)\theta_0和\theta_1的值,让h_{\theta}(x)在训练数据集上尽可能地接近yy

以一种均方差的形式去评估这种接近程度,即minimizeθ0,θ11m∑i=1m(hθ(x(i))−y(i))2\displaystyle\mathop{\mathrm{minimize}}\limits_{\theta_0,\theta_1} \frac{1}{m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2,为了后期求导时的方便,在前面乘上一个与θ0,θ1\theta_0,\theta_1无关的系数12\frac{1}{2},这并不会影响到上式的结果,即

minimizeθ0,θ112m∑i=1m(hθ(x(i))−y(i))2\displaystyle\mathop{\mathrm{minimize}}\limits_{\theta_0,\theta_1} \frac{1}{2m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2

定义代价函数J(θ0,θ1)J(\theta_0,\theta_1),

J(θ0,θ1)=12m∑i=1m(hθ(x(i))−y(i))2J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2

其中hθ(x)=θ0+θ1xh_{\theta}(x)=\theta_0+\theta_1x,因为代价函数类似于均方差的形式,故也称为方差函数。

即,我们的目标就是minimizeθ0,θ1J(θ0,θ1)\displaystyle\mathop{\mathrm{minimize}}\limits_{\theta_0,\theta_1}J(\theta_0,\theta_1)。找到使代价函数最小的θ0和θ1\theta_0和\theta_1,也就是找到了在训练数据集上最接近yy的假想函数hθ(x)h_{\theta}(x)。

一种简化的形式是假设θ0=0\theta_0=0,此时hθ(x)=θ1xh_{\theta}(x)=\theta_1x,J(θ0,θ1)=12m∑mi=1(θ1x−y(i))2J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m(\theta_1x-y^{(i)})^2。

例如,给定的三组训练数据,我们可以在(x,y)坐标系中做出不同θ1对应的hθ(x)的图像(x,y)坐标系中做出不同\theta_1对应的h_\theta(x)的图像,如下θ1分别取1,0.5,0\theta_1分别取1,0.5,0,红色叉点为训练数据。



分别计算代价函数J(θ1),J(1)=12∗3(02+02+02)=0,J(0.5)≈0.58,J(0)≈2.3J(\theta_1),J(1)=\frac{1}{2*3}(0^2+0^2+0^2)=0,J(0.5)≈0.58,J(0)≈2.3,可大致画出J(θ1)关于θ1的图像J(\theta_1)关于\theta_1的图像



可以很明显地看出θ1=1时,J(θ1)最小\theta_1=1时,J(\theta_1)最小。

四.梯度下降(Gradient descent)

梯度下降可用来最小化代价函数,除了最小化单变量线性回归的代价函数,还可用于最小化更一般的代价函数,即minimizeθ0,θ1,...θnJ(θ0,θ1,...θn)\displaystyle\mathop{\mathrm{minimize}}\limits_{\theta_0,\theta_1,...\theta_n}J(\theta_0,\theta_1,...\theta_n)。

仍以单变量线性回归为例,该过程主要有以下两点:

①给θ0,θ1赋初始值,可以都是0\theta_0,\theta_1赋初始值,可以都是0

②不断更新θ0,θ1让J(θ0,θ1)减小到期望的最小值\theta_0,\theta_1让J(\theta_0,\theta_1)减小到期望的最小值

更数学化的表达,即,重复直到收敛:

θj=θj−α∂∂θj(J(θ0,θ1))\theta_j=\theta_j-\alpha\frac{\partial}{\partial \theta_j}(J(\theta_0,\theta_1))

其中j取0和1。α称为学习率,j取0和1。\alpha称为学习率,可以理解为更新θj\theta_j的步距。

需要注意的是,这里是同时更新θ0和θ1\theta_0和\theta_1,也就是课程中一直强调的simultaneously update。

假设分别以temp0和temp1作为θ0,θ1更新过程中的中间变量temp_0和temp_1作为\theta_0,\theta_1更新过程中的中间变量,同时更新意味着按下列①的顺序操作,而不是②的顺序操作(注意,:=是赋值运算符,不是等于号),



temp0:=θ0−α∂∂θ0(J(θ0,θ1))temp_0:=\theta_0-\alpha\frac{\partial}{\partial \theta_0}(J(\theta_0,\theta_1))

temp1:=θ1−α∂∂θ1(J(θ0,θ1))temp_1:=\theta_1-\alpha\frac{\partial}{\partial \theta_1}(J(\theta_0,\theta_1))

θ0:=temp0\theta_0:=temp_0

θ1:=temp1\theta_1:=temp_1



temp0:=θ0−α∂∂θ0(J(θ0,θ1))temp_0:=\theta_0-\alpha\frac{\partial}{\partial \theta_0}(J(\theta_0,\theta_1))

θ0:=temp0\theta_0:=temp_0

temp1:=θ1−α∂∂θ1(J(θ0,θ1))temp_1:=\theta_1-\alpha\frac{\partial}{\partial \theta_1}(J(\theta_0,\theta_1))

θ1:=temp1\theta_1:=temp_1

简而言之,就是不能将此次已经更新过的θ0的值用于此次θ1的更新\theta_0的值用于此次\theta_1的更新。

那梯度下降为什么能够实现最小化代价函数呢?为了简化分析,仍假设θ0=0\theta_0=0,则

θ1:=θ1−αddθ1J(θ1)\theta_1:=\theta_1-\alpha\frac{\rm d}{\rm d\theta_1}J(\theta_1)

其中ddθ1J(θ1)即为点(θ1,J(θ1))处切线的斜率。其中\frac{\rm d}{\rm d\theta_1}J(\theta_1)即为点(\theta_1,J(\theta_1))处切线的斜率。根据θ1的当前位置可分为三种情况:\theta_1的当前位置可分为三种情况:

1.若θ1在局部最优解的右边,如下图1.若\theta_1在局部最优解的右边,如下图



由于该点切线的斜率=ddθ1J(θ1)>=0,且α始终为正值,故θ1将减小切线的斜率=\frac{\rm d}{\rm d \theta_1}J(\theta_1)>=0,且\alpha始终为正值,故\theta_1将减小,确实是朝着正确的方向更新,即,向代价函数J(θ1)更小的方向更新。J(\theta_1)更小的方向更新。

2.若θ1在局部最优解的左边,如下图2.若\theta_1在局部最优解的左边,如下图



由于该点切线的斜率=ddθ1J(θ1)<=0,且α始终为正值,故θ1将增大切线的斜率=\frac{\rm d}{\rm d \theta_1}J(\theta_1)<=0,且\alpha始终为正值,故\theta_1将增大,也会朝着正确的方向更新,即,向代价函数J(θ1)更小的方向更新。J(\theta_1)更小的方向更新。

3.若θ1已经处于局部最优位置,由于该点切线的斜率=ddθ1J(θ1)=0,故θ1将保持不变,此时即使还存在其他θ1的值使代价函数更小,也只能收敛于该局部最小值,而无法收敛于全局最小值。3.若\theta_1已经处于局部最优位置,由于该点切线的斜率=\frac{\rm d}{\rm d \theta_1}J(\theta_1)=0,故\theta_1将保持不变,此时即使还存在其他\theta_1的值使代价函数更小,也只能收敛于该局部最小值,而无法收敛于全局最小值。

再来看学习率α\alpha,如果α\alpha太小,则因为每次更新θj\theta_j的幅度太小导致梯度下降收敛很慢,如图①



但如果α\alpha太大,则梯度下降可能会跨过最小值不能收敛,甚至离收敛点越来越远,如图②



有趣的是,我们并不需要改变α的值\alpha的值,即使α\alpha值固定,梯度下降也能收敛到一个局部最小值。原因是代价函数在接近局部最小值的过程中,切线的斜率越来越小,即ddθ1J(θ1)\frac{\rm d}{\rm d \theta_1}J(\theta_1)越来越小,即使α\alpha固定,梯度下降的步距也会越来越小,最终也能收敛到局部最小值。

将梯度下降用于最小化方差代价函数,因为代价函数J(θ0,θ1)=12m∑i=1m(hθ(x(i))−y(i))2J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2

由梯度下降的数学表达θj=θj−α∂∂θj(J(θ0,θ1))\theta_j=\theta_j-\alpha\frac{\partial}{\partial \theta_j}(J(\theta_0,\theta_1))

j取0和1j取0和1,可得单变量线性回归的梯度下降算法,如下:

重复直到收敛{

θ0:=θ0−α1m∑i=1m(hθ(x(i))−y(i))\theta_0:=\theta_0-\alpha\frac{1}{m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})

θ1:=θ1−α1m∑i=1m((hθ(x(i))−y(i))x(i))\theta_1:=\theta_1-\alpha\frac{1}{m}\sum_{i=1}^m((h_{\theta}(x^{(i)})-y^{(i)})x^{(i)})

}

同理这里也务必是同时更新,其中hθ(x)=θ0+θ1xh_{\theta}(x)=\theta_0+\theta_1x,这也是造成对θ1\theta_1求偏导多出了x(i)x^{(i)}这一项的原因。

前面为了简化表达,让θ0固定取0\theta_0固定取0,实际上单变量线性回归中代价函数JJ是θ0和θ1\theta_0和\theta_1两个自变量的函数,J(θ0,θ1)J(\theta_0,\theta_1)关于θ0,θ1\theta_0,\theta_1的图像应该是在三维坐标系中表达,如下图



同理,这些点构成的曲面也有局部最小点和全局最小点之分,梯度下降的意义就是从曲面上任意一点一步步走到局部最小或全剧最小。

代价函数J(θ0,θ1)J(\theta_0,\theta_1)的一种特殊形式是凸面函数(convex function),更形象地说是一种碗形曲面(如下图),这时没有局部最小,只有全局最小,将梯度下降用于这种线性回归,总会收敛到全局最优。



以上数据多可在二维或三维空间中表示出来,当所需学习的特性越来越多时,扩展到多维甚至无限维,该如何表示?支持向量机(SVM)可解决此类问题,SVM可以把数据映射到无限维。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: