机器学习-3降低损失(Reducing Loss)

机器学习-3降低损失(Reducing Loss)

学习内容来自:谷歌ai学习
https://developers.google.cn/machine-learning/crash-course/framing/check-your-understanding?hl=zh-cn
本文作为学习记录

1.降低损失:迭代方法

迭代学习
下图展示了机器学习算法用于训练模型的迭代试错过程:
在这里插入图片描述

在这里插入图片描述

迭代策略在机器学习中很常见,主要是因为它们可以很好地扩展到大型数据集。
“模型”将一个或多个特征作为输入,并返回一项预测作为输出。为简单起见,假设一个模型接受一个特征 ( X1) 并返回一个预测 (y’):
y’ = b + w 1 w_{1} w1 x 1 x_{1} x1**
在这里插入图片描述
最后,我们已经到达图中的“计算参数更新”部分。机器学习系统会在这里检查损失函数的值,并为b 和 w1生成新值。现在,我们先假设这个神秘的框会产生新值,然后机器学习系统会根据所有标签重新评估所有特征,为损失函数生成一个新值,而该值又产生新的参数值。学习过程会持续迭代,直到该算法发现损失可能最低的模型参数。通常,您可以反复迭代,直到整体损失不再发生变化或变化速度至少变化得非常缓慢。这时候,我们可以说该模型已收敛。

训练机器学习模型时,首先对权重和偏差进行初始猜测,然后以迭代方式调整这些猜测,直到学习出损失可能最低的权重和偏差。

2. 降低损失:梯度下降法 Gradient Descent

迭代方法图包含一个标题为“计算参数更新”的华而不实的绿色方框。我们现在要用更实质的方法代替这种精明的算法。

理解梯度下降就好比在山顶以最快速度下山:好比道士下山,如何在一座山顶上,找到最短的路径下山,并且确定最短路径的方向

假设我们有时间和计算资源来计算w1的所有可能值的损失。对于我们一直在研究的那类回归问题,产生的损失与w1的图表始终是凸形。换句话说,图表将始终是碗状图,如下所示: 图 2. 回归问题产生的损失与权重图呈凸形。
在这里插入图片描述

凸形问题只有一个最小值;即只有一个位置的斜率正好为 0。这个最小值就是损失函数收敛的位置。
通过计算整个数据集内每个w1可能的值的损失函数来寻找收敛点的效率非常低下。我们来研究一种更好的机制,这种机制在机器学习领域非常热门,称为梯度下降法
通过计算整个数据集中 每个可能值的损失函数来找到收敛点这种方法效率太低。我们来研究一种更好的机制,这种机制在机器学习领域非常热门,称为梯度下降法。
梯度下降法的第一阶段是为w1选择一个起始值(起点)。起点并不重要;因此,许多算法直接将w1设置为 0 或选择随机值。在下图中,我们选择了一个略大于 0 的起点:
然后,梯度下降法算法会计算损失曲线在起点的梯度。在图 3 中,损失的梯度等于曲线的导数(斜率),可以告诉您哪个方向是“更暖”还是“冷”。当有多个权重时,梯度是偏导数相对于权重的矢量。

执行梯度下降法时,我们会泛化上述过程,以同时调整所有模型参数。例如,为了找到w1和b偏差的最优值,我们会同时计算w1和b的梯度。接下来,我们根据w1和b各自的梯度修改它们的值。然后重复上述步骤,直到达到最小损失。

在这里插入图片描述

原理上就是凸形问题求最优解,因为只有一个最低点;即只存在一个斜率正好为 0 的位置。这个最小值就是损失函数收敛之处。
在这里插入图片描述

梯度下降法的目标:寻找梯度下降最快的那个方向
梯度是一个矢量,因此具有以下两个特征:方向、大小
梯度始终指向损失函数中增长最为迅猛的方向。梯度下降法算法会沿着负梯度的方向走一步,以便尽快降低损失

为了确定损失函数曲线上的下一个点,梯度下降法算法会将梯度大小的一部分与起点相加
在这里插入图片描述

然后,梯度下降法会重复此过程,逐渐接近最低点。(找到了方向)

3.降低损失 (Reducing Loss):学习速率

超参数是编程人员在机器学习算法中用于调整的旋钮。大多数机器学习程序员都会花费大量时间来调整学习速率。如果您选择的学习速率过小,则学习将会花费太长时间:
相反,如果您指定的学习速率过大,则下一个点将永远在井底随意弹跳,就像量子力学实验大错一样:
每个回归问题都存在一个金发姑娘学习速率。“金发姑娘”值与损失函数的平坦程度有关。如果您知道损失函数的梯度较小,则可以放心地尝试较大的学习速率,以抵消小的梯度,从而产生较大的步长。
在这里插入图片描述
在这里插入图片描述

3.1黑塞矩阵(Hessian Matrix)

