李宏毅ML-批次与动量

news2024/11/19 3:28:22

批次与动量

文章目录

  • 批次与动量
    • 1. Small batch or Large batch?
    • 2. Gradient descent + Momentum
    • 3. 总结

1. Small batch or Large batch?

在使用 gradient descent 进行 optimization 时,在每一次 epoch 前,要 shuffle 所有的资料,然后再分成一个个 batch,每次更新参数是用 θ \theta θ 对当前 batch 的 Loss 进行微分。
在这里插入图片描述
那么 batch size 是 small 一点好呢?还是 large 一点好呢?
我们在这里取两个比较极端的例子,batch size 最小是 1,最大是 N

  • 当 batch size = 20 时,在看完 20 笔训练资料后才能 update,每一个 epoch 要 update 一次;
  • 当 batch size = 1 时,在看完 1 笔训练资料后就 update,每一个 epoch 要有 20 次 update。

我们会想当然地以为使用 small batch 比 large batch 所需的时间更少。
在这里插入图片描述
其实不然,现在的 GPU 都有并行计算的能力,只要 batch size 不是太大,small batch 和 batch size 完成一次 update 所需要用的时间是差不多的。
例如,在 Tesla V100 GPU 这张显卡上训练 MNIST 数据集,完成 0 - 9 的数字分类任务,从下图中可以看出,batch size = 1 和 batch size = 1000 时每次更新参数所需的时间是差不多的,只有 batch size = 60000 时,数据量的确太大,大概需要 10 s.
在这里插入图片描述
刚刚比较的是使用 small batch 和 large batch 各完成一次 update 所需的时间。
如右下图所示,虽然 small batch 和 large batch(not too large) 各完成一次 update 所需的时间差不多,但是在一个 epoch 内,使用 small batch 训练模型比使用 large batch 训练模型所需要的时间要多。
在这里插入图片描述
因此一开始,我们想当然地认为使用 small batch 所需的时间更少,其实这是错误的。
在这里插入图片描述
比较完了训练时间后,再来比较性能。
当 batch size = 1 时,取得的效果比较好,在 validation set 上的 accuracy 要比在 training set 上的 accuracy 要高;而当 batch size = 60000 时,表现不是很好,无论是在 MNIST 数据集还是在 CIFAR-10 数据集上的 accuracy 都很低,说明 optimization 没有做好。
在这里插入图片描述
为什么 small batch size 会有着更好的表现呢?
还是以 full batch 和 small batch 作对比,使用 full batch size 训练的时候,在参数更新过程中,一旦遇到了 saddle point 或者 local minima 便会使得 gradient 为 0,模型训练也就早早地停了下来;
相较于 full batch size,将训练资料分为一个个 small batch,每一次都是在不同 batch 的训练资料上取得的 Loss 作 gradient descent 的,如果在这个 batch 上遇到了 critical point,那么在下个 batch 上说不定就没有 critical point,这样便能使得小球在 error surface 上滚下去得更远,optimization 做得更好,Loss 也能便得更小。
在这里插入图片描述
那现在再将两者在 testing set 上进行性能比较,发现使用 small batch 比使用 large batch 取得的效果更好一些。
在这里插入图片描述
在 error surface 中会有各种各样的 local minima,有类似平原的 minima,也有类似峡谷的 minima,假设训练过程中出现了 mismatch 现象,在平原上 training loss 和 testing loss 只差一点,而在峡谷中 training loss 和 testing loss 会差很多。
而使用 large batch 训练,会更倾向地遇到峡谷;使用 small batch 训练,会更倾向地遇到平原,所以使用 small batch 性能会更好一点。
在这里插入图片描述
因此,综合各项评判指标来看,使用 small batch 训练,虽然时间更长,但能把 optimization 做好,且泛化性能也比较好。
在这里插入图片描述

2. Gradient descent + Momentum

在物理世界中,小球在 error surface 往下滚的时候,由于惯性的力量,会越过 local minima,冲过这个小丘。
在这里插入图片描述
我们把 momentum 这一概念引入 gradient descent 中,小球每次运动的方向为在此点的梯度负反方向 + 上一次运动的方向。
在这里插入图片描述

