【Batch_size 与 梯度 之间的关系】

news2024/12/24 2:16:00

chatGPT 回答

梯度更新与批大小(batch size)之间有密切的关系。批大小是指在训练过程中一次迭代所使用的样本数量。

在深度学习中,梯度下降是一种常用的优化算法,用于更新模型参数以最小化损失函数。梯度是损失函数对于模型参数的偏导数,它表示了参数变化对于损失函数的影响方向和程度。在每一次梯度更新中,模型的参数会根据梯度的信息进行调整。

批大小对梯度更新有以下影响:

计算效率:较大的批大小可以利用并行计算的优势,提高计算效率。通过在一个批次中同时计算多个样本的梯度,可以减少梯度计算的总时间。这对于大型数据集和复杂模型特别有用。

梯度估计的准确性:较小的批大小可以提供对梯度的更准确的估计。当批大小较小时,每个批次中的样本更具代表性,更能够反映整个数据集的分布。这有助于更准确地估计梯度,避免局部最优和过拟合。

学习速度和收敛性:较大的批大小可能导致更快的学习速度,但可能陷入较差的局部最优。较小的批大小可能导致更慢的学习速度,但在某些情况下可能有助于更好的收敛性和泛化能力。

需要注意的是,选择合适的批大小是一个权衡问题,取决于数据集的规模、模型的复杂性、计算资源的可用性以及特定任务的需求。通常,研究人员和从业者会通过实验和调整来确定最佳的批大小。常见的批大小取值范围是几十到几百个样本。

知乎链接: 深度学习(1)----Batch_size 对模型训练的影响

总结

batch_size是有一个阙值的,一旦超过这个阙值,模型性能就会退化。通俗解释一下,大的batch_size本质上是对训练数据更优的一种选择,但是同时也会限制模型的探索能力模型训练的时候极易陷入这种很尖的极小值很难跳脱出来,但是相对小一些的batch_size就很容易能检索到一个非常好的极小值点

原文阐述

如果要探究batch_size对模型训练的影响,首先要了解一下深度学习的三种梯度下降框架:

  • BGD Batch gradient descent 全量梯度下降
  • SGD Stochastic gradient descent 随机梯度下降
  • MBGD Mini-batch gradient descent 小批量梯度下降
1. BGD

全量梯度下降BGD是最原始的梯度下降算法,每次都使用全部的训练集样本来更新模型参数,公式如下:
在这里插入图片描述
求得loss之后,对所有的参数进行更新:
在这里插入图片描述
如下格式:
在这里插入图片描述
取全量的数据进行梯度更新的方式,每次参数更新都会超着正确的方向进行,对于凸函数来说,可以达到全局最优解,对于非凸函数来说,也可以达到局部最优解。缺点显而易见,全量更新比较缓慢,如果数据集很大,loss的存储和最后全量loss进行的梯度更新回消耗大量的内存。

2. SGD

随机梯度下降SGD每次都会随机选择一个样本梯度更新:
在这里插入图片描述
优点是对于非凸函数来说,可能会从当前的局部最小值中跳脱出来,找到更好的极小值点。但是最大的问题是每次更新可能不会按照正确的方向进行,模型训练非常的震荡。
在这里插入图片描述
并且实验表明,SGD甚至可能根本不会收敛
在这里插入图片描述

3. MBGD

小批量梯度下降法 mini-batch gradient descent,其实就是综合了BGD和SGD,在更新速度和更新次数之间找到一个平衡,每次更新从训练集中随机选择m个样本进行学习:
在这里插入图片描述
这就是现在一直使用的方法,小批量梯度下降降低了收敛的波动性,即降低了参数更新的方差,更新更加的平缓稳定,并且batch数据可以并行化计算,相当于兼顾了速度和效果。

我们要探究batch_size对模型的影响,从参数更新的公式可以看出,模型性能受学习率的影响是最大的,其次是batch_size的大小。可以归纳的一点是,比较大的batch_size进行梯度更新模型训练会更加平滑,最后模型也相对于小batch_size有更优秀的模型性能
在这里插入图片描述

那么是不是batch_size越大越好呢?

Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour
https://arxiv.org/pdf/1706.02677
在这里插入图片描述

