【深度学习基础】Epoch, Batch, Iteration这三个概念的区别与联系
文章目录
- 1. Epoch, Batch, Iteration说明
- 2. 为什么要多个epoch
- 3. 为什么要分多个batch
- 4. Rprop与RMSProp
1. Epoch, Batch, Iteration说明
相关概念的区别与联系如下表所示:
名词 | 解释 |
---|---|
Epoch |
所有训练样本在神经网络中都进行了一次正向传播和一次反向传播。也就是1个epoch等于使用训练集中的全部样本训练一次。
|
Batch | 将整个训练样本分成若干个Batch。 |
Iteration |
1个iteration等于使用batch size个样本训练一次。一个迭代=一个正向通过+一个反向通过。训练一个Batch就是一次Iteration
|
Batch_Size |
每批样本的大小,即每次训练在训练集中取batchsize个样本进行训练 。
|
- 举个例子
假设训练集有1000个样本,batchsize=10,那么训练完整个样本集需要:
- 100次iteration
- 100个Batch
- 1次epoch。
- 几点说明
batchsize最大是样本总数N,此时就是
Full batch learning
;最小是1,即每次只训练一个样本,这就是在线学习(Online Learning)
。当我们分批学习时,每次使用过全部训练数据(完成一次Forword运算以及一次BP运算),即成为完成了一次epoch。
如果数据集比较小,我们就采用全数据集。
全数据集确定的方向能够更好的代表样本总体
,从而更准确的朝向极值所在的方向。对于大的数据集,我们不能使用全批次,因为会得到更差的结果。
2. 为什么要多个epoch
因为将所有数据迭代训练一次是不够的, 需要反复多次才能拟合、收敛
。随着epoch 数量的增加, 权重更新迭代的次数增多, 曲线从最开始的不拟合状态, 进入优化拟合状态, 最终进入过拟合。
3. 为什么要分多个batch
先来讲讲梯度下降与随机梯度下降。
梯度下降法
(gradient descent)是机器学习中经典的优化算法之一,用于寻求一个曲线的最小值。所谓"梯度",即一条曲线的坡度或倾斜率,"下降"指代下降递减的过程。- 在深度学习领域中,常用
随机梯度下降算法
(Stochastic Gradient Descent, SGD)训练深层结构,它有一个好处就是并不需要遍历全部的样本,当数据量非常大时十分有效。
Batch 的选择,决定的是下降的方向
。
- 极端一:batch_size为全数据集(Full Batch Learning):
好处:
1.由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。
2.由于不同权重的梯度值差别巨大,因此选择一个全局的学习率很困难。Full Batch Learning可以使用Rprop只基于梯度符号并且针对性单独更新各权值。
坏处:
1.随着数据集的海量增长和内存限制
,一次性载入所有的数据进来变得越来越不可行。
2.以Rprop的方式迭代,会由于各个Batch之间的采样差异性,各次梯度修正值相互抵消,无法修正。这才有了后来 RMSProp 的妥协方案。
- 极端二:Batch_size=1:
Batch_size=1,也就是每次只训练一个样本。这就是在线学习(Online Learning)。线性神经元在均方误差代价函数的错误面是一个抛物面,横截面是椭圆。对于多层神经元,非线性网络,在局部依然近似是抛物面。使用在线学习,每次修正方向以各自样本的梯度方向修正,难以达到收敛
。如下图所示:
- 在合理范围内,增大 Batch_Size 有何好处?
内存利用率
提高了,大矩阵乘法的并行化效率提高。- 跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的
处理速度
进一步加快。- 在一定范围内,一般来说 Batch_Size 越大,其确定的
下降方向越准
,引起训练震荡越小。
- 盲目增大 Batch_Size 有何坏处?
- 内存利用率提高了,但是
内存容量
可能撑不住了。- 跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对
参数的修正也就显得更加缓慢
。- Batch_Size增大到一定程度,其确定的
下降方向已经基本不再变化
。
4. Rprop与RMSProp
Rprop与RMSProp都是一种权值更新算法
,类似于SGD算法,其中,RMSProp是RProp算法的改良版。
- Rprop
- 首先为各权重变化赋一个初始值,设定权重变化加速因子与减速因子。
- 在网络前馈迭代中当连续误差梯度符号不变时,采用加速策略,加快训练速度;当连续误差梯度符号变化时,采用减速策略,以期稳定收敛。
- 网络结合当前误差梯度符号与变化步长实现BP,同时,为了避免网络学习发生振荡或下溢,算法要求设定权重变化的上下限。
不同权值参数的梯度的数量级可能相差很大,因此很难找到一个全局的学习步长。靠参数梯度的符号,动态的调节学习步长。适用于full-batch learning,不适用于mini-batch learning
- RMSProp:
rmsprop算法不再孤立地更新学习步长,而是联系之前的每一次梯度变化情况,具体如下。
- rmsprop算法给每一个权值一个变量MeanSquare(w,t)用来记录第t次更新步长时前t次的梯度平方的平均值。
- 然后再用第t次的梯度除上前t次的梯度的平方的平均值,得到学习步长的更新比例。
- 根据此比例去得到新的学习步长。如果当前得到的梯度为负,那学习步长就会减小一点点;如果当前得到的梯度为正,那学习步长就会增大一点点。
这样看来,rmsprop算法步长的更新更加缓和
。这些算法并不能完全解决局部最小值问题,只是使得参数收敛的速度更快
。针对是否能收敛到全局最优解,还与模型的初始化有关。
参考:https://blog.csdn.net/qq280929090/article/details/79585887?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-3-79585887.pc_agg_new_rank&utm_term=%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E6%9C%89batch&spm=1000.2123.3001.4430
【深度学习基础】Epoch, Batch, Iteration这三个概念的区别与联系相关推荐
- 【CV】深度学习中Epoch, Batch, Iteration的含义
Epoch 使用训练集的全部数据样本进行一次训练,称为一次epoch,即所有训练集的样本都在神经网络中进行了一次正向传播和一次反向传播 神经网络中需要有多次epoch,每次epoch中会进行一次更新权 ...
- 深度学习之 epoch batch iteration
知识点 无论是使用yolo3,4 都是一样的过程,例如使用yolo3 去训练的时候,使用参数tran来训练,darknet的好处是可以使用opencv直接来进行模型推理,但是在训练过程中,我们经常会遇 ...
- 深度学习基础(五):循环神经网络概念、结构及原理实现
本文的概念和结构部分摘自循环神经网络惊人的有效性 循环神经网络 序列 普通神经网络和卷积神经网络的一个显而易见的局限就是他们的API都过于限制:他们接收一个固定尺寸的向量作为输入(比如一张图像),并且 ...
- 深度学习基础入门(一):基本概念和术语解读
本文旨在解释一些深度学习中的基本概念,并通过一些实践中的例子帮助理解,可能个人解读有误,还望指正.本文提纲参照参考文献[2]进行,对其简练的内容加以了丰富和扩展,确保零基础的新手也可以有比较清晰的认识 ...
- 第三章_深度学习基础
文章目录 第三章 深度学习基础 3.1 基本概念 3.1.1 神经网络组成? 3.1.2神经网络有哪些常用模型结构? 3.1.3如何选择深度学习开发平台? 3.1.4为什么使用深层表示? 3.1.5为 ...
- 《机器学习系列教程》第三章 深度学习基础
@[第三章 深度学习基础] 第三章 深度学习基础 3.1 基本概念 3.1.1 神经网络组成? 为了描述神经网络,我们先从最简单的神经网络说起. 感知机 简单的感知机如下图所示: [外链图片转存失败( ...
- 深度学习中epoch,batch的概念--笔记
深度学习中epoch,batch的概念 batch.epoch和iteration是深度学习中几个常见的超参数. (1) batch_ size: 每批数据量的大小.DL通常用SGD的优化算法进行训练 ...
- 【完结】有三AI阿里云的深度学习基础课程暂时完结,欢迎扩散学习
2021年3月份有三AI与阿里天池联合推出了深度学习系列课程, 课程内容包括人工智能与深度学习发展背景,深度学习典型应用,卷积神经网络,循环神经网络,生成对抗网络,深度学习开源框架等内容,目前已经基本 ...
- 深度学习基础 - 概率的三个公理
深度学习基础 - 概率的三个公理 flyfish 对于公理的内容 ,不敢有一丝一毫的更改.改公理,再建立另一套体系那都是大神级别的人物. 曾经"概率"的定义是不清晰的,拉普拉斯的古 ...
- 独家思维导图!让你秒懂李宏毅2020深度学习(三)——深度学习基础(神经网络和反向传播部分)
独家思维导图!让你秒懂李宏毅2020深度学习(三)--深度学习基础(神经网络和反向传播部分) 长文预警!!!前面两篇文章主要介绍了李宏毅视频中的机器学习部分,从这篇文章开始,我将介绍李宏毅视频中的深度 ...
最新文章
- 关于bhuman文件结构
- [云炬创业基础笔记]第二章创业者测试1
- iOS高仿城觅应用客户端项目(开发思路和代码)
- 计算机硬件:内存常识知多少?内存知识盲区详解
- fragment+viewpager+tablayou实现滑动切换页面
- 解决loaded more than 1 DLL from .libs和No metadata found in lib\site-packages两个错误
- linux 移动硬盘 mnt,linux 移动硬盘 mnt
- Arthas - Java 线上问题定位处理的终极利器
- java线程安全定义了什么单例_Java中四种线程安全的单例模式实现方式
- Lowest Common Multiple Plus
- PostgreSQL ALTER TABLE 命令
- dcx矩阵 - 打表 - 找规律
- 263企业邮箱imap服务器,263企业邮箱支持IMAP邮箱搬家功能
- 若依Vue分离版本 RuoYi-Vue管理系统部署
- 2021年全球AFM探针收入大约230.8百万美元,预计2028年达到374.9百万美元
- 美团商品平台化之路—关于架构原则的思考
- ams1117-3.3v三端稳压芯片低压差线性稳压器
- ajax timeout 内存溢出,setInterval 和 setTimeout会产生内存溢出
- 邻域、邻接、通路、连通、连通集、区域概念区分​​​​​​​
- JSP空间网站上传后发生404解决思路
热门文章
- 云服务器1M带宽表示什么意思,购买服务器时如何选择服务器带宽?
- CDN是什么?以及CDN的原理
- mysql 约束 分类,MySQL约束类型及举例介绍
- 关于王羲之的《兰亭集序》
- 2022年上半年中国企业员工主动离职率大幅下降至6%;三成以上中国企业大部分高管岗位没有后备人选 | 美通社头条...
- python爬虫抓取链家租房数据
- Python大作业-爬取成都链家租房信息(大作业)源码
- android 输入法字典_Android输入法开发
- 基于JAVA实现的图形化页面置换算法
- linux各个版本简介 (未完待续)