深度学习中,batch大小对模型的效果有影响吗?

news/2024/11/27 1:35:41/

内容来自李宏毅-2021机器学习

##先说结论:同一个模型,大batch结果往往会较差。

在这里插入图片描述
上图中,横轴代表batch size,从左到右越来越大;纵轴代表准确率acc,越往上正确率越来越高。

在观察validation上的结果时,会发现随着batch size增加,acc结果越来越差。
但这个现象并不是overfitting,因为在training上的acc结果也是随着batch size增加而变差。

结论:同一个模型,大的batch size往往会带来比较差的结果。

由于使用的是同一个模型,可以排除model bias的问题,而是optimization的问题。使用大的batch size时,optimization可能会有问题,小的batch size的结果可能是比较好的。

##为什么小batch有更好的表现,有噪声的参数更新对训练更有帮助?
一种解释:
在这里插入图片描述
如果使用的是full match(上图左1),在更新参数时会沿着一个Loss函数来更新参数。可能会陷入一个局部极小值点或者是鞍部点,梯度变为0,不会再进行参数的更新。
但是如果使用small batch(上如左2),训练时每个batch会根据自己的Loss函数来算梯度,不同的batch间的Loss函数是有差异的。第一个batch用L1算梯度,第二个batch用L2算梯度。假如用L1在某一点算出来梯度为0卡住了,但在L2的这一点算出来梯度很可能并不是0,所以还是有办法让梯度不为0,进而可以继续训练,让Loss变小
所以有噪声的参数更新对训练更有帮助。

小batch 和大batch有各自的特点,根据需要来选择合适的参数。
在这里插入图片描述


http://www.ppmy.cn/news/74997.html

相关文章

由浅入深Netty粘包与半包解决方案

目录 1 粘包现象2 半包现象3 现象分析4 解决方案4.1 方法1:短链接4.2:方法2:固定长度4.3 方法3:固定分隔符4.4 方法4:预设长度 1 粘包现象 服务端代码 public class HelloWorldServer {static final Logger log Logg…

C++概况

C概况 目前业界还没有可以替换C的语言出现。 CPP的历史 C编程语言的历史可以追溯到1979,Bjarne Stroustrup创立了带类的C.顾名思义,这是C语言的超集;在1983年,语言的名字真正的编程了C; C在最开始可以称为C语言的增强版&#x…

KubeSphere通过Ceph CSI对接持久化存储Ceph集群

KubeSphere通过Ceph CSI对接持久化存储Ceph集群 1. Ceph集群设置2. 创建Kubernetes的存储卷类型和csi适配中间层资源3. kk工具中加入ceph-csi-rbd插件配置可以选择Ceph RBD或Ceph CSI作为Ceph服务器的底层存储插件。Ceph RBD是Kubernetes上的一个in-tree存储插件,Ceph容器存储…

C#FileStream类的使用

文件读写流使用 FileStream 类来表示,FileStream 类主要用于文件的读写,不仅能读写普通的文本文件,还可以读取图像文件、声音文件等不同格式的文件。区别于File类的是它对文件可进行分步读写,减小内存压力,缺点是我们需…

pymongo给文档里的某个列表添加元素并去重以及操作符的表格

文章目录 问题描述知识点收集mongo的操作符:匹配符:选择符:函数操作:更新符:聚集符:字段操作符: 问题描述 给parts列表新增字典 新增前: 新增后: 代码: mongo_client get_mongo_client()col mongo_cli…

在springmvc框架中视图解析器都有哪些?

在Spring MVC框架中,常用的视图解析器有以下几种: 1. InternalResourceViewResolver: 这是Spring MVC中默认的视图解析器,用于解析JSP页面或者HTML页面。它会将视图名称解析为JSP文件所在的路径,并且支持JSTL标签库和EL表达式。 …

上交清华搞事情!发起最全学科大模型中文知识及推理评测!GPT-4 竟然血洗所有国产模型

夕小瑶科技说 原创 作者 | 小戏,Python 从 OpenAI 的 ChatGPT、Meta 的 LLaMA、Anthropic 的 Claude 到复旦的 Moss、清华的 ChatGlm、MiniMax 的 Glow,国内的国外的大模型百花齐放层出不穷。那么,抛出一个相信大家都会关心的问题&#xff…

Python 条件判断与循环

Python 中的条件判断和循环是编写程序时经常使用的控制结构。条件判断用于根据不同的条件执行不同的代码块,而循环则用于重复执行一段代码。 ### 条件判断 在 Python 中,条件判断使用 if、elif(可选)和 else(可选&am…