《Andrew Ng 机器学习笔记》这一系列文章文章是我再观看Andrew Ng的Stanford公开课之后自己整理的一些笔记,除了整理出课件中的主要知识点,另外还有一些自己对课件内容的理解。同时也参考了很多优秀博文,希望大家共同讨论,共同进步。
网易公开课地址:http://open.163.com/special/opencourse/machinelearning.html
参考博文:http://www.cnblogs.com/jianxinzhou/p/4020090.html
http://download.csdn.net/detail/puluotianyi/7651271
本节课程内容包括:
(1)Linear regression (线性回归)
(2)Gradient descent(梯度下降)
(3)Normal equations(正规方程组)(下篇博文分析正规方程组)
首先引入以下变量:(在今后的机器学习中都会使用到这些变量)
以上篇博文中提到的房屋面积和房价为例,对于监督学习而言,整个过程如下:Training Set代表训练集(即我们收集到的很多数据),我们将这些数据交给一个学习算法,通过这个算法,我们得到一个h(假设函数),这个假设函数可以接收新的房屋面积x作为输入,然后输出房屋价格y。因此,h 是一个从 x到 y 的函数映射。
我们现在要解决的问题是如何得到这个假设函数h,我们可以将h表达为:
其中,x是特征变量(此处代表房屋面积)。θ是学习算法中的参数,都是实数,利用训练集合去选择或学习得到合适的参数值,是学习算法的任务。因为这个例子中只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题。
如果还存在第二个特征变量(例如卧室数量),我们可以将表达式写为:
这个表达式可以简化为:
实际上,有时候我们会有更复杂的函数,也许是非线性函数,但是由于线性方程是简单的形式,我们将先从线性方程的例子入手。
至此,我们的目标变为如何求解θ,θ决定了我们得到的函数h相对于我们的训练集的准确程度,我们要使得这个误差最小。(这也就是最小化问题)
用代价函数来说明误差,表示为:(我们要使J(θ)取得最小值)。
针对最小化问题,我们采用LMS(最小均方算法),即使得上述表达式取得最小值,这里介绍两种解决方法:梯度下降算法和正规方程组。
梯度下降算法
说明两点问题:
(1)在梯度下降算法中,我们需要同时更新θ0,θ1 。
(2)如果你的参数已经处于局部最低点,那么梯度下降法更新其实什么都没做(求导为0),它不会改变参数的值,这也正是你想要的,因为它使你的解始终保持在局部最优点,这也解释了为什么即使学习速率 α 保持不变时,梯度下降也可以收敛到局部最低点。
同时,通过分析上式,我们可以知道,梯度下降一步后,新的导数会变小一点点。随着梯度下降法的运行,你移动的幅度会自动变得越来越小,直到最终移动幅度非常小,你会发现已经收敛到局部极小值。
在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度。这是因为当我们接近局部最低点时(很显然在局部最低时导数等于零 ),导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是梯度下降的做法,所以实际上没有必要再另外减小α。
实际上,用于线性回归的代价函数总是呈现一个弓形的样子,即就是凸函数(如下图)。所以,这个函数没有任何局部最优解,只有一个全局最优解。
我们继续推导:
因为有:
可以得到:
将这个式子运用到m个实例中,可得到:
在这个式子中,我们可以看出在梯度下降的每一步中我们都用到了所有的训练样本,实际上,这样的梯度下降算法叫做“批量梯度下降”。当m特别大时,这种算法很不适用。
这种情况,我们就需要采用另外一种算法 ——”随机梯度下降(增量梯度下降)”
随机梯度算法如下:
与批量梯度下降相比,这个算法开始学习仅仅需要查看第一个训练样本,并且利用第一个训练样本进行更新,接着再用第二个样本进行下一次更新,这样我们调整参数的速度就会快了很多,因为我们不需要再调整前遍历多有的训练样本。但是,随机梯度下降算法不会精确地收敛到全局的最小值 ,但也是向着全局最小值附近徘徊,通常这样得到的参数值,能够很接近全局最小值,这就已经足够了。
另外,不需要像梯度下降算法这样迭代求参数值,就可以求解这类最小二乘法问题的正规方程组在下一篇博文中再做具体分析。
转载自:https://blog.csdn.net/v1_vivian/article/details/51956192