batch size
定义
Batch Size(批量大小)指的是在一次梯度更新中使用的样本数量。换句话说,它是每次从训练数据集中抽取的子集大小,用于计算一个梯度并更新模型参数。
工作原理
- 深度学习模型通常使用随机梯度下降(SGD)或其变体(如Adam、RMSprop等)来优化模型参数。
- 在标准的梯度下降中,模型会使用整个训练数据集来计算梯度并更新参数(即Batch Size等于训练集大小)。这种方法称为全批量梯度下降(Full-Batch Gradient Descent)。
- 然而,当数据集较大时,全批量梯度下降会导致计算效率低下。因此,实际应用中通常采用小批量梯度下降(Mini-Batch Gradient Descent),即每次只用一部分数据进行梯度计算和参数更新。
Batch Size 的分类
- Batch Size = 1:每次用一个样本进行梯度计算,称为随机梯度下降(Stochastic Gradient Descent, SGD)。优点是更新频繁,收敛速度快,但梯度估计噪声较大,可能导致训练不稳定。
- 1 < Batch Size < N(N为训练集大小):这是最常见的设置,称为小批量梯度下降(Mini-Batch Gradient Descent)。它在计算效率和梯度稳定性之间取得平衡。
- Batch Size = N:使用整个训练集计算梯度,称为全批量梯度下降(Full-Batch Gradient Descent)。优点是梯度估计准确,但计算成本高,且不适用于大数据集。
Batch Size 的影响
-
训练速度:
- 较大的Batch Size可以充分利用GPU并行计算能力,从而加速训练。
- 较小的Batch Size则需要更多的迭代次数才能完成一轮训练,总体训练时间可能更长。
-
内存消耗:
- Batch Size越大,显存占用越高。如果显存不足,可能会导致程序崩溃。
-
收敛性:
- 较小的Batch Size引入了更多的噪声,有助于跳出局部最优解,但在接近最优解时可能收敛较慢。
- 较大的Batch Size梯度估计更稳定,但可能更容易陷入局部最优解。
-
泛化能力:
- 较小的Batch Size通常具有更好的泛化能力,因为噪声有助于防止过拟合。
- 较大的Batch Size可能导致模型过于专注于训练集,泛化能力较差。
epoch
定义
Epoch(轮次)指的是模型在整个训练数据集上完成一次完整的前向传播和反向传播的过程。换句话说,一个Epoch意味着模型已经“看过”了训练数据集中的所有样本一次。
工作原理
- 在训练过程中,数据集通常会被分成多个小批量(Batch),每个Batch都会被用来更新模型参数。
- 当所有Batch都用完一次后,就完成了一个Epoch。
- 为了充分训练模型,通常需要运行多个Epoch。
举例说明
假设:
- 训练数据集有1000个样本。
- Batch Size = 100。
那么:
- 每个Epoch需要10次迭代(Iteration)才能遍历整个数据集(1000 ÷ 100 = 10)。
- 如果设置5个Epoch,则模型总共会遍历整个数据集5次,共计50次迭代。
Epoch 的影响
-
训练时间:
- 更多的Epoch意味着模型会多次遍历数据集,训练时间会增加。
-
模型性能:
- 过少的Epoch可能导致模型欠拟合(Underfitting),即模型没有充分学习到数据的模式。
- 过多的Epoch可能导致模型过拟合(Overfitting),即模型过度学习了训练数据的细节,泛化能力下降。
-
早停机制(Early Stopping):
- 为了避免过拟合,常用的方法是设置早停机制。例如,当验证集上的性能不再提升时,提前终止训练。
Batch Size 和 Epoch 的关系
Batch Size 决定了每次更新参数时使用的样本数量,Epoch 决定了模型在整个数据集上训练的轮次。
两者共同决定了训练过程的总迭代次数(Iterations)。公式如下: