batch和momentum

news2024/12/23 15:11:08

在这里插入图片描述

🚀 机器学习系列前期回顾

1、初识机器学习
2、线性模型到神经网络
3、local minima`的问题如何解决

🚀在初识机器学习中,了解了机器学习是如何工作的并引入了线性模型,在线性模型到神经网络这节,将线性模型进一步改进为弹性较大的神经网络模型并在结尾简要说了一下使用一个batch更新一次参数,在local minima的问题如何解决这节,解决了求解模型未知参数的时候遇见local minima的解决办法。在这一小结,将继续探索为什么要使用batch

1) batch

在前面已经了解过了batch 如何工作,其就是在进行模型未知参数求解的时候,对于构建损失函数来说,之前是使用所有的已知的数据(训练数据)来构建损失函数,而引入batch,将已知的所有数据分成等大小的batch,使用一个batch的数据来构建损失函数,进行更新参数,然后依次使用下一个batch构建新的损失函数,进行更新参数,直到使用完最后一个batch,即看完所有的已知数据,即进行了一个epoch 在进行完一个epoch后,会将数据进行一个shuffle(洗牌的操作),再次分成batch进行训练,更新参数。

在这里插入图片描述

2)batch的大小如何设置

对于batch的大小如何设置,这也是一个超参数,需要自己人工设置,那到底应该设置多大,先来看一个极端的例子

example

假设有20个训练数据,若极端的将batch的大小就设置为20,即full batch;另外一个极端将batch的大小设置为1。

在这里插入图片描述

  • 对于full batch来说,其是使用full batch来构建损失函数,即用20个已知数据来构建损失函数,其更新一次参数要看过所有的20个资料,并且看完20个资料只更新一次。
  • 对于batch的大小为1,即只使用一个数据来构建损失函数,其每次更新数据只看其中一个数据,当看完20个资料更新20次。

这样对比来看,使用full batch的话,计算量较大,好像更新较慢,batch的大小为1的话,计算量较小,且更新的速度较快,所以看起来好像batch的大小越小越好

其实大的batch不需要更长的时间

这是因为其实GPU有平行运算(parallel computing)的能力;在下图中,对于手写体识别的实验来说,若batch的大小是1或者10或者100,甚至1000的话,他们运行所需要的时间都是相差不大的,所以batch的大小只要不太大,其计算时间几乎没有区别

在这里插入图片描述

所以得到小的batch和大的batch在一次计算时间上没有差异。但是对于一个epoch的时间呢?

如下图所示,对于一个epoch来说,如果batch的大小是1的话,进行一个epoch需要60000次的更新操作;如果batch的大小是1000的话,进行一个epoch需要60次的更新操作。在计算时间相同的情况下,60000次的计算更新操作显然要比60次的更新操作所需要的时间更多。

在这里插入图片描述

时间上来说:较大的batch更节约资源

batch的大小对于训练结果的准确度又有什么影响呢?观察下图可知,要是batch的过大,反而会导致准确度的下降。同样的模型使用不同的batch训练,其最后的准确度不同,这显然不是model bias的问题,也并不是overfitting的问题,因为对于过拟合来说,其表现为训练上表现好,测试上表现不好,所以这是由于使用大的batch导致的optimization failed(没有找到最好的解)。
在这里插入图片描述

准确度上来说:较小的的batch可以训练出来更高准确度的模型。

为什么较小的的batch可以训练出来更高准确度的模型?

在这里插入图片描述

  • full batch的其损失函数是固定不变的,在更新参数求解的时候更难走到全局最优解。
  • small batch的损失函数,在不同的batch中,其损失函数是不一样的,就如上图所示,若在batch1中得到的损失函数是 L 1 L^1 L1的话,它也许会卡在local minima的位置,当时进入第二个batch进行训练的时候,也许在batch2中得到的损失函数 L 2 L^2 L2就正好跳过了local minima,所以小一点的batch更好到达全局最优点。

小的batch在训练的时候可以得到更低的准确率,现在想办法将使用大的batch训练(下图中LB(large batch)那列)也达到和小的一样的准确度,然后让LB和SB进行测试,得到的结果也如下图所示,仍然是SB的表现更好。
在这里插入图片描述
所以可以得到,小的batch不仅在训练的时候表现得更好,而且在测试上也会表现得更好,即使使用大的batch,想办法让其在训练得时候达到小batch的训练效果,即使得到了好的训练效果,但是其在测试数据上也不会表现得好。

上图该数据来自论文https://arxiv.org/abs/1609.04836

总结一下小的batch和大batch的对比:

在这里插入图片描述

3) momentum

这也是一个对抗local minimasaddle point的技术。先来假设一下,在物理世界里,一个小球从高处滚落,要想使得其滚到局部最低点的时候,并不会停下来,而是会继续带有一定的momentum(动量) 继续向前运动,也许就会有机会走出local minma

在这里插入图片描述

所以,现在如果可以将这种特性加到之前的梯度下降中的话,就可以进一步很好的克服local minma的问题,可以更好的走到全局最优点。

在加入这种特性之前,先来回顾一下之前的梯度下降;如下所示,随机初始初始点开始,计算梯度,根据该点的梯度进行下降。

在这里插入图片描述

加入momentum之后,每次进行移动的时候会考虑前一次的移动方向。 每一次更新都是计算当前点的梯度然后再加上前一步的梯度。

在这里插入图片描述

具体来看一下momentum是如何工作的

  • 第一个位置,先计算该点的导数,根据导数得出的方向为红色线提供的,蓝色线为初始设定的一个方向。
  • 第二个位置,同样先计算该点的导数,很平缓,所以根据导数得到的红色线很小,同时得加上前一步的移动方向继续向前移动
  • 来到第三个位置,计算导数为零,即不提供红色方向,但是还得加上前一个点的蓝色方向,所以还得再往前走

在这里插入图片描述

  • 来到第四个点后,同样的计算其导数,导数提供的红色方向是向左的,前一个点的蓝色方向提供的蓝色方向是向右的,所以二者相加会抵消一部分,若前一个点提供的蓝色方向更多一点的话,那么整体也就会继续再向右移动,有可能就会越过local minima

在这里插入图片描述

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

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

相关文章

FireRedTTS - 小红书最新开源AI语音克隆合成系统 免训练一键音频克隆 本地一键整合包下载

小红书技术团队FireRed最近推出了一款名为FireRedTTS的先进语音合成系统,该系统能够基于少量参考音频快速模仿任意音色和说话风格,实现独特的音频内容创造。 FireRedTTS 只需要给定文本和几秒钟参考音频,无需训练,就可模仿任意音色…

【Golang】关于Go语言字符串转换strconv

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

ProtoBuf快速上手

文章目录 创建 .proto文件编译 .proto文件编译后生成的文件序列化与反序列化的使用 此篇文章实现内容: 对一个通讯录的联系人信息,使用PB进行序列化,并将结果输出对序列化的内容使用PB进行反序列化,解析联系人信息并输出联系人信…

【成神之路】Ambari实战-015-代码生命周期-metainfo-category详解

1.Redis 集群 metainfo.xml 示例 <?xml version"1.0"?> <metainfo><schemaVersion>2.0</schemaVersion><services><service><!-- Redis 集群服务的基本信息 --><name>REDIS</name><displayName>Redi…

MongoDB的安装与增删改查基本操作

MongoDB是一种非关系型数据库&#xff0c;是NoSQL语言&#xff0c;但是又是最接近关系型数据库的。内部存储不是表结构&#xff0c;但是可以对数据进行表结构的操作。 一、安装 在官网&#xff1a;Download MongoDB Community Server | MongoDB下载系统对应的版本进行安装即可…

html+css+js实现Collapse 折叠面板

实现效果&#xff1a; HTML部分 <div class"collapse"><ul><li><div class"header"><h4>一致性 Consistency</h4><span class"iconfont icon-jiantou"></span></div><div class"…

UFS 3.1架构简介

整个UFS协议栈可以分为三层:应用层(UFS Application Layer(UAP)),传输层(UFS Transport Layer(UTP)),链路层(UIC InterConnect Layer(UIC))。应用层发出SCSI命令(UFS没有自己的命令使用的是简化的SCSI命令),在传输层将SCSI分装为UPIU,再经过链路层将命令发送给Devices。下…

通信工程学习:什么是TCP传输控制协议

TCP&#xff1a;传输控制协议 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是因特网协议套件中最重要的协议之一&#xff0c;它为应用程序提供了可靠、面向连接的通信服务。以下是TCP协议的详细解释&#xff1a; 一、TCP传输控制协议的…

双十一有哪些值得入手的好物?这五款宝藏好物不容错过!

在这个金秋送爽、收获满满的季节里&#xff0c;我们迎来了万众瞩目的双十一购物狂欢节。这不仅仅是一场简单的消费盛宴&#xff0c;更是每一位消费者期待已久、精心筹备的年度购物盛典。随着电商平台的不断革新与优惠力度的持续加码&#xff0c;双十一已经从一个简单的促销日成…

使用百度文心智能体创建多风格表情包设计助手

文章目录 一、智能定制&#xff0c;个性飞扬二、多元风格&#xff0c;创意无限 百度文心智能体平台为你开启。百度文心智能体平台&#xff0c;创建属于自己的智能体应用。百度文心智能体平台是百度旗下的智能AI平台&#xff0c;集成了先进的自然语言处理技术和人工智能技术&…

单目3d重建DUSt3R 笔记

目录 DUSt3R 三维重建 报错RecursionError: maximum recursion depth exceeded in comparison 报错 numpy.core.multiarray failed to import 报错Numpy is not available 解决 升级版mast3r 速度变慢 修改了参数设置脚本&#xff1a; 测试效果 操作技巧 DUSt3R 三维重…

[已解决] Install PyTorch 报错 —— OpenOccupancy 配环境

目录 关于 常见的初始化报错 环境推荐 torch, torchvision & torchaudio cudatoolkit 本地pip安装方法 关于 OpenOccupancy: 语义占用感知对于自动驾驶至关重要&#xff0c;因为自动驾驶汽车需要对3D城市结构进行细粒度感知。然而&#xff0c;现有的相关基准在城市场…

torchvision.transforms.Resize()的用法

今天我在使用torchvision.transforms.Resize()的时候发现&#xff0c;一般Resize中放的是size或者是(size,size)这样的二元数。 这两个里面&#xff0c;torchvision.transforms.Resize((size,size))&#xff0c;大家都很清楚&#xff0c;会将图像的h和w大小都变成size。 但是…

【python实操】python小程序之过七游戏以及单词单复数分类

引言 python小程序之过7游戏、单词单复数分类 文章目录 引言一、过7游戏1.1 题目1.2 代码1.2.1 while循环1.2.2 for循环1.2.3 调用函数形式 1.3 代码解释 二、单词单复数分类2.1 题目2.2 代码2.3 代码解释 三、思考3.1 过七游戏3.2 单词单复数分类 一、过7游戏 1.1 题目 7的倍…

大模型 LLaMA-Omni 低延迟高质量语音交互,开源!

最近这一两周看到不少互联网公司都已经开始秋招发放Offer。 不同以往的是&#xff0c;当前职场环境已不再是那个双向奔赴时代了。求职者在变多&#xff0c;HC 在变少&#xff0c;岗位要求还更高了。 最近&#xff0c;我们又陆续整理了很多大厂的面试题&#xff0c;帮助一些球…

python-patterns:Python 设计模式大全

python-patterns 是一个开源的 Python 项目&#xff0c;它提供了各种经典的设计模式的 Python 实现。设计模式是一种针对常见软件设计问题的可复用解决方案&#xff0c;通过使用设计模式&#xff0c;开发者可以编写出结构更加合理、易于维护和扩展的代码。 Python 是一门动态语…

GraphEval: A Knowledge-Graph Based LLM Hallucination Evaluation Framework

文章目录 题目摘要引言问题陈述相关工作GraphEval:我们的评估方法使用LLM构建知识GraphCorrect:使用GraphEval纠正幻觉实验讨论结论 题目 GraphEval:一个基于知识图的LLM幻觉评估框架 论文地址&#xff1a;https://arxiv.org/abs/2407.10793 摘要 评估大型语言模型(LLM)响应和…

【计算机科研方法指南】- 读书笔记《学术咸鱼自救指南》+于老师科研课

前言简介 因为自己在做计算机科研的时候&#xff0c;一开始很不顺利&#xff0c;所以专门去研究了一些具体的计算机科研方法。这里的方法主要参考了两个资料&#xff0c;一个是《学术“咸鱼”自救指南》&#xff0c;一个是于静老师科研课。 《学术“咸鱼”自救指南》是作者钱…

【微服务】组件、基础工程构建(day2)

组件 服务注册和发现 微服务模块中&#xff0c;一般是以集群的方式进行部署的&#xff0c;如果我们调用的时候以硬编码的方式&#xff0c;那么当服务出现问题、服务扩缩容等就需要对代码进行修改&#xff0c;这是非常不好的。所以微服务模块中就出现了服务注册和发现组件&…

视频创作黑科技!CogVideoX秒生成艺术视频

视频创作黑科技&#xff01;CogVideoX秒生成艺术视频 CogVideoX上线啦&#xff01;&#x1f389; 它能把文字和图片变成惊艳视频&#x1f3a5;。CogVideoX-5B如同好莱坞导演&#xff0c;快速生成高质量内容⚡&#xff0c;完美捕捉创意细节✨。让你轻松成为视频创作大师&#x…