最详细最清晰的epoch、batchsize和iteration概念辨析

参考博文和图片来源 : Epoch vs Batch Size vs Iterations

1 前导知识

1.1 梯度下降和学习率

梯度下降算法是一种用于机器学习的迭代优化算法,用于寻找最佳结果(损失函数曲线的最小值)。

  • 梯度(坡度)是指斜坡的倾斜度或倾斜度。
  • Descent:下降。

该算法是迭代的(iterative),意味着我们需要多次进行多次计算才能得到最优的结果。

在这里插入图片描述

梯度下降法有一个参数叫做学习率(learning rate)

如上图(左所示),一开始成本/损失函数(cost function)上的point下降的较快,说明学习率较大,步长大,随着该point的下降变慢,学习率逐渐减小,步长变慢。

梯度下降算法就是为了找到损失函数的最小值

1.2 为什么需要batchsize/epoch/iteration

当数据太大的时候,我们不能一次把所有的数据传递给计算机。因此我们需要将数据分成更小的大小,并将其一个接一个地交给我们的计算机,并在每一步结束时更新神经网络的权重。

2 Epoch

One Epoch is when an ENTIRE dataset is passed forward and backward through the neural network only ONCE.

由于一个epoch太大,不能一次输入到计算机中,我们将它分成几个较小的批次(batches)。

2.1 为什么训练时需要很多个epoch

由于我们所使用的数据集是有限的,而且梯度下降算法是一个迭代过程,神经网络的权值参数更新也需要多次,所以一个epoch是远远不够的。

在这里插入图片描述

随着epoch次数的增加,神经网络中权值变化的次数增多,曲线从欠拟合最优再到过拟合

2.2 如何设置epoch的合适数量

不同的数据集需要设置的epoch的数量不同,没有标准答案。

3 BatchSize

Total number of training examples present in a single batch. 单个批次中出现的训练样例总数。

注:Batch size批次大小 and number of batches批次数量 are two different things.

batchsize = 8说明一次传入8张图片。

3.1 batchsize的设置技巧

浅谈深度学习中Batch_size的大小对模型训练的影响

一些经验之谈:

  • 一般而言,根据GPU显存,设置为最大,而且一般要求是8的倍数(比如16,32,64),GPU内部的并行计算效率最高。
  • 或者选择一部分数据,设置几个8的倍数的Batch_Size,看看loss的下降情况,再选用效果更好的值。

总结:

  • batch_size设的大一些,收敛得快,也就是需要训练的次数少,准确率上升的也很稳定,但是实际使用起来精度不高;
  • batch_size设的小一些,收敛得慢,可能准确率来回震荡,因此需要把基础学习速率降低一些,但是实际使用起来精度较高。

3.2 batchsize对训练有什么影响

1.训练速度

batch size大小会影响模型的训练速度。 较大的batch size可以更快地处理训练数据,因为在每个epoch中,较大的batch size可以同时处理更多的数据,从而减少了训练时间。相反,较小的batch size需要更多的迭代才能完成一个epoch的训练,因此训练时间更长。但是,较大的batch size也可能导致GPU显存不足,从而导致训练速度下降。

2.训练稳定性

batch size大小还会影响模型的训练稳定性。较小的batch size可以提高模型的训练稳定性,因为在每个epoch中,模型会更新多次,每次更新的权重都会有所不同,这有助于避免局部最优解。 另一方面,较大的batch size可能会导致模型过拟合,因为在每个epoch中,模型只进行一次权重更新,这使得模型更容易陷入局部最优解。

3.内存消耗

batch size大小还会影响内存消耗。较大的batch size需要更多的内存来存储样本和网络权重,因此可能会导致内存不足, 从而影响训练效果。另一方面,较小的batch size需要更少的内存,但也可能会导致训练时间变长。

4.梯度下降

batch size大小还会影响梯度下降。在深度学习中,梯度下降是一种常用的优化算法,用于调整模型的权重。较小的batch size可以使模型更容易收敛,因为每个batch中的样本更接近于独立同分布的分布,使得梯度下降的方向更加一致。另一方面,较大的batch size可能会导致梯度下降方向不一致,从而影响训练效果。

4 Iteration

Iterations is the number of batches needed to complete one epoch. 一个epoch中需要的batch的个数(迭代数)

注:上面提到的一个epoch中的批次数量就是一个epoch中的迭代次数

5 举例分析

一个dataset中有2000张图片,设置batchsize=500,则一个epoch中的iteration = 2000/500 = 4,则一个epoch中跑完一整个dataset需要迭代4个batch。

6 补充(3种梯度下降方法)

批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解

6.1 批量梯度下降(Batch Gradient Descent,BGD)

批量梯度下降法是最原始的形式,它是指在每一次迭代时使用所有样本来进行梯度的更新。

即batchsize=数据集样本数

优点:
(1)一次迭代是对所有样本进行计算,此时利用矩阵进行操作,实现了并行。
(2)由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。 当目标函数为凸函数时,BGD一定能够得到全局最优。
缺点:
(1)当样本数目 m很大时,每迭代一步都需要对所有样本计算,训练过程会很慢。从迭代的次数上来看,BGD迭代的次数相对较少。

6.2 随机梯度下降(Stochastic Gradient Descent,SGD)

随机梯度下降是每次迭代使用一个样本来对参数进行更新。使得训练速度加快。

batchsize = 1

优点:
(1)由于不是在全部训练数据上的损失函数,而是在每轮迭代中,随机优化某一条训练数据上的损失函数,这样每一轮参数的更新速度大大加快。
缺点:
(1)准确度下降。由于即使在目标函数为强凸函数的情况下,SGD仍旧无法做到线性收敛。
(2)可能会收敛到局部最优,由于单个样本并不能代表全体样本的趋势。
(3)不易于并行实现。

6.3 小批量梯度下降(Mini-Batch Gradient Descent, MBGD)

对批量梯度下降以及随机梯度下降的一个折中办法。
其思想是:每次迭代 使用 batch_size 个样本来对参数进行更新。

batchsize = 设定的batchsize

优点:
(1)通过矩阵运算,每次在一个batch上优化神经网络参数并不会比单个数据慢太多。
(2)每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。(比如上例中的30W,设置batch_size=100时,需要迭代3000次,远小于SGD的30W次)
(3)可实现并行化。
缺点:
(1)batch_size的不当选择可能会带来一些问题。

  • 35
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Epoch(轮次)是指将训练集中的所有样本全部使用一遍的训练过程。在深度学习中,训练集通常会被分成多个批次(Batch),每个批次作为一个小的数据集进行训练。当所有的批次都训练完成后,就完成了一个Epoch的训练。Epoch的数量通常是一个超参数,需要在训练前手动设置。 Batch(批次)是指在训练过程中,将训练集分成的若干个小批次(mini-batch),每个小批次都会经过一次前向传播和反向传播的过程。一个Batch中的数据量可以根据实际情况进行设置,通常是根据计算资源和模型性能来确定。 Iteration(迭代)是指对一个小的数据集(Batch)进行一次训练的过程。在深度学习中,通常将一个Batch中的数据分为若干个小批次(mini-batch),每个小批次都会经过一次前向传播和反向传播的过程,这个过程就是一次迭代(Iteration)。通常,一个Epoch包含多个Iteration。 所以,Epoch是整个数据集上的一次训练,Batch是对数据集进行分批处理,而Iteration是对一个小批次数据进行一次训练。它们三者是深度学习中训练模型时的基本单位,每个单位都有自己特定的含义和作用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [BatchEpochIteration](https://blog.csdn.net/VIAww/article/details/129911981)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值