斯坦福大学机器学习笔记--第一周(5.线性回归的梯度下降)

一.Gradient Descent For Linear Regression(线性回归的梯度下降)

在前面我们谈到了梯度下降算法是很常用的算法,经常被用在线性回归模型、平方误差代价函数上。在这一部分,我们要将梯度下降算法和代价函数结合。往后我们还将用到此算法,并将其应用于具体的拟合直线的线性回归算法里。

图1-1是我们之前学过的一些知识,

斯坦福大学机器学习笔记--第一周(5.线性回归的梯度下降) 

图1-1

左边的蓝色框是梯度下降法,右边是线性回归模型和平方误差代价函数。我们将要做的就是用梯度下降的方法来最小化平方误差代价函数。 图1-1中最关键的就是红色框里面的偏导数项。

这里我们需要弄清楚个偏导数项是什么,并结合这里的代价函数J的定义将微分式简化一下,带入化简过程如图1-2所示,

斯坦福大学机器学习笔记--第一周(5.线性回归的梯度下降)

图1-2

在计算偏导的时候分别令j等于0和1。在算出这两个微分项以后,现在可以将它们放回到我们的梯度下降算法中去,如图1-3所示

斯坦福大学机器学习笔记--第一周(5.线性回归的梯度下降)

图1-3

图1-3中用蓝色框起来的就是我们图1-2中当j=0的时候的偏导,用洋红色框起来则是我们在图1-3中当j=1的时候的偏导。有一个细节必须要注意,就是必须要同时更新θ0和θ1如何做到同时更新可以看前一个帖子的图1-6附近,点击前往)。

接下来让我们来看看梯度下降是如何工作的。当第一次解释梯度下降时,曾经展示过这幅图,并且知道了根据不同初始化,会得到不同的局部最优解,如图1-4所示,

斯坦福大学机器学习笔记--第一周(5.线性回归的梯度下降)

图1-4


事实证明用于线性回归的代价函数,总是如图1-5所示的这样一个弓形的样子。

斯坦福大学机器学习笔记--第一周(5.线性回归的梯度下降)

图1-5

图1-5这个函数的专业术语是:凸函数(convex function),用不正式的说法它就是一个弓形的函数。因此这个函数是没有任何局部最优解的,只有一个全局最优解。并且无论什么时候,你对这种代价函数使用线性回归的梯度下降法得到的结果总是收敛到全局最优值。

让我们来看看这个算法的执行过程,如组图1-6所示,

斯坦福大学机器学习笔记--第一周(5.线性回归的梯度下降)

斯坦福大学机器学习笔记--第一周(5.线性回归的梯度下降)

斯坦福大学机器学习笔记--第一周(5.线性回归的梯度下降)斯坦福大学机器学习笔记--第一周(5.线性回归的梯度下降)

像往常一样,分别画出假设函数和代价函数J的图,我们每进行一次梯度下降,右边的轮廓图(contour plot 或 contour figure)就离椭圆圆心更近一步,直到它渐渐地收敛到全局最小值。

这就是梯度下降法,我们刚刚运行了一遍并且最终得到了房价数据的最好拟合结果。现在可以用它来预测房价了,比如说刚好有个朋友,他有一套房子面积1250平方英尺(约116平米),现在可以通过这个数据,然后告诉他也许他的房子可以卖到35万美元,见图1-7。

斯坦福大学机器学习笔记--第一周(5.线性回归的梯度下降)

图1-7


最后,我想给我们之前的梯度下降算法再给出另一个名字-批量梯度下降。"批量梯度下降" 指的是在梯度下降的每一步中,我们都用到了所有的训​​练样本。在梯度下降计算微分求导项时,我们需要进行求和运算,即在每一个单独的梯度下降中我们最终都要计算图1-8中的这样一个东西,

斯坦福大学机器学习笔记--第一周(5.线性回归的梯度下降)

图1-8

这个项需要对所有m个训练样本求和,因此批量梯度下降法这个名字说明了我们需要考虑所有这一"批"训练样本。而事实上,有时也有其他类型的梯度下降法,不是这种"批量"型的,其不考虑整个的训练集,而是每次只关注训练集中的一些小的子集。还有一种计算代价函数J最小值的数值解法,不需要梯度下降这种迭代算法。在后续会谈到这个方法,它可以在不需要多步梯度下降的情况下,也能解出代价函数J的最小值,这是另一种称为正规方程(normal equations)的方法。


练一练

这里做个题目练练手,如图1-9,

斯坦福大学机器学习笔记--第一周(5.线性回归的梯度下降)

图1-9

第一个选项说为了让梯度下降收敛,我们必须慢慢地减小α。由前面的学习可得,设定好α后我们不需要再去变化α,因为微分项(斜率)会慢慢变小,最后趋于收敛。

第二个选项说的是梯度下降算法一定可以找到全局最小值,明显是错误的说法。图1-4就很好的说明了这个问题。

第三个选项说的是当α取一个合适的值并且固定不变的时候,梯度下降算法会收敛。从前面的学习可得这个说法是对的。

第四个选项说的是对于线性回归的代价函数是没有局部最优解的,只有全局最优解,图1-5附近就很好的解释了这个问题。