增加batch_size是有利于收敛的稳定性,但是当batch_size特别大的时候,模型的性能会急剧下降,为什么?这其实很反直觉,因为BGD就告诉我们了,batch_size越大,梯度更新的方向也就越准确,性能肯定会提高。

On large-batch training for deep learning: Generalization gap and sharp minima
https://openreview.net/pdf?id=H1oyRlYgg

论文发现,用很大的batch_size训练模型,模型训练和测试会收敛到一个很尖的极小值,相反小的Batch却能够使模型收敛在一个较为平稳的极小值。即大Batch方法训练时候更容易收敛到sharp minima(尖锐极小值),而小Batch的方法则更容易收敛到flat minima(平滑极小值),并且大 Batch 方法不容易从这些 sharp minima (尖锐极小值) 的 basins 中出来。

在这里插入图片描述
在这里插入图片描述

为什么LB(Large batch size)为何不如SB(Small batch size)的原因猜测:
  • LB过度拟合模型
  • LB更容易陷入鞍点
  • LB缺少SB的随机探索性,更依赖于初始值,容易陷入初始点周围的最小值,而SB可以探索到离初始点更远的最小值
  • LB和SB收敛到具有不同泛化特性的最小化点

因此,batch_size是有一个阙值的,一旦超过这个阙值,模型性能就会退化。通俗解释一下,大的batch_size本质上是对训练数据更优的一种选择,但是同时也会限制模型的探索能力模型训练的时候极易陷入这种很尖的极小值很难跳脱出来,但是相对小一些的batch_size就很容易能检索到一个非常好的极小值点

再继续类比一下,如果要兼顾事业和家庭,就相当于事业、家庭的大量相关数据进行模型训练,让你自己能够更好的拟合这些数据,但是因为数据太多,要尽量拟合这些数据就会让你更倾向于跳到一个比较舒服的局部最优解里面出不来;但是如果你刚开始只是要考虑事业,你可以不断的进行选择找到比较多的局部最优解,因为跳脱出每一个最优解的代价都不会很大,因为batch数据比较少,loss比较小,带来的阻力不会很大

当然,作者也提出了解决方案:利用SB先训练一定的轮数,让模型远离初始点附近的sharpness点,然后再换成LB接着训练,可以收敛至sharpness较小的点,并且可以提升测试精度。

回到现实,在真实的场景中实际上还是batch_size越大越好,毕竟论文做实验验证使用的batch_size都是几十K的数量级,在实际场景中因为显存的限制,batch_size根本不会达到这么大

还有一点特别在实际应用中,如果训练样本越不均衡,batch_size越大对分类的结果影响也越大

END

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

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

相关文章

Gradio Flagging模块解析与实践

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

基于html+css的图展示135

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

大数据大作业(课程设计)

题目:信息爬取字数统计及可视化 内容及要求: 配置Hadoop平台;利用爬虫技术爬取任一门户网站新闻栏目一定时间段内的新闻信息,保存为一个或多个文件并上传到Hadoop平台以本人学号命名的文件夹下;利用MapReduce框架编程完…

CSS3-显示模式

显示模式 1 块级显示 2 行内显示 3 行内块显示 4 元素显示模式转换 5 拓展 1 块级显示 属性:display:block 显示特点: 1 独占一行(一行只能显示一个) 2 宽度默认是父元素的宽度,高度默认由内容撑开 3 可以设置宽高 代表…

Cortext-M3系统:异常系统(5)

1、使用中断 在CM3中,NVIC为我们搞定了使用中断时的很多例行任务,如优先级检查、入栈/出栈、取向量等。不过在NVIC能行使职能之前,还需要我们做好如下的初始化工作:建立堆栈、建立向量表、分配各中断的优先级、使能中断。 1.1 建…

node笔记_读取目录的文件

文章目录 ⭐前言⭐fs.readdirSync💖 读取目录 不加withFileTypes💖 读取目录 加withFileTypes💖 读取目录时 判断元素文件还是目录 ⭐结束 ⭐前言 大家好,我是yma16,本文分享关于node读取目录文件 往期文章 node_wind…

