【深度学习基础】Epoch, Batch, Iteration这三个概念的区别与联系

1. Epoch, Batch, Iteration说明

相关概念的区别与联系如下表所示:

名词解释
Epoch所有训练样本在神经网络中都进行了一次正向传播和一次反向传播。也就是1个epoch等于使用训练集中的全部样本训练一次。
Batch将整个训练样本分成若干个Batch。
Iteration1个iteration等于使用batch size个样本训练一次。一个迭代=一个正向通过+一个反向通过。训练一个Batch就是一次Iteration
Batch_Size每批样本的大小,即每次训练在训练集中取batchsize个样本进行训练
  • 举个例子

假设训练集有1000个样本,batchsize=10,那么训练完整个样本集需要:

  • 100次iteration
  • 100个Batch
  • 1次epoch。
  • 几点说明
  1. batchsize最大是样本总数N,此时就是Full batch learning;最小是1,即每次只训练一个样本,这就是在线学习(Online Learning)

  2. 当我们分批学习时,每次使用过全部训练数据(完成一次Forword运算以及一次BP运算),即成为完成了一次epoch。

  3. 如果数据集比较小,我们就采用全数据集。全数据集确定的方向能够更好的代表样本总体,从而更准确的朝向极值所在的方向。对于大的数据集,我们不能使用全批次,因为会得到更差的结果。

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算法的改良版。

  1. Rprop
  1. 首先为各权重变化赋一个初始值,设定权重变化加速因子与减速因子。
  2. 在网络前馈迭代中当连续误差梯度符号不变时,采用加速策略,加快训练速度;当连续误差梯度符号变化时,采用减速策略,以期稳定收敛。
  3. 网络结合当前误差梯度符号与变化步长实现BP,同时,为了避免网络学习发生振荡或下溢,算法要求设定权重变化的上下限。

不同权值参数的梯度的数量级可能相差很大,因此很难找到一个全局的学习步长。靠参数梯度的符号,动态的调节学习步长。适用于full-batch learning,不适用于mini-batch learning

  1. RMSProp:

rmsprop算法不再孤立地更新学习步长,而是联系之前的每一次梯度变化情况,具体如下。

  1. rmsprop算法给每一个权值一个变量MeanSquare(w,t)用来记录第t次更新步长时前t次的梯度平方的平均值。
  2. 然后再用第t次的梯度除上前t次的梯度的平方的平均值,得到学习步长的更新比例。
  3. 根据此比例去得到新的学习步长。如果当前得到的梯度为负,那学习步长就会减小一点点;如果当前得到的梯度为正,那学习步长就会增大一点点。

这样看来,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

  • 17
    点赞
  • 145
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Bootstrap iteration是指使用Bootstrap框架进行迭代开发的过程。Bootstrap提供了一套丰富的CSS和JavaScript组件,可以帮助开发人员快速构建响应式的网页和应用程序。通过使用Bootstrap的迭代开发方法,开发人员可以更加高效地创建和修改页面布局、样式和交互效果。 在Bootstrap中,迭代开发通常包括以下步骤: 1. 引入Bootstrap:在HTML文件中引入Bootstrap的CSS和JavaScript文件,可以通过CDN链接或下载本地文件的方式引入。 2. 使用Bootstrap的网格系统:Bootstrap的网格系统是其最重要的特性之一,可以帮助开发人员创建响应式的布局。通过将页面划分为12个列,开发人员可以使用预定义的CSS类将内容放置在不同的列中,以适应不同的屏幕尺寸。 3. 使用Bootstrap的组件:Bootstrap提供了许多预定义的组件,如导航栏、按钮、表单、模态框等。开发人员可以使用这些组件来快速构建页面的各种功能和交互效果。 4. 自定义样式:Bootstrap提供了一套默认的样式,但开发人员可以根据需要进行自定义。可以通过覆盖默认的CSS类或添加自定义的CSS类来修改组件的外观和行为。 5. 响应式设计:Bootstrap支持响应式设计,可以根据不同的屏幕尺寸自动调整页面布局和样式。开发人员可以使用Bootstrap提供的CSS类来控制元素在不同屏幕尺寸下的显示和隐藏。 通过使用Bootstrap进行迭代开发,开发人员可以快速构建出具有一致性和响应式设计的网页和应用程序。同时,Bootstrap还提供了丰富的文档和示例,方便开发人员学习和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非晚非晚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值