斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

       从这一讲开始将真正的东西了,这一课下来听得云里雾里,似懂非懂。数学知识还是要加强一下,线性代数很多东西都忘光了,先写篇博客巩固一下这节课的内容,抽空再去复习一遍线性代数把。机器学习,任重道远啊~~


问题引入

Andrew Ng老师举的例子是房子关于价格的例子,即给出一组房屋价格与卧室数量,房屋面积的对应关系。如下图:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

我们要完成的任务是:给定一个房屋的面积和卧室的数量预测出他的价格。


线性回归

先给出以下变量定义:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

我们的解决方案是,根据已知的数据进行拟合。这就是监督学习,所谓的监督就是先前有一组正确数据作为训练,经过这组数据训练之后就可以进行房屋价格的预测了。我们先简化问题,只给出房屋面积与价格的对应的关系,把这组数据绘制到二维坐标系中,便可以看到很多散点。比如像这样:斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

我们通过这组点可以的到一个形如 y=a+bx 这样的方程。其中a,b 都是参数,只要给定一个x就可以得到一个y。由于这个方程是线性的,所以称之为线性回归。当问题进一步复杂的时候(有更多对y的影响因子,即有更多的x),我们遵循传统的命名方式就可以得到如下形式的方程:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

对于一般问题,公式如下:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

其中 n 为 特征数目, 斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降:参数。

得到了这个式子,但是我们的评价他的好坏。思想就是计算这个式子在给定x的情况下,计算的值与真实与这个x对应的函数值做差然后平方(求方差)。将所有的已知数据都进行相同的操作。然后求和。这样我们就可以得到一个评价函数,然后利用评价函数值比较两个h(x)函数的好坏了。
h看成θ的函数。然后使得评价函数值最小,就可以求出h函数中的θ。给出的评价函数的样子如下,其中1/2只是为了计算方便而加入:


斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

我们找出使这个函数最小的参数值,就可以得到拟合训练集的最佳参数。

求解上述函数最小值要用到梯度下降算法。


梯度下降

      关于梯度下降:梯度下降是一种搜索算法,基本思想:先给出参数向量一个初始值,比如0向量;不断改变,使得J(斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降)不断缩小。

*梯度下降法(http://zh.wikipedia.org/wiki/最速下降法)梯度下降法,基于这样的观察:如果实值函数 斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降 在点斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降可微且有定义,那么函数斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降 点沿着梯度相反的方向斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降 下降最快。

因而,如果

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降
对于 斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降 为一个够小数值时成立,那么斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

有关梯度的知识参加《高等数学第六版下册(同济大学)》P101


批梯度下降

    使用梯度下降法来求参数,更新规则为:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

2017.9.26更新:关于更新规则的推导

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

上式的α称之为步长,步长太小会导致收敛太慢,步长太大则不能保证一定会收敛(可能会越过最小值)。

当只有一个训练样例时,偏导数的计算如下:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

在这一步可以看到加入1/2可以和求导得出的2相消,将这一步得出的讲过带入上面的式子可以得到下式 :

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

这是一个实例的情况,对于多个实例,更新规则为:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

运用上述规则知道收敛即为 批梯度下降算法。

运用批梯度算法的优点是每次都能找到最优的下降路径,缺点是当样例非常多时每次下降将会非常慢(因为要遍历所有数据)。

运用批梯度下降算法还可能会导致局部极值点的差生(即下降到了极小值点而不是最小值点),解决这个问题可以随机进行初始化,找出多个最优结果,选择最优结果中的最优解为最终结果。(在本例中不会产生这种情况)


随机梯度下降

       为了解决当样例非常庞大时下降速度缓慢的问题引入了随机梯度下降。随机梯度下降的解决方法如下:斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

随机梯度下降算法每遍历一次就更新一次参数(下降一次),可以使速度大大加快。

采用随机梯度下降算法每次不能精确地找到下降的最优路径,但最后依然会收敛到最小值(极小值)处。

检测是否收敛的大致方法:

1)      检测两次迭代斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降的改变量,若不再变化,则判定收敛

2)      更常用的方法:检验斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降,若不再变化,判定收敛



正规方程法

     斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降


所以,梯度下降算法可写成:斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

矩阵的基础知识

函数f是从mn的矩阵到实数域的映射,对其求梯度可以表示为如下形式:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

即对每一项求导数或偏导数。

例如:

对于矩阵A斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

其对应的函数如下:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

矩阵的迹为矩阵的对角元素之和。表示形式如下:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

迹和矩阵的一些性质:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

正规方程求解

       求正规方程的思想是将所有数据写到矩阵中通过矩阵的运算一步得到最优的解。首先将所有的自变量数据都写到一个矩阵中,比如前面问题中的房屋面积大小,卧室的个数等等。形式如下:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

其中x是一个列向量,它的上标表示第几组数据,将x转置之后就成了行向量,这样所有的数据就构成了一个矩阵X
再将所有因变量写在一起构成列向量,比如前面问题中的房屋价格。形式如下:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

因为

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

所以可以得到:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

进而可以得到J(θ)的矩阵表达形式:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

然后对计算J的梯度的公式进行推到,如下:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

2017.8.27补充:我的推导

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

得到结果后另导数等于零得到:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

这个式子称为正规方程(normal equations)。
从而可以得到J(θ)的最优值为:

斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降

对于两种梯度下降算法还是比较好理解的,而对于正规方程,由于线性代数知识不扎实,看起来有点吃力,补完线性代数知识再回来理解吧。

参考:

斯坦福ML公开课笔记

http://blog.csdn.net/xiaocainiaodeboke/article/details/50371986