batch_size:
定义:batch_size 指的是每个批次(batch)中用于训练或验证的样本数量。
作用:
计算效率:使用批次处理而不是单个样本处理可以大大提高计算效率,因为GPU或CPU可以并行处理多个样本,从而加速训练过程。
内存管理:对于大型数据集,将整个数据集一次性加载到内存中可能是不现实的。通过批次处理,我们可以一次只加载一部分数据,从而节省内存。
泛化性能:使用批次处理还可以引入一种噪声,这有助于模型更好地泛化到未见过的数据。因为每个批次的数据都是随机抽取的,所以模型不会过度拟合某个特定的数据子集。
取值:
较小值:当batch_size较小时,模型的权重更新会更频繁,这可能导致训练过程更加不稳定,但也可能更好地捕获数据的细节。
较大值:当batch_size较大时,模型的权重更新会更稳定,但可能会需要更多的内存,并且可能无法很好地捕获数据的细节。
极端情况:当batch_size为1时,这被称为在线学习或随机梯度下降(SGD)。当batch_size等于整个数据集的大小时,这被称为批量梯度下降。
epochs:
定义:一个 epoch 指的是模型已经遍历(或看过)整个训练数据集一次。例如,如果你有一个包含 1000 个样本的训练集,并且你的 batch_size 是 32,那么在一个 epoch 中,模型将会通过 32 个样本的小批次来更新其权重 31 次(因为 1000 除以 32 等于 31 余 8,最后一个批次将包含剩余的 8 个样本)。
作用:通过多次遍历数据集(即多个 epochs),模型有机会学习数据中的模式和结构。随着 epochs 的增加,模型通常会逐渐改善其性能,直到达到一个满意的精度水平或开始过拟合。
选择适当的 epochs 数:确定应该使用多少个 epochs 是一个经验性的问题,通常需要通过实验来确定。如果 epochs 数太少,模型可能无法充分学习数据的特征(欠拟合);如果 epochs 数太多,模型可能会开始过拟合训练数据,导致在未见过的数据上表现不佳。
早停(Early Stopping):为了避免过拟合,一种常用的策略是早期停止。这意味着在验证损失开始增加时(即模型开始过拟合)停止训练。这样,我们可以选择在模型性能最佳时的 epoch 停止训练。