斯坦福机器学习 Lecture2 (假设函数、参数、样本等等术语,还有批量梯度下降法、随机梯度下降法 SGD 以及它们的相关推导,还有正态方程)

news2024/11/18 0:13:30

假设函数定义
假设函数,猜一个 x->y 的类型,比如 y = ax + b,随后监督学习的任务就是找到误差最低的 a 和 b 参数

在这里插入图片描述
有时候我们可以定义 x0 = 1,来让假设函数的整个表达式一致统一

在这里插入图片描述
如上图是机器学习中的一些术语

在这里插入图片描述
额外的符号,使用 (xi, yi) 表示第 i 个样本

n 表示特征数量 (在房屋价格预测问题中,属性/特征有两个:房子面积和卧室数量,因此这里 n = 2)

在这里插入图片描述
监督学习的过程就是选择合适的参数,来让假设函数的输出和样本输出相近(针对训练集)

在这里插入图片描述
房屋预测案例中的目标函数,最小化误差平方和

在这里插入图片描述
我们通常会在目标函数旁边放个 1/2,这是为了后边简化求导计算

在这里插入图片描述

我们通常使用梯度下降法来选取更加合适的 theta参数 来优化目标函数,如上图是梯度下降法中的 “baby step”

这里的 阿尔法 就是学习速率

在这里插入图片描述
如图,是对目标函数的求导 (由于对几个项的和求导,等于它们的导数和,所以这里我们先不 care 那个 sum(sigma) 符号)

在这里插入图片描述

如图,是对求导公式的后续转换

在这里插入图片描述
如图,这是对目标函数求导的最终公式的其中一项 (这里只对 theta_j 求导)

在这里插入图片描述

这也是最后统合得到的求导公式,对每一个样本 i 进行针对 theta_j 的求导

接下来要做的就是,重复 updating theta_j,直到目标函数收敛

在这里插入图片描述
由于我们的目标函数对于每个 theta_j 都是二次函数,所以这是一个凸函数,它是一个大碗,它只有一个全局最优

在这里插入图片描述
也可以用等高线图来表示

运用高中的一些数学知识,你会发现,最陡的防线和等高线(椭圆)的切线是90度

调试学习率的一些经验:
如果你发现目标函数在增加而不是减少,那通常说明学习率太大了(超调)
可以尝试 O1, O2, O4, O8 尝试不同的值

在这里插入图片描述

另一种可视化学习过程的方式是,看到曲线(假设函数)一点点变化

刚刚提到的机器学习方法中,梯度下降需要用到训练集中所有的样本,来计算梯度(所以也叫批量梯度下降法)。在训练集很大的情况下,这会变得昂贵,因此我们需要做些改变

在这里插入图片描述
另一种快得多的方式是随机梯度下降法,它遍历每一个样本 i,随后针对这单个样本对所有的 theta_j 做梯度下降

(原先的方法中,我们每做一个 tiny step 都需要扫描一次所有的样本;而 SGD 中,我们每走一个 step 只需要扫描一个样本,因此快得多)

一个更直观的解释 SGD 的方式是,一开始我的 theta 参数是随机的,然后我看到了第一个样本 x1,随后我针对这个 x1 修改的我 theta,接着我看到了 x2,我再针对 x2 修改我的 theta。在等高线图中,你可能会看到,参数并没有沿着 90 度的方向下降,而是以一种更曲折的方式下降

SGD 通常不会收敛,它会振荡

还有一种下降方法是“小批量梯度下降法”,一次遍历100个样本

还有一种实践中的方法(一点点减少学习速率)

线性回归没有局部最优(在它的目标函数是误差平方和时),只有全局最优。所以,实际上你可以使用一个矩阵去表示它的参数,求cost function(目标函数)对于 参数矩阵的求导,随后让导数 = 0,求这个位置上的导数矩阵,即可直接得到全局最优解。这也叫做正态方程,这个方法仅适用于线性回归

在这里插入图片描述
根据吴恩达的推导,正态方程,也就是最终最优的 theta 可以通过这么一个公式求出来

如果发现 X 不可逆,那么通常意味着有多余的 features,你有某些 features 是线性相关的,你可以使用伪逆,或者找出哪些特征是线性相关的

关于怎么选择学习率:这非常依赖经验,通常我们尝试许多个不同的值,然后选择一个

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1226552.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++初阶】STL详解(三)vector的介绍与使用

本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…

Python学习(一)基础语法

文章目录 1. 入门1.1 解释器的作用1.2 下载1.3 基础语法输入输出语法与引号注释:变量: 数据类型与四则运算数据类型四则运算数据类型的查看type()数据类型的转换int()、int()、float() 流程控制格式化输出循环与遍历逻辑运算符list遍历字典dict遍历 跳出…

思维模型 鲶鱼效应

本系列文章 主要是 分享 思维模型 ,涉及各个领域,重在提升认知。激发竞争,促进创新。 1 鲶鱼效应的应用 1.1 鲶鱼效应在组织管理中的应用 美国通用汽车公司是世界上最大的汽车制造企业之一,它曾经面临着生产效率低下、员工缺乏积…

JAVAEE---计算机是如何组成的

计算机软件硬件 硬件是冯诺依曼体系结构,这个结构的精髓在于将存储和执行分开。 这里存储器内存外存(硬盘,u盘,光碟等) cpu是计算机的大脑,是计算机最核心的地方。 cpu中央处理:进行算术运算…

