斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

声明:此系列博文根据斯坦福CS229课程,吴恩达主讲 所写,为本人自学笔记,写成博客分享出来

          博文中部分图片和公式都来源于CS229官方notes。

          CS229的视频和讲义均为互联网公开资源


Lecture 2

这一节主要讲的是三个部分的内容:

·Linear Regression(线性回归)

·Gradient Descent(梯度下降)

·Normal Equations(正规方程组)

 

1、 线性回归

首先给了一个例子,如何根据房屋的大小等数据,来预测房屋的价格

引入一些符号以便于叙述:

m表示训练样本的数目

x表示输入变量/特征

y表示输出变量/目标变量

xy- 表示一个训练样本

i个训练样本 x(i),y(i)  注意i不是指数,而是上标而已

 

在 监督学习中,一般是如下过程:

给定一个训练集,通过学习算法,得到一个函数:h (hypothesis)

这样我们的新的输入x就能通过h函数得到一个预测:y

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

如果我们用一个线性模型来刻画y和x的关系,(当然y和x的关系肯定可以用其他模型来刻画,只不过吴老师这里在讲线性模型而已。其实, 生活中很多关系的确是可以用线性模型进行简单的刻画)一般就写成如下形式:

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

这里的x的右下标,代表这个样本的第几个特征右上标才表示第几个样本。比如第i个房子可能有面积、和卧室数目这两个特征,那么x(i)就是一个二维的向量x(i) =(x1(i) ,x2(i)

也就是说,右下标刻画了输入向量x的维度。

 

Θ是参数-parameter,有时候我们其实也叫它权重-weight每一个theta刻画了它对应的这个特征对于结果的影响力

我举个例子,这里如果θ1= 100,而θ2 = 10,那么很明显,说明x1(房屋面积)对于房屋最终价格的影响就大于x2(卧室数目)的影响,因为x1如果增加1,那么总价格就增加100,如果x2增加1,总的价格才增加10。所以theta的维度应与输入x的维度相对应。

我们最终的目的其实就是希望得到(学习到)合适的θ参数,来刻画 y 和 x的关系

如果增设x0等于1,(表示截距),那么就可以得到泛化形式:

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

n – 表示样本的维度,即每一个输入样本有多少特征需要考虑

 

那么如何去学习呢?我们监督学习还提供了监督信息,就是 这里的y,每一个样本其实一对(x,y),如果我们把已有的x输入到h函数,那么就希望得到已有的x所对应的正确的y,这才说明h函数时可靠的。所以得到如下另一个函数:

Cost Function/Loss Function (代价函数/损失函数)

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

将 拥有训练集x作为输入的 h函数的输出 减去 已知正确的 y,使得他们的差的平方 最小(最理想的情况当然是0),那么说明h至少能对我训练集的x做出好的预测。至于最前面为什么乘以一个 1/2 , 完全是为了对其求导时方便而已,对于整个函数值是大是小没有影响。

实际上,上面这个函数叫做 ordinary least square普通最小二乘法,字面意思,就是让函数的平方最小呗。


2、 梯度下降

第一步中我们已经得到了损失函数,那么如何来选择θ来使得损失函数值最小呢?

于是就来到了梯度下降的环节了。通过从山顶下坡的例子来理解:

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

从山顶上选一点,一步一步往下走,一步一步似爪牙,似魔鬼的步伐~摩擦摩擦

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

就走到了最低点,而且还是最快地走到了最低点

 

当然也有可能走到局部最低点,但你也不知道其他地方还有更低的点,这是可能的

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

为什么说这样子走得最快呢?微积分中我们已经学过:函数在一点沿梯度方向的变化率最大,最大值为该梯度的模

所以我们根本不需要环顾四周去试探方向,因为梯度方向就是最陡的方向,我们沿着负梯度方向前进,自然就下降的最快。这样得到theta的更新公式:

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

其中α – 称为 learning rate,学习率,就是我沿着负梯度方向,每次迈多大一步,这个参数是手动设置的。

将损失函数代入并化简:

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

所以对于单个的训练样本,就得到如下的更新规则:

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

实际上,这个更新规则也叫做:LMS - least mean square – 最小均方算法

batchgradient descent,批量梯度下降

而对于我们训练集的所有样本来说,我们需要考虑到每个样本, “ You're going to perform a sum over your M training examples. “ 

注意:下式中把括号内取反,所以α的符号变正,并不是写错

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

Stochasticgradient descent随机梯度下降

(Sometimes we call it incremental gradient descent 增量梯度下降)

 

但是当我们的训练集十分大的时候,比如有百万个数据,此时每一步更新如若是要考虑所有的样本,就会显得很麻烦,计算量变大,所以提出随机梯度下降,算法如下:斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

 

每一次只考虑第i个example,而不是需要遍历全部的M个样本。和批量梯度下降对比,你会发现α后面并没有求和符号来对i求和,反而是再外层多了一个对于i的循环,即每次更新时只考虑一个样本。

所以对于大规模数据SGD算法下降速度会快很多,但是问题在于它可能不会精确收敛到全局最小值。但是在实际应用中,这个值十分接近全局最小值,所以对于实际应用是可接受的。

 

3、  正规方程组

梯度下降算法,实际是一种迭代算法,通过不断更新theta使其逼近最合适的值。但是还存在其他的方法,不迭代,求出合适的theta值。

 

首先介绍一些线性代数的知识:

若定义 f 是使得矩阵 映射为 实数的 一个函数,那么f关于矩阵A的梯度表示为:


斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

可见f关于矩阵A的梯度也是一个和A同样size的矩阵,举例来说:


斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

同时补充一下线性代数中的知识:关于矩阵的trace 迹,有:

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组
如若 是方阵:


斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

这些其实都不用记,就是吴老师写出来以便后面证明一个式子时要用到,了解即可

 

那么我们现在开始推导,如何求出theta的取值。

先要把损失函数化成矩阵和向量的形式:

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

所以对损失函数求导:

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

我备注一下详细求解过程

斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组


至此,Lecture 2 三部分的内容就记录完毕~