机器学习中的梯度下降

news2024/11/13 18:24:58

        本文只是简单解释一下梯度下降,其中涉及到的公式并没有展示说明。

1.什么是梯度?

        梯度也可以理解为导数。

        在一维空间中:梯度就是导数,或者说对于一个线性函数,也就是线的斜率。

2.什么是梯度下降?

        梯度是个向量,自变量沿着该向量的方向变化,函数值变化最快。在机器学习中,为使损失函数下降最快,我们需要让模型参数沿着梯度的负方向更新,即梯度下降

        附上图解(简略过程):

        第一步:计算函数的导数f(x)'

        第二步:任意选择一个起点,如A点。代入X得出Y',将计算得到的Y'作为新的X,图中对应B点。

        第三步:对B点重复第二步操作,会得到C、D、F......以此类推

        一般而言,随着梯度值逐步逼近0,每次X更新幅度越来越小。

         

3.梯度下降的作用?

        如果看懂了上面说的梯度下降的简略过程,这里就很容易明白了。我们将上面的函数换成损失函数,梯度下降就是用来求损失函数最小值时自变量对应取值。

什么是损失函数?

        机器学习算法的预测值减去真实值最后取绝对值叫做误差,而损失函数就是负责计算这个误差的。不同的参数会产生不同的误差,梯度下降就是为了找到让误差值最小时候对应的参数。

额外补充:机器学习常见的两类算法

        1,回归算法,产生一条曲线来拟合现有的数据,实现预测未来的数据。

        2,分类算法,产生一条曲线实现分类,在这个曲线一侧为一类另外一侧算一类。

        而损失函数就是用来评估算法产生的这条曲线的效果好不好

4.常用的梯度下降方法

        批量梯度下降

        批量梯度下降对训练集中的每个点的误差求和,仅在评估所有训练样本后才更新模型。这个过程称为训练周期。

        批量梯度下降的最要问题是计算每一步的梯度时都需要使用整个训练集,这导致在规模较大的数据集上,其会变得非常的慢。

        随机梯度下降

        在每一步的梯度计算上只随机选取训练集中的一个样本。很明显,由于每一次的操作都使用了非常少的数据,这样使得算法变得非常快。由于每一次迭代,只需要在内存中有一个实例,这使随机梯度算法可以在大规模训练集上使用。
        另一方面,由于它的随机性,与批量梯度下降相比,其呈现出更多的不规律性:它到达最小 值不是平缓的下降,损失函数会忽高忽低,只是在大体上呈下降趋势。随着时间的推移,它 会非常的靠近最小值,但是它不会停止在一个值上,它会一直在这个值附近摆动。因此,当算法停止的时候,最后的参数还不错,但不是最优值。

        小批量梯度下降

        小批量梯度下降结合了批量梯度下降和随机梯度下降概念。每次迭代只使用训练集其中一个小批量来训练模型,这个批中的所有样本共同决定了本次迭代中梯度的方向,这种方法兼顾了批量梯度下降的计算效率和随机梯度下降的速度。

补充

        学习率

        在梯度下降的过程中学习率不能过大或者过小,下图的正常情况。

        当学习率过小,会大大增加迭代时间,如下图所示。

        如果学习率过大可能会发生梯度发散,即可能下一次的值比上一次还要大,导致最终无法收敛。如下图所示。

        损失函数

        在实际训练过程中,损失函数一般不会很简单的就是一个开口向上的二次函数,例如下图。

        如果随机初始值选在了图像的左侧,则它将收敛到局部最小值,这个值要比全局最小值要大。 如果它从右侧开始,那么训练需要很长时间,如果你早早地结束训练,你将永远到不了全局最小值。 

        但是线性回归模型的均方差损失函数是一个凸函数(曲线上的任意两点,它们的连线段不会与曲线发生交叉,即该线段不会与曲线有第三个交点)。这意味着这个损失函数没有局部最小值,仅仅只有一个全局最小值。

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

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

相关文章

字典树实现

一、字典树 字典树(Trie树)是一种多叉树结构,每条边代表一个字符,从根节点到其它节点的路径构成一个单词。其具有较好的查询性能,可以用于有效地存储大量字符串,并支持高效的查找、插入和删除操作。 二、…

浏览器缓存:强缓存与协商缓存实现原理有哪些?

1、强缓存:设置缓存时间的,那么在这个时间内浏览器向服务器发送请求更新数据,但是服务器会让其从缓存中获取数据。 可参考:彻底弄懂强缓存与协商缓存 - 简书 2、协商缓存每次都会向浏览器询问,那么是怎么询问的呢&…

java 项目使用 acitiviti 流程引擎中的人员设置

学习目标: 目标 [ ]了解 java 项目使用 acitiviti 流程引擎中的人员设置 知识小记: - [x] 1、人员选择说明 - [x] 2、分配任务候选人 任务的候选人是指有权限对该任务进行操作的潜在用户群体,这个用户群体有权限处理(处理、完成)该任务…

第九课:服务器发布(静态nat配置)

一个要用到静态NAT的场景,当内网有一台服务器server1,假如一个用户在外网,从外网访问内网怎么访问呢,无法访问,这是因为外网没办法直接访问内网,这时候需要给服务器做一个静态NAT。 静态NAT指的是给服务器…

学习笔记——动态路由——IS-IS中间系统到中间系统(特性之路由泄漏)

