首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组

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

作者头像
TeeyoHuang
发布2019-05-25 22:50:59
3940
发布2019-05-25 22:50:59
举报

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1433868

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

      **博文中部分图片和公式都来源于CS229官方notes。**
      **CS229的视频和讲义均为互联网公开资源**

Lecture 2

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

·Linear Regression(线性回归)

·Gradient Descent(梯度下降)

·Normal Equations(正规方程组)

1、 线性回归

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

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

m – 表示训练样本的数目

x – 表示输入变量/特征

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

(x,y)- 表示一个训练样本

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

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

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

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

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

这里的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,(表示截距),那么就可以得到泛化形式:

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

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

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

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

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

2、 梯度下降

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

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

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

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

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

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

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

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

将损失函数代入并化简:

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

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

batchgradient descent,批量梯度下降

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

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

Stochasticgradient descent随机梯度下降

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

但是当我们的训练集十分大的时候,比如有百万个数据,此时每一步更新如若是要考虑所有的样本,就会显得很麻烦,计算量变大,所以提出随机梯度下降,算法如下:

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

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

3、 正规方程组

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

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

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

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

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

如若 是方阵:

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

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

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

所以对损失函数求导:

我备注一下详细求解过程

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年06月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、 线性回归
  • 2、 梯度下降
  • 3、 正规方程组
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档