黑塞矩阵又译作海森矩阵、海瑟矩阵、海塞矩阵等,是一个多元函数的二阶偏导数构成的方阵,描述了函数的局部曲率。
在这里插入图片描述
在这里插入图片描述

4.降低损失:优化学习速率

谷歌学习平台提供了: 尝试不同的学习速率,看看它们如何影响达到损失曲线最小值所需的步数。
https://developers.google.cn/machine-learning/crash-course/fitter/graph?hl=zh-c
在这里插入图片描述

5.降低损失 (Reducing Loss):随机梯度下降法

在梯度下降法中,批次是用于在单次训练迭代中计算梯度的一组样本。 Google 数据集通常包含大量特征。因此,一个批次可能非常庞大。超大的批量也可能会导致单次迭代就可能需要很长时间才能完成计算。

具有随机抽样样本的大型数据集可能包含冗余数据。事实上,随着批次大小的增加,冗余的可能性会越来越高。一些冗余可能有助于消除嘈杂的梯度,但与大批量相比,大量的批量往往具有更高的预测价值。

如果我们可以通过更少的计算量得出正确的平均梯度,会怎么样?通过从数据集内随机选择样本,我们可以从小得多的样本中估算出大的平均值(尽管会有噪声)。 随机梯度下降法 (SGD) 将这种想法运用到极致,它每次迭代只使用一个样本(批次大小为 1)。如果有足够的迭代,SGD 可以正常工作,但噪声非常嘈杂。术语“随机”表示构成每个批次的一个样本是随机选择的。

小批量随机梯度下降法(小批量 SGD)是介于全批量迭代与 SGD 之间的折衷方案。小批次通常包含 10 到 1,000 个随机选择的样本。小批量 SGD 可以减少 SGD 中的噪声数,但仍然比全批量更高效。

5.1 补充:Goldilocks Principle 金发女孩原则

Goldilocks
(usually initial capital) Not being extreme or not varying drastically between extremes, especially between hot and cold.
Goldilocks Principle = Just the right amount = 刚刚好

西方有这么一个儿童故事叫 “ The Three Bears(金发女孩与三只小熊)”,迷路了的金发姑娘未经允许就进入了熊的房子,她尝了三只碗里的粥,试了三把椅子,又在三张床上躺了躺。最后发现不烫不冷的粥最可口,不大不小的椅子坐着最舒服,不高不矮的床上躺着最惬意。道理很简单,刚刚好就是最适合的,just the right amount,这样做选择的原则被称为 Goldilocks principle(金发女孩原则)

金发姑娘原则不仅适用于日常生活中的决策,也被广泛应用于多个领域,如发展心理学、经济学、通讯科学、医学和天体生物学等。在个人发展和人际关系方面,这个原则鼓励人们寻找平衡点,避免走向极端,从而更有效地解决问题和建立和谐的关系。

在天体宇宙学中,Goldilocks Zone是最适合居住的环境,温度上不过热不过冷,正正好适宜生命的成长,地球就是最典型的Goldilocks Planet。
在经济学中,Goldilocks economy 描述的经济状态不会太热导致通货膨胀,也不太冷导致经济萧条。这种正正好的状态下经济稳定,货币政策有利于市场,就业率也往往较高。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[嵌入式系统-7]:龙芯1B 开发学习套件 -4- LoongIDE 集成开发工具的使用-创建应用程序工程、编译、下载、调试

目录 前言: 步骤1:设置工作工作空间 步骤2:设置工具链 步骤3:创建裸机应用程序 步骤4:创建带实时操作系统的应用程序 步骤5:编译 步骤6:下载调试 前言: LoongIDE集成开发环境…

075:vue+mapbox 利用高德地址逆转换,点击地图,弹出地址信息

第075个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中利用高德逆地理编码,点击地图,弹出某点坐标和地址信息。这里要仔细阅读高德地图的逆编码API,同时要注意的是,这种转换在中国很好用,到了欧美国家就不好使了。同时这个底图是天地图的图像和标记。 直接…

第三篇:跨平台QT开发-打包

(1)设置应用程序图标 https://www.bitbug.net/---->可以做图标 准备好 login.ico 文件,ExamSys.pro 文件中添加如下一行的代码 RC_ICONS login.ico-->图标的名字 找到项目运行的目录把图标拷贝进去(并将项目设置为release模式) 一定要…

将java对象转换为json字符串的几种常用方法

目录 1.关于json 2.实现方式 1.Gson 2.jackson 3.fastjson 3.与前端的联系 1.关于json JSON是一种轻量级的数据交换格式。它由Douglas Crockford在2001年创造。JSON的全称是JavaScript Object Notation,它是一种文本格式,可以轻松地在各种平台之间传…

正则表达式及文本处理三剑客(grep、sed、awk)

目录 一、正则表达式 1、正则表达式的概述 1.1 正则表达式的概念和作用 1.2 正则表达式支持的语言 1.3 正则表达式的优缺点 1.4 正则表达式的分类 1.4.1 基本正则表达式(BRE): 1.4.2 扩展正则表达式(ERE)&…

