【深度学习基础】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。
  • 几点说明
  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)。线性神经元在均方误差代价函数的错误面是一个抛物面,横截面是椭圆。对于多层神经元,非线性网络,在局部依然近似是抛物面。使用在线学习,每次修正方向以各自样本的梯度方向修正,难以达到收敛。如下图所示:
【深度学习基础】Epoch, Batch, Iteration这三个概念的区别与联系_第1张图片

  • 在合理范围内,增大 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

你可能感兴趣的:(深度学习,深度学习,epoch,batch,iteration,梯度下降与随机梯度下降)