Learning Rate Schedules (PyTorch)
https://huggingface.co/docs/transformers/v4.48.0/en/main_classes/optimizer_schedules#transformers.SchedulerType
1."linear" = get_linear_schedule_with_warmup
线性衰减调度器:在预热阶段(warmup)使用较小的学习率,然后在后续的训练中,学习率从初始值线性衰减到最小值。适用于需要在训练过程中逐渐减少学习率的任务。
典型用法:常用于 fine-tuning(微调)预训练模型。
2."cosine" = get_cosine_schedule_with_warmup
余弦衰减调度器:学习率在训练过程中遵循余弦函数衰减。预热阶段使用较小的学习率,然后余弦地减小学习率直到训练结束。适用于希望学习率逐渐减小的任务,通常用于需要较长训练时间的任务。
典型用法:Transformer 预训练和 fine-tuning 中常用,特别是在长时间训练时。
3."cosine_with_restarts" = get_cosine_with_hard_restarts_schedule_with_warmup
余弦衰减带硬重启调度器:类似于普通的余弦衰减,但是每隔一段时间(即"重启")学习率重新开始衰减。这个策略适用于一些需要周期性地重新激活学习率的情况,通常用于训练过程中避免陷入局部最小值。
典型用法:长时间训练时,周期性地重启学习率。
4."polynomial" = get_polynomial_decay_schedule_with_warmup
多项式衰减调度器:学习率会根据多项式函数衰减。起始阶段可以使用较大的学习率,在后续阶段根据多项式的衰减规律减小学习率,直到达到最小值。适用于需要较为平滑减小学习率的任务。
典型用法:通常用于需要非常平滑衰减的训练过程。
5."constant" = get_constant_schedule
常数学习率调度器:在训练期间保持学习率不变。这是最简单的调度器,适用于需要在整个训练过程中保持学习率恒定的任务。
典型用法:不希望学习率变化,适用于某些基础模型训练或快速实验。
6."constant_with_warmup" = get_constant_schedule_with_warmup
常数学习率调度器,带热身:在训练开始时通过一个热身阶段逐渐增加学习率,然后在后续训练中保持学习率不变。适用于需要开始阶段逐步增加学习率以避免训练不稳定的情况。
典型用法:适用于微调时使用恒定学习率,但需要热身来稳定训练过程。
7."inverse_sqrt" = get_inverse_sqrt_schedule
平方根反比调度器:学习率按步数的平方根反比衰减,即随着训练的进行,学习率会根据训练步数的平方根逐渐减小。通常用于某些类型的自适应学习率策略中。
典型用法:常见于 transformer 和其他高级模型的训练中。
8."reduce_lr_on_plateau" = get_reduce_on_plateau_schedule
按 plateau 减少学习率调度器:当验证集的损失在若干个训练步骤内没有改善时,自动减少学习率。这个策略常用于验证集上的指标没有提升时,减少学习率以避免过拟合。
典型用法:当模型训练过程中验证集性能没有显著提升时,采用此策略来调整学习率。
9."cosine_with_min_lr" = get_cosine_with_min_lr_schedule_with_warmup
余弦衰减带最小学习率调度器:类似于余弦衰减调度器,但是在衰减时会设置一个最小的学习率阈值。学习率不会低于这个最小值,避免学习率过低造成训练无法继续的情况。
典型用法:需要平稳衰减学习率,同时保持学习率不会降得太低。
10."warmup_stable_decay" = get_wsd_schedule
稳定衰减热身调度器:结合了热身阶段和稳定衰减的策略,旨在训练早期让模型稳定学习,之后逐渐减小学习率。适用于那些希望在训练初期保持较高学习率的任务,后期逐渐稳定学习的任务。
典型用法:用于需要在训练初期稳定模型时,逐步衰减学习率的任务。