回归预测 | Matlab实现CPO-GRU【24年新算法】冠豪猪优化门控循环单元多变量回归预测

回归预测 | Matlab实现CPO-GRU【24年新算法】冠豪猪优化门控循环单元多变量回归预测 目录 回归预测 | Matlab实现CPO-GRU【24年新算法】冠豪猪优化门控循环单元多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CPO-GRU【24年新算法】冠豪猪优化…

HiveSQL题——数据炸裂和数据合并

目录 一、数据炸裂 0 问题描述 1 数据准备 2 数据分析 3 小结 二、数据合并 0 问题描述 1 数据准备 2 数据分析 3 小结 一、数据炸裂 0 问题描述 如何将字符串1-5,16,11-13,9" 扩展成 "1,2,3,4,5,16,11,12,13,9" 且顺序不变。 1 数据准备 with da…

springboot144基于mvc的高校办公室行政事务管理系统设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

如何编写具有完备性的测试用例 ? 具体思路是什么 ? 全套解决方案打包呈现给你 。

设计测试用例应该算是测试人员最为主要的工作之一 ,好的测试用例往往具有覆盖性强 ,扩展性高以及复用性好等特点 。该如何设计出好的测试用例 ?是我们每一位测试人员需要重点思考的问题 ,下面是我对设计测试用例设计的思考 &#…

全国疫情实时监测系统(附源码)

目录 一.项目背景 1.有力支持疫情防控知识传播 2.迅速锁定“涉疫”人员流动轨迹 3.开展疫情发展态势预测与溯源 4.一图胜过千言万语!!! 二.研究过程(项目技术的利用) 1.总述 2.所用技术介绍 2.1Python 2.2Pyt…

从零开始学Linux之gcc命令

首先我们需要知道有两种编程语言 编译型语言:要求必须提前将所有源代码一次性转换成二进制指令,也就是生成一个可执行程序,例如C、C、go语言、汇编语言等,使用的转换工具称为编译器。 解释型语言:一边执行一边转换&a…

解析电子名片二维码生成:便捷、灵活、个性化

在当今信息爆炸的时代,名片已经成为商务社交不可或缺的工具之一。然而,随着技术的不断发展,传统的纸质名片已经逐渐被电子名片生成二维码所取代。电子名片二维码不仅具备了传统名片的基本信息展示功能,更融合了数字化优势&#xf…

记一次java项目本地正常执行,打完包之后执行发现没有对应的类或配置的问题

1、起因 线上有个spark的任务出了问题(该任务是通过sparkstreaming读取kafka中的数据,处理完之后推到es中),问题出在kafka中数据是有更新的,但是es中的对应索引中的数据却只更新到月初,因此我需要排查处理…

IDEA 取消参数名称提示、IDEA如何去掉变量类型提醒

一、IDEA 取消参数名称显示 取消显示形参名提示 例如这样的提示信息 二、解决方法 1、File—>Setting–>Editor—>Inlay Hints—>Java 去掉 Show Parameter hints for 前面的勾即可,然后Apply—>Ok 2、右键Disable Hints

爬虫学习笔记-Cookie登录古诗文网

1.导包请求 import requests 2.获取古诗文网登录接口 url https://so.gushiwen.cn/user/login.aspxfromhttp%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx # 请求头 headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like …

自定义注解实现记录日志功能(注解支持SpEL表达式)

一、首先创建个接口类Log import java.lang.annotation.*;/*** description: 自定义操作日志记录注解* author xizc**/ Target({ ElementType.PARAMETER, ElementType.TYPE, ElementType.METHOD }) Retention(RetentionPolicy.RUNTIME) Inherited Documented public interface …

JUnit

前言:自动化就是selenium脚本来实现的,JUnit是java的单元测试工具,只不过我们在实现自动化的时候需要借助一下JUnit库里面提供的一些方法。 1、Test Test :表示方法是测试方法,执行当前这个类的时候,会自动…

Unity之做一个最简单的FPS游戏demo

目录 😋FPS游戏Demo 💤1.新建FPS模板项目 ⚒️2.装备枪 💣3.设置射击功能 📺4.制造一个子弹预制体 🎮5.发射子弹 说起来小编学Unity差不多一个月了,都是利用上班摸鱼时间学的(doge.jpg&…

java+springboot校园体育场地预约预订使用系统vue+ssm

研究内容和研究方法 1.研究内容 网站主要包括管理员和用户两个部分,用户可以登录与注册自己的基本信息、查询哪些场地可以使用、提前预约场地、取消预约的场地、使用完场地后进行缴费。管理员可以审批用户的注册信息、对用户信息进行增删改查、查询场地的使用情况、…

【C++干货基地】C++引用与指针的区别:深入理解两者特性及选择正确应用场景

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 哈喽各位铁汁们好啊,我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的…