【Linux】-进程间通信-匿名管道通信(以及模拟一个进程池)

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

16.live555mediaserver-保活机制

live555工程代码路径 live555工程在我的gitee下(doc下有思维导图、drawio图): live555 https://gitee.com/lure_ai/live555/tree/master 章节目录链接 0.前言——章节目录链接与为何要写这个? https://blog.csdn.net/yhb1206/art…

.Net中Redis的基本使用

前言 Redis可以用来存储、缓存和消息传递。它具有高性能、持久化、高可用性、扩展性和灵活性等特点,尤其适用于处理高并发业务和大量数据量的系统,它支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等。 Redis的使用 安装包Ser…

Windows网络「SSL错误问题」及解决方案

文章目录 问题方案 问题 当我们使用了神秘力量加持网络后,可能会和国内的镜像源网站的之间发生冲突,典型的有 Python 从网络中安装包,如执行 pip install pingouin 时,受网络影响导致无法完成安装的情况: pip config…

【小沐学GIS】电子海图OpenCPN源代码编译和运行(VS2017 + Win10)

1、简介 免费的开源海图仪和船用GPS导航软件 https://opencpn.org/ 1.1 OpenCPN概述 OpenCPN是一款自由软件(GPLv2),用于创建简洁的海图绘图仪和导航软件,可以在航行过程中使用或者作为计划工具。OpenCPN提供大量免费海图下载&a…

一文总结MySQL的指令是如何工作的

当你输入一条MySQL指令时候有没有想过会发生什么? 建立连接 首先你得先连到数据库上才行,这又分为长连接和短链接,短链接就是你查询一次就断开连接,长连接是你可以多次查询直到主动断开连接(也可能被杀死进程&#x…

飞鼠异地组网工具实战之访问k8s集群内部服务

飞鼠异地组网工具实战之访问k8s集群内部服务 一、飞鼠异地组网工具介绍1.1 飞鼠工具简介1.2 飞鼠工具官网 二、本次实践介绍2.1 本次实践场景描述2.2 本次实践前提2.3 本次实践环境规划 三、检查本地k8s集群环境3.1 检查k8s各节点状态3.2 检查k8s版本3.3 检查k8s系统pod状态 四…

局域网内Ubuntu上搭建Git服务器

1.在局域网内选定一台Ubuntu电脑作为Git服务端: (1).新建用户如为fbc,执行如下命令:需设置密码,此为fbc sudo adduser fbc (2).切换到fbc用户:需密码,此前设置为fbc su fbc (3).建一个空目录作为仓…

消息通讯-MQTT WebHookSpringBoot案例

一、EMQX WebHook介绍 1、EMQX WebHook 是由 emqx_web_hook (opens new window)插件提供的将EMQX中的钩子事件通知到某个Web服务的功能。 2、WebHook 的内部实现是基于钩子,借助 Webhook 可以完成设备在线、上下线记录,订阅与消息存储、消息送达确认等诸…

【Spring Boot 源码学习】Banner 信息打印流程

Spring Boot 源码学习系列 Banner 信息打印流程 引言往期内容主要内容1. printBanner 方法2. 关闭 Banner 信息打印3. SpringApplicationBannerPrinter 类3.1 LOG 模式打印3.1.1 getBanner 方法3.1.1.1 新建 Banners3.1.1.2 添加 ImageBanner3.1.1.3 添加 ResourceBanner3.1.1.…

Flume的安装部署及常见问题解决

1.安装地址 (1) Flume官网地址:http://flume.apache.org/ (2)文档查看地址:http://flume.apache.org/FlumeUserGuide.html (3)下载地址:http://archive.apache.org/dist…

RVC从入门到......

RVC变声器官方教程:10分钟克隆你的声音!一键训练,低配显卡用户福音!_哔哩哔哩_bilibili配音:AI逍遥散人(已授权)关注UP主并私信"RVC"(三个字母)自动获取一键训…

PS 颜色取样器标尺工具 基本使用讲解

上文 PS 吸管工具基本使用方法 我们讲完了 吸管工具 那么 我们继续 打开ps先 接着 我们选择这个 颜色取样器工具 选择之后 我们鼠标在图像上随便点一下 就会出现一个标记 然后 我们可以点多几个地方 边上的信息面板就会输出 点1 和 点2 甚至 多个 点3 点4 的 颜色 RGB代码 …

Python 如何实现备忘录设计模式?什么是备忘录设计模式?Python 备忘录设计模式示例代码

什么是备忘录(Memento)设计模式? 备忘录(Memento)设计模式是一种行为型设计模式,用于捕获一个对象的内部状态,并在对象之外保存这个状态,以便在需要时恢复对象到先前的状态。这种模…

[qemu逃逸] DefconQuals2018-EC3

前言 一道简单的套壳堆题.原本题目环境为 ubu16, 我这里使用的是 ubu18 设备逆向 qemu-system-x86_64 只开了 Canary 和 NX 保护. 比较简单, 主要逻辑在 mmio_write 里面, 其实现了一个菜单堆, 具有增删改的功能: 但是在释放堆块时并没有置空, 所以这里存在 UAF. 而程序还直…

三、程序员指南:数据平面开发套件

定时器库 定时器库为DPDK执行单元提供了定时器服务,以便异步执行回调函数。该库的特点包括: 定时器可以是周期性的(多次触发)或单次的(一次性触发)。定时器可以从一个核加载并在另一个核上执行。这必须在…