监督学习应用.梯度下降.

《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(正规方程组)(下篇博文分析正规方程组)


首先引入以下变量:(在今后的机器学习中都会使用到这些变量)

image


以上篇博文中提到的房屋面积和房价为例,对于监督学习而言,整个过程如下:Training Set代表训练集(即我们收集到的很多数据),我们将这些数据交给一个学习算法,通过这个算法,我们得到一个h(假设函数),这个假设函数可以接收新的房屋面积x作为输入,然后输出房屋价格y。因此,h 是一个从 x到 y 的函数映射。

image

我们现在要解决的问题是如何得到这个假设函数h,我们可以将h表达为:

image

其中,x是特征变量(此处代表房屋面积)θ是学习算法中的参数,都是实数,利用训练集合去选择或学习得到合适的参数值,是学习算法的任务。因为这个例子中只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题。


如果还存在第二个特征变量(例如卧室数量),我们可以将表达式写为:


这个表达式可以简化为:


实际上,有时候我们会有更复杂的函数,也许是非线性函数,但是由于线性方程是简单的形式,我们将先从线性方程的例子入手。


至此,我们的目标变为如何求解θ,θ决定了我们得到的函数h相对于我们的训练集的准确程度,我们要使得这个误差最小。(这也就是最小化问题

用代价函数来说明误差,表示为:(我们要使J(θ)取得最小值)。


针对最小化问题,我们采用LMS(最小均方算法),即使得上述表达式取得最小值,这里介绍两种解决方法:梯度下降算法和正规方程组



梯度下降算法

image
用这张图来解释梯度下降算法,想象你正处于图中某一点,想要到达最低点,你的做法就是从这个点开始出发,环顾周围,选择下降幅度最大的方向,迈出一小步,到达一个新的点,以此循环,来达到最低点。这就是梯度下降算法

当然如果你开始所处不同的位置,就有可能到达的最低点不同,(如下图),这就叫做局部最优。

image
我们可以看出,如果我们的步长太小,就会要迈很多步才能接近最小值,如果步长过大,就会有可能越过最小值。(实际上不会出现这种情况,下面会作解释)

这里我们以两个参数为例:θ1介绍梯度下降算法。

算法思路:首先将参数初始化,再不断调整参数大小,通过调整使得代价函数可以取得最小值。(或许只是局部最小,这取决于你的设置的参数初始值,不同的初始值可能会获得不同的最小值)

具体做法如下:
1、首先将它们都初始化为0。实际上,它们到底是什么其实并不重要,但通常的选择是将它们初始化为0。
2、不断调整参数大小。(下式中的α在这个例子中代表步长)




image


说明两点问题:

(1)在梯度下降算法中,我们需要同时更新θ0

(2)如果你的参数已经处于局部最低点,那么梯度下降法更新其实什么都没做(求导为0),它不会改变参数的值,这也正是你想要的,因为它使你的解始终保持在局部最优点,这也解释了为什么即使学习速率 α 保持不变时,梯度下降也可以收敛到局部最低点


同时,通过分析上式,我们可以知道,梯度下降一步后,新的导数会变小一点点。随着梯度下降法的运行,你移动的幅度会自动变得越来越小,直到最终移动幅度非常小,你会发现已经收敛到局部极小值。

在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度。这是因为当我们接近局部最低点时(很显然在局部最低时导数等于零 ),导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是梯度下降的做法,所以实际上没有必要再另外减小α。


实际上,用于线性回归的代价函数总是呈现一个弓形的样子,即就是凸函数(如下图)。所以,这个函数没有任何局部最优解,只有一个全局最优解

image


我们继续推导:

因为有:

可以得到:                  

将这个式子运用到m个实例中,可得到:


在这个式子中,我们可以看出在梯度下降的每一步中我们都用到了所有的训​​练样本,实际上,这样的梯度下降算法叫做批量梯度下降”。当m特别大时,这种算法很不适用。


这种情况,我们就需要采用另外一种算法 ——随机梯度下降(增量梯度下降)

随机梯度算法如下:

与批量梯度下降相比,这个算法开始学习仅仅需要查看第一个训练样本,并且利用第一个训练样本进行更新,接着再用第二个样本进行下一次更新,这样我们调整参数的速度就会快了很多,因为我们不需要再调整前遍历多有的训练样本。但是,随机梯度下降算法不会精确地收敛到全局的最小值 ,但也是向着全局最小值附近徘徊,通常这样得到的参数值,能够很接近全局最小值,这就已经足够了。


另外,不需要像梯度下降算法这样迭代求参数值,就可以求解这类最小二乘法问题的正规方程组在下一篇博文中再做具体分析。




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值