趋近智
训练神经网络 (neural network)时,特别是处理大型数据集时,很少将整个数据集一次性输入模型。这样做会耗费大量计算资源,且通常不利于学习。取而代之的是,训练过程围绕着两个重要的数据组织单元构建:周期和批次。了解这些有助于您高效配置训练循环并管理计算资源。
一个周期代表着对整个训练数据集的一次完整处理。如果您有1,000个训练样本,当模型看到并处理了所有1,000个样本后,一个周期就完成了。
神经网络 (neural network)以迭代方式学习。一次数据处理(一个周期)几乎不足以让模型有效学习其潜在模式。模型的参数 (parameter)(权重 (weight)和偏置 (bias))是逐步调整的。因此,训练通常需要运行多个周期。可以将其比作阅读教科书:您通常需要多次阅读材料才能完全掌握其内容。
周期数量是您需要设置的一个超参数 (hyperparameter)。
随着模型经过多个周期训练,您通常会监测其在单独验证数据集上的表现,以决定何时停止训练。
一次性处理整个数据集,特别是对于拥有数百万样本的数据集,会对内存(RAM和GPU显存 (VRAM))造成很大压力,也可能导致收敛速度变慢。在这种情况下,小批量发挥作用。
小批量(通常简称为“批次”)是训练数据集的一个更小、更易于处理的子集。您不是在处理完整个数据集(这将是批量梯度下降 (gradient descent))后才更新模型的权重 (weight),而是在处理每个小批量后更新它们。
例如,如果您的训练数据集有1,000个样本,并且您选择批次大小为100,则数据集将被分为个批次。模型将处理前100个样本,计算损失,计算梯度,并更新其权重。然后它将处理接下来的100个样本,再次更新权重,以此类推,直到所有10个批次(从而,所有1,000个样本)都被处理完毕。所有批次的处理完成构成一个周期。
使用小批量具有多项优势:
一个迭代指的是模型参数 (parameter)的一次更新。在小批量梯度下降 (gradient descent)(最常见的训练策略)的背景下,一次迭代对应于处理一个数据小批量。
这种关系是:
对于我们1,000个样本和批次大小为100的例子:
下图说明了数据集如何通过周期和批次进行处理,从而实现迭代式模型更新。
完整数据集、周期、批次和迭代之间的关系。一个周期涉及处理源自数据集的所有批次,每个批次处理步骤构成一次迭代,在此迭代中模型更新其参数。
批次大小是另一个重要超参数 (parameter) (hyperparameter),它能明显影响训练动态和模型表现。没有一劳永逸的答案,最优批次大小通常取决于数据集、模型架构和可用硬件。
小批次大小(例如:1、8、16、32):
大批次大小(例如:128、256、512以上):
深度学习中常用的批次大小范围从32到256,但这很大程度上是经验性的。通常,尝试不同的批次大小是个好主意。批次大小还可能与其他超参数(例如学习率)相互影响。例如,在增加批次大小时,您有时可能也需要提高学习率以保持类似的训练动态。
在Julia中,MLUtils.jl等库提供DataLoader等工具,能高效地从您的数据集中创建和管理这些批次,然后您将在训练循环中对它们进行迭代。我们在第3章讨论数据处理时曾简要提及MLUtils.jl,在构建完整的训练循环时,您将看到它的实际应用。
通过将训练过程组织成周期和批次,您能够对模型如何从数据中学习获得细粒度控制,从而平衡计算效率与学习效果。接下来,我们将看到这些内容如何融入整体模型训练循环。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•