在这里插入图片描述

3. 总结

在这里插入图片描述

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

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

相关文章

无桌面Centos7系统安装Cypress@9.0.0并运行

一、安装Cypress 安装前准备 1、安装npm 下载安装包 cd /usr/local mkdir node cd node wget https://npm.taobao.org/mirrors/node/v15.8.0/node-v15.8.0-linux-x64.tar.gz ls -l解压这个包 tar -zxvf node-v15.8.0-linux-x64.tar.gz 你会发现已经有一个node的目录解压…

11、Javaweb_JSPMVCELJSTL三层架构用户列表案例

JSP: 1. 指令 * 作用&#xff1a;用于配置JSP页面&#xff0c;导入资源文件 * 格式&#xff1a; <% 指令名称 属性名1属性值1 属性名2属性值2 ... %> * 分类&#xff1a; 1. page &#xff1a; 配置JSP页面的 * content…

①【Spring】一文了解IOC容器

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 一文掌握IOC一、IOC二、IOC容器的实现BeanFact…

一文掌握fastapi微服务开发

目录 一、概述 1.1 微服务 1.1.1 微服务的优势 1.1.2 微服务的缺点 1.2 为何使用Python开发微服务 1.3 FastAPI概述 二、开发 2.1 安装FastAPI 2.1.1 安装虚拟环境 2.1.2 创建虚拟环境 2.1.3 激活虚拟环境 2.1.4 安装FastAPI 2.2 FastAPI简单使用 2.2.1 查询 2.…

java注解以及如何利用反射获取注解的属性值

一、什么是注解 1.Annotation是从JDK5.0开始引入的新技术 2.Annotation的作用 : &#xff08;1&#xff09;不是程序本身&#xff0c;可以对程序作出解释(这一点和注释(comment)没什么区别)&#xff08;2&#xff09;可以被其他程序(比如:编译器等)读取 3.Annotation的格式…

【每日一题】【LeetCode】【第十一天】杨辉三角

解决之路 题目描述 测试案例&#xff08;部分&#xff09; 第一次 杨辉三角感觉还是挺经典的代码题目&#xff1f;之前大一学C语言好像写过一次。 不过&#xff0c;自己当时就不会写&#xff0c;这次自己先试试能不能想出解决方案。 输入数字是几&#xff0c;那就要输出几…

亚马逊云科技帮助Gemsouls在云上快速实现技术验证与部署

元宇宙热度居高不下&#xff0c;它所创造的虚拟世界进一步拉近了人与人之间的距离&#xff0c;用数字化的形式消除地理与空间上的隔阂。而高度拟真化的虚拟人与AI虚拟社交&#xff0c;是元宇宙落地的重要领域&#xff0c;打造以人工智能驱动的虚拟人社交平台已成为行业大势。 …

DNS 的一些基础知识,以及 DNS 转换域名的过程

DNS(Domain Name System)&#xff0c;主要作用是将域名转成 IP&#xff0c;本文主要讲解了 DNS 的一些基础知识&#xff0c;以及 DNS 转换域名的过程。DNS 是什么dig命令绝大多数网络通信都是基于 TCP/IP 协议&#xff0c;而 TCP/IP 协议的基础是 IP&#xff0c;所以网络中的计…

获取未来时间 一年或N年

需求 展示从本月初开始 一年的时间 或N年的时间 以便用户选择思路 一年12个月 是已知的 从本月到12月可以生成本年的每天数据从1月至上月可以生成所需得到最后一年的数据今年加最后一年的月份可拼接一年时间 所以中间年份是所需年分-1的数组数据中间年份都是1-12月 可以通过年份…

软件的生命周期和测试的生命周期的区分

软件的生命周期测试的生命周期软件测试贯穿于软件的整个生命周期在需求分析阶段测试人员的活测试人员需要站在用户角度分析&#xff1a;软件需求是否合理&#xff1b;站在技术角度分析&#xff1a;技术上是否可行&#xff0c;还有没有优化的空间&#xff1b;站在测试角度分析&a…

VALL-E:微软全新语音合成模型可以在3秒内复制任何人的声音