3、路由泄漏 什么是路由泄漏? IS-IS路由协议允许路由信息的两级层次结构。可以有多个1级区域通过连续的2级主干互连。路由器可以属于1级、2级或两者。1级链路状态数据库仅包含有关该区域的信息。第2级链路状态数据库包含有关该级别以及每个第1级区域的信息。L1/L2…

Matlab|基于蒙特卡洛法的电动汽车充电负荷计算

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序方法复现《V2G 模式下含分布式能源的配电网优化运行研究》第二章电动汽车无序充电模型,按照文章《V2G 模式下基于复杂网络的电动汽车有序充电策略》分析思路研究了不同数量电动汽车接入情况…

初识Docker及管理Docker

Docker部署 初识DockerDocker是什么Docker的核心概念镜像容器仓库 容器优点容器在内核中支持2种重要技术:Docker容器与虚拟机的区别 安装Docker源码安装yum安装检查Docker Docker 镜像操作配置镜像加速器(阿里系)搜索镜像获取镜像查看镜像信息…

【STM32 IDE】使用STM32CubeIDE创建一个工程

关于IDE的下载安装和环境配置这里暂且不介绍,我们直接使用STM32F407ZGT6创建工程。 这里需要注意两点: 创建工程时,默认使用最新版本的固件包(HAL库),好像还不让更改。如果本地电脑位置没有该版本的包&…

Porfinet从转Ethernet/IP从总线协议转换网关

产品功能 1. 远创智控YC-PN-EIP型是Porfinet从转Ethernet/IP从工业级Porfinet 网关。‌这种网关设备允许将Porfinet网络中的设备连接到Ethernet/IP网络中,‌从而实现不同工业通信协议之间的互操作性。‌这些网关设备通常具有两个以太网接口,‌分别用于连…

怎么将几个pdf合成为一个pdf?几个合并PDF文件的方法

怎么将几个pdf合成为一个pdf?当需要将多个PDF文件合并成一个单一的PDF文件时,这种操作不仅能够提高文件管理的效率,还能使得相关文档更加集中和易于访问。合并PDF的过程不仅仅是简单地将几个文件结合在一起,更是将信息整合成一个更…

达梦数据库的系统视图v$recover_status

达梦数据库的系统视图v$recover_status 在达梦数据库(DM Database)中,V$RECOVER_STATUS 是一个系统视图,用于显示数据库的恢复状态信息。这个视图对于数据库管理员来说非常重要,尤其是在数据库发生故障需要进行恢复操…

Vue学习---vue cli 项目创建

使用的编辑工具webStorm 创建例子: hello vue create hello 选择 vue3 进行创建 运行 npm run serve 测试访问:http://localhost:8080 改动内容重新编译: npm run build dist 目录就是编译后的可运行内容

3.外部中断

文章目录 中断原理代码实现过程中断源中断处理函数中断寄存器中断控制寄存器中断优先级寄存器(暂不学)中断允许寄存器 中断代码 中断原理 你在打游戏,水开了,水壶发出响声,你停止打游戏,去倒水&#xff0c…

8 多输出预测与多标签分类pytorch网络搭建

文章目录 前言一、多输出预测(回归)1 坐标数据生成2 网络搭建训练预测二、多标签分类1 多标签数据生成2 网络搭建训练总结前言 前面我们搭建的无论是分类还是回归都只能预测一个标签,这显然效果很局限。下面我们想做到下面这两种效果: 多输出预测(回归):例如训练网络拟…

谷歌浏览器插件-多语言翻译插件-免费好用简单开源

使用说明: 基于translate.js 实现的 免费 谷歌多语言翻译插件 不能确保永久有效! 谷歌浏览器翻译插件,支持中、英、日、韩、俄、中文繁体多种语言翻译~ 使用说明 : 第一步: 把收到的压缩包解压出来,放到…

拒绝废话:computed、watch和methods的区分和使用场景

computed、watch和methods是用于处理数据和响应数据变化的不同方式,三者之间有什么不同呢,贝格前端工场作为10年前端老司机,用浅显的语言给大家分享一下。 computed: computed属性是用来定义一个基于依赖的响应式属性。它会根据…

系统测试-白盒测试学习

目录 1、语句覆盖法: 2、判定覆盖法: 3、条件覆盖法: 4、判定条件覆盖: 5、条件组合的覆盖: 6、路径覆盖: 黑盒:需求 白盒:主要用于单元测试 1、语句覆盖法: 程序…

Modbus转Ethernet/IP网关模块与汇川PLC通讯案例

Modbus转Ethernet/IP网关模块(XD-MDEP100)是一种用于将Modbus协议转换为Ethernet/IP协议的设备。它可以将Modbus RTU和Modbus TCP两种不同格式的Modbus数据包转换为Ethernet/IP协议的数据包,实现不同厂家的设备之间的数据交换和共享。在汇川P…

力扣2296.设计一个文本编辑器

力扣2296.设计一个文本编辑器 对顶栈 将光标看作左右栈的分隔添加元素:往左栈添加元素删除元素:从左栈删除元素光标左(右)移:左(右)栈元素加到右(左)栈 class TextEditor {string left,right;public:TextEditor() {}void addText(string…

理兔chat开发日记

1.注册 注册跟以前的差不多,我们将我们的验证码放在redis下,我们在注册的时候先判断我们输入的验证码是否正确 验证码成功后在我们的实现类中,我们先判断邮箱是否重复,不重复我们就继续注册 我们拥有联号注册的功能,就…