斯坦福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


如果我们用一个线性模型来刻画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 三部分的内容就记录完毕~

这篇关于斯坦福CS229机器学习笔记-Lecture2-线性回归+梯度下降+正规方程组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/837443

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件