【java】Jconsole 开启远程连接遇到的一些坑

文章目录 背景一、JMX二、配置远程连接2.1、Java 程序启动2.2、tomcat 启动2.3、无法远程问题排查2.4、解决方案 三、关闭 tomcat 报错3.1、问题分析3.2、问题解决 总结 背景 最近在学习 JVM,其中涉及到性能、内存等指标分析需要使用工具分享,Java 提供…

dvwa靶场通关(六)

第六关:Insecure CAPTCHA(不安全的验证码) 不安全的验证码?不是这个意思,而是指验证码验证可以被绕过。怎么绕?一般都是验证码的验证和最终修改的验证分离,导致了中间过程(验证码的…

io.netty学习(八)零拷贝原理

目录 零拷贝 传统I/O操作存在的性能问题 零拷贝技术原理 虚拟内存 mmap/write 方式 sendfile 方式 带有 scatter/gather 的 sendfile方式 splice 方式 总结 io.netty学习使用汇总 零拷贝 零拷贝(Zero-Copy)是一种 I/O 操作优化技术&#xff0c…

总结906

学习目标: 月目标:6月(线性代数强化9讲,背诵15篇短文,考研核心词过三遍) 周目标:线性代数强化3讲,英语背3篇文章并回诵,检测 每日规划 今日已做: 1.回环背诵…

chatgpt赋能python:Python捕捉按键:探索基础和应用

Python捕捉按键:探索基础和应用 Python作为高级编程语言,可以用于各种任务,例如数据分析、机器学习、图形用户界面等等。其中,捕捉用户键盘输入是一个常见的任务,它可以用于实现简单的游戏、命令行应用和用户交互&…

Redis持久化说明及其单台Linux服务器搭建Redis集群架构

一.Redis持久化方式 1.1 RDB快照 说明:RDB快照主要以二进制文件的形式进行存储数据,主要以文件名dump.rdb进行存储,主要设置redis.conf里面设置’save 60 1000’命令可以开启, 表示在60秒内操作1000次进行一次备份数据。在客户端…

《网络安全0-100》网络安全工具

网络安全工具 抓包工具 抓包工具是网络安全领域中常用的一种工具,用于捕获和分析网络数据包,帮助用户了解网络流量、发现网络攻击和漏洞等问题。以下是几个常用的抓包工具: Wireshark:Wireshark是一种开放源代码的网络协议分析工…

软考A计划-系统集成项目管理工程师-信息化知识(五)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

Unity核心6——Animation

一、动画窗口 ​ 通过 Window --> Animation --> Animation 打开 Animation 窗口 ​ Animation窗口主要用于在 Unity 内部创建和修改动画,所有在场景中的对象都可以通过 Animation 窗口为其制作动画 ​ 原理: ​ 制作动画时:记录在…

chatgpt赋能python:Python提供的68个内置函数:一个全面的指南

Python提供的68个内置函数:一个全面的指南 Python是一种强大的编程语言,具有出色的生态系统和强大的功能。它提供了许多内置函数,这些函数可以使你的编程任务变得更加容易和高效。本篇文章将介绍Python提供的68个内置函数,帮助你…

chatgpt赋能python:Python排版快捷键:提高效率的必备技能

Python排版快捷键:提高效率的必备技能 随着Python编程语言的广泛应用,作为开发者,我们不仅需要注重代码质量,还需要注重代码的可读性。在编写Python代码时,排版也是一项重要的任务。好的排版不仅使代码更易于理解&…

k8s日志收集组件 Grafana loki --- 理论篇

当我们在k8s上运行程序时,习惯的会使用ELK来收集和查询程序运行日志。今天我们介绍一款新的专为日志收集而生的神器:Grafana loki。Grafana Loki 是一组组件,可以组合成一个功能齐全的日志堆栈。 与其他日志记录系统不同,Loki 仅…

VUE 2X 数据代理 ④

目录 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持✨ V u e j s Vuejs Vuejs数据代理 什么是数据代理❓ 代理底层~ D e f i n e P r o p e r y DefinePropery DefinePropery V u e Vue Vue数据代理原理理解总结 文章有误…

Xubuntu22.04之便签工具(一百八十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…