近日&#xff0c;微软研究人员宣布了一种新的语音合成AI模型 VALL-E&#xff0c;给出3秒样音就可以精确地模拟一个人的声音。一旦它学会了一个特定的声音&#xff0c;VALL-E可以复制说话者的情绪和语气&#xff0c;即使说话者本人从未说过的单词也可以模仿。 论文地址&#xf…

xlCompiler转换为程序的优秀工具

xlCompiler转换为程序的优秀工具 xlCompiler是将oxel文件转换为程序的优秀工具。无需担心删除oxel文件中使用的宏和公式。该工具将您所做的转换为Exe可执行文件&#xff0c;这比分发原始文件时要低得多。最终的文件不需要氧气来执行&#xff0c;您也会有一种在简单的氧气环境中…

D. Friendly Spiders(bfs+筛法)

传送门题意&#xff1a;给你n个蜘蛛&#xff0c;每个蜘蛛有自己的腿数&#xff0c;如果某两个蜘蛛可以直接联系&#xff0c;那么这两个蜘蛛的最大公约数就不为1&#xff0c;否则这两只蜘蛛就不能直接联系。现在给你两个蜘蛛的序号i,j问这两只蜘蛛是否可以直接或者通过其他的蜘蛛…

SDK安全专项评测证书

SDK安全专项行动”是中国信息通信研究院安全研究所大数据应用与安全创新实验室共同发起的&#xff0c;实验室紧跟信息技术发展趋势&#xff0c;依托数据安全、移动安全等领域深厚积累&#xff0c;通过前瞻研究和实践探索&#xff0c;形成了完整的SDK评测方案和指标体系。 SDK产…

【HCIA-openEuler】实验手册—05【openEuler软件管理】

文章目录一、实验介绍1、内容描述2、实验目的二、配置Yum源步骤1&#xff1a;进入yum repo目录步骤2&#xff1a;更改openEuler_x86_64.repo文件步骤3&#xff1a;刷新列出软件列表三、使用RPM命令管理软件1、RPM查询命令步骤1&#xff1a;执行以下命令&#xff0c;通过yum和rp…

华为DHCP实验配置

配置AR1为PC2分配地址 dhcp enable ip pool DHCP_PC2 network 192.168.20.200 mask 24 gateway-list 192.168.20.254 dns-list 192.168.20.100 excluded-ip-address 192.168.20.100 int g0/0/1 ip address 192.168.20.254 24 dhcp select global 配置AR1为PC3分配IP地址 dhcp e…

一个令人赞不绝口的代码 Debug 神器

在编写程序时&#xff0c;无论是对于初学者还是对于专业开发人员&#xff0c;都会花费大量时间来调试或修复源代码错误&#xff0c;也就是 Debug。 这个过程繁琐复杂&#xff0c;包括 Bug 复现和 Bug 定位等环节。如果有了自动化的 Debug 程序&#xff0c;就可以显著提高编程实…

Three.js一学就会系列:05 加载3D模型

系列文章目录 Three.js一学就会系列&#xff1a;01 第一个3D网站 Three.js一学就会系列&#xff1a;02 画线 Three.js一学就会系列&#xff1a;03 炫酷3D划线 Three.js一学就会系列&#xff1a;04 炫酷3D文字 文章目录系列文章目录前言一、核心代码讲解引入插件轨道控制器加载…

ES6 课程概述⑤

文章目录9-1. Fetch Api 概述9-2. 基本使用参数返回值9-3 **Response 对象**9-4 Request 对象9-5 Headers 对象9-6 文件上传10-1 迭代器背景知识JS 中的迭代器可迭代协议 与 for-of 循环可迭代协议for-of 循环展开运算符与可迭代对象生成器 (Generator)set 集合9-1. Fetch Api …

Unity 之 Addressable可寻址系统 -- 代码加载介绍

Unity 之 可寻址系统 -- 代码加载介绍 -- 进阶&#xff08;一&#xff09;一&#xff0c;可寻址系统代码加载1.1 回调形式1.2 异步等待1.3 面板赋值1.4 同步加载二&#xff0c;可寻址系统分标签加载2.1 场景搭建2.2 代码示例2.3 效果展示三&#xff0c;代码加载可寻址的解释概述…