在微调机器学习模型时,可以调整多个超参数以提高性能。最常见的包括学习率、批量大小、训练轮数、优化器设置以及正则化参数,如 dropout 或权重衰减。这些超参数控制模型在训练期间如何更新其权重,一次处理多少数据,以及如何避免过拟合。例如,学习率过高可能导致训练不稳定,而学习率过低可能导致收敛缓慢。类似地,较大的批量大小可能会加快训练速度,但会降低泛化能力,而过多的轮数可能会导致模型记忆训练数据。
具体的例子有助于说明它们的影响。学习率通常是开发人员调整的第一个超参数。例如,在微调像 BERT 这样的语言模型时,一个典型的起点可能是 2e-5 的学习率,但它会根据数据集大小或任务复杂性而有所不同。批量大小是另一个关键参数:较小的批量(例如,16 或 32)对于有限的 GPU 内存很常见,但较大的批量(例如,128)可能会稳定梯度估计。轮数也取决于任务——对于小型数据集,训练 3-5 轮可能就足够了,而较大的数据集可能需要 10 轮或更多。像 Adam 或 SGD 这样的优化器有它们自己的设置,例如 Adam 中的 beta 值(例如,beta1=0.9,beta2=0.999)或 SGD 中的动量,这些会影响梯度随时间的调整方式。
除了这些基本知识之外,正则化超参数也发挥着关键作用。Dropout,它在训练期间随机停用神经元,可以进行调整(例如,0.1 到 0.3)以防止过拟合。权重衰减,它为大权重增加了一个惩罚,可以设置为 0.01 或 0.001,以平衡模型的简单性和性能。一些框架还允许特定于层的调整,例如与预训练层相比,将更高的学习率应用于新添加的层(例如,分类头)。此外,可以配置学习率调度——例如线性预热或余弦衰减——以在训练期间动态调整速率。例如,在训练步骤的前 10% 内的预热阶段有助于稳定早期更新。这些超参数通常是相互依赖的,因此尝试各种组合(例如,较低的学习率和较高的权重衰减)是常见的做法,以便为给定的任务找到最佳设置。