batch和momentum

在这里插入图片描述

🚀 机器学习系列前期回顾

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.xdnf.cn/news/1553059.html

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

相关文章

【web安全】——XSS漏洞

1.XSS漏洞基础 1.1.漏洞成因 XSS(Cross-site scripting)被称为跨站脚本攻击,由于与层叠样式表的缩写一样,因此被缩写为XSS.XSS漏洞形成的原因是网站/程序对前端用户的输入过滤不严格,导致攻击者可以将恶意的is/html代码注入到网页中&#x…

基于Word2Vec和LSTM实现微博评论情感分析

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝,拥有2篇国家级人工智能发明专利。 社区特色…

【Python报错已解决】TypeError: unsupported operand type(s) for +: ‘str‘ and ‘int‘

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

【C++前缀和】2845. 统计趣味子数组的数目|2073

本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode 2845. 统计趣味子数组的数目 难度分:2073 给你一个下标从 0 开始的整数数组 nums ,以及整数 modulo 和整数 k 。 请你找出并统计数组…

(作业)第三期书生·浦语大模型实战营(十一卷王场)--书生入门岛通关第3关Git 基础知识

任务编号 任务名称 任务描述 1 破冰活动 提交一份自我介绍。 2 实践项目 创建并提交一个项目。 破冰活动 提交一份自我介绍。 每位参与者提交一份自我介绍。 提交地址:https://github.com/InternLM/Tutorial 的 camp3 分支~ 安装并设置git 克隆仓库并…

分散加载文件 scatter files

目录 一、加载域和执行域二、Image entry points三、映射符号四、链接器预定义符号1、将符号引入到程序中1.1 引入到 C/C1.2 引入到汇编 2、域相关的符号2.1 执行域符号 Image$$2.2 执行域符号 Load$$2.3 加载域符号 Load$$LR$$2.4 节相关的符号2.5 镜像符号2.6 输入节符号 五、…

【Nacos 架构 原理】服务发现模块之Nacos注册中心服务数据模型

文章目录 服务(Service)和服务实例(Instance)定义服务服务元数据定义实例实例元数据持久化属性 集群定义集群 生命周期服务的生命周期实例的生命周期集群的生命周期元数据的生命周期 服务(Service)和服务实…

收单外包机构备案分析及建议

2020年9月16日,中国支付清算协会(下称“中支协”或“协会”)公示了首批收单外包服务机构备案名单。历经5年,约进行50次公示后,截至9月21日共备案收单外包机构32457家,取消备案机构316家,拟取消机…

YOLO v11实时目标检测3:训练数据集格式说明

一、Yolov11简介 YOLOv11 是 YOLO 系列的最新版本,它不仅在目标检测方面表现出色,还引入了对象分割和多目标跟踪的功能。本文将介绍如何使用 YOLOv11 进行人流统计、车流统计以及跟踪的实际应用。 二、Yolo v11训练数据集格式说明 2.1 数据组织&#…

Redis --- 第二讲 --- 特性和安装

一、背景知识 Redis特性: Redis是一个在内存中存储数据的中间件,用于作为数据库,作为缓存,在分布式系统中能够大展拳脚。Redis的一些特性造就了现在的Redis。 在内存中存储数据,通过一系列的数据结构。MySQL主要是通…

4 款语音识别转文字神器,打工人速速码住!

现在这信息多得不得了的时代哈,文字处理这玩意儿可成了咱日常生活里少不了的一部分啦。对那些忙得不行的打工人来说,能又快又准地把语音变成文字,那绝对是提升工作效率的关键。今天呢,咱就一起来瞅瞅四款挺受推崇的语音识别转文字…

TypeScript 第三部分 扩展

1. 声明文件 主要作用: 类型声明:为库或模块提供类型信息。全局声明:为全局作用域中的类型和变量提供声明。类型兼容性:确保第三方库或自定义代码的类型正确性。代码提示与检查:在开发环境中提供更好的代码提示和类型…

基于单片机人体反应速度测试仪系统

** 文章目录 前言概要设计思路 软件设计效果图 程序文章目录 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们…

CSP-J Day 2 模拟赛补题报告

upd: T4 重新上传 AC 代码,一开始的有 hack。 姓名:王胤皓,校区:和谐校区,考试时间: 2024 2024 2024 年 10 10 10 月 2 2 2 日 9 : 00 : 00 9:00:00 9:00:00~ 12 : 30 : 00 12:30:00 12:30:00&#xff…

简单理解程序地址空间:Linux 中的内存映射与页表解析

ps: Linux操作系统对于程序地址,物理地址的处理,对于源码,我也看不大懂,只是截取当我们进程发生正常缺页中断的时候的调用情况。本文中所有的源码都是进行截取过的,如果大家感兴趣可以去下载源码。 在Linux 操作系统 …

【Burp入门第三十三篇】IP Rotate 插件实现IP轮换爆破

Burp Suite是一款功能强大的渗透测试工具,被广泛应用于Web应用程序的安全测试和漏洞挖掘中。 本专栏将结合实操及具体案例,带领读者入门、掌握这款漏洞挖掘利器 读者可订阅专栏:【Burp由入门到精通 |CSDN秋说】 文章目录 正文安装步骤使用步骤应用场景实战文章正文 在 Burp…

留存率的定义与SQL实现

1.什么是留存率 留存率是指在特定时间段内,仍然继续使用某项产品或服务的用户占用户总数的百分比。 通常,留存率会以日,周,或月为单位进行统计和分析。 2.SQL留存率常见问题 1.计算新用户登录的日期的次日留存率以及3日留存率 …

假期惊喜,收到公司款项86167.14元

假期惊喜 近日,有网友爆料称,比亚迪在未提前通知员工的情况下,突然发放了利润奖金。 有人获得了七八万元,也有人拿到了十多万元。 一位比亚迪员工的帖子显示,在9月26日下午,他的银行卡突然收到一笔 86167.1…

知识图谱入门——4:Protégé 5.6.4安装和主要功能介绍、常用插件(2024年10月2日):知识图谱构建的利器

Protg 是斯坦福大学开发的一款开放源代码的本体编辑工具。它为构建、共享和管理本体(Ontologies)提供了一个强大的平台,广泛应用于语义网、知识管理、自然语言处理等领域,特别是知识图谱的开发和管理。Protg 支持 OWL(…