周期性余弦衰减学习率调度器(CyclicCosineDecayLR)

    scheduler = CyclicCosineDecayLR(
        optimizer,
        init_decay_epochs=15,    # 初始余弦衰减周期
        min_decay_lr=2.5e-6,     # 最小学习率
        restart_interval=10,     # 学习率重启周期
        restart_lr=12.5e-5,      # 重启后的初始学习率
        warmup_epochs=10,        # 学习率热身阶段
        warmup_start_lr=2.5e-6   # 初始热身学习率
    )

概述
创建一个 CyclicCosineDecayLR 调度器实例,用于调整优化器的学习率。该调度器结合了 学习率热身(Warmup)、余弦衰减 和 周期性重启 机制,旨在提升模型训练效果。


参数详解

  1. optimizer
    • 功能:需要调整学习率的优化器(如 AdamSGD)。

    • 示例:若使用 optimizer = torch.optim.Adam(model.parameters(), lr=1e-3),调度器将动态调整此优化器的学习率。

  2. init_decay_epochs=15
    • 功能:初始余弦衰减周期的 epoch 数。

    • 细节:在热身阶段结束后,学习率从 restart_lr 开始,按余弦函数下降至 min_decay_lr,持续 15 个 epoch。

  3. min_decay_lr=2.5e-6
    • 功能:余弦衰减过程中允许的 最低学习率。

    • 示例:在衰减周期结束时,学习率降至 2.5e-6,避免过小的学习率导致训练停滞。

  4. restart_interval=10
    • 功能:学习率重启周期的 epoch 数。

    • 细节:初始衰减阶段(15 epoch)后,每隔 10 个 epoch 将学习率重置为 restart_lr,开始新的余弦衰减周期。

  5. restart_lr=12.5e-5
    • 功能:重启后的初始学习率。

    • 示例:每次重启时,学习率被重置为 12.5e-5,作为新一轮余弦衰减的起点。

  6. warmup_epochs=10
    • 功能:学习率热身阶段的 epoch 数。

    • 细节:在训练开始时,学习率从 warmup_start_lr 逐步增加至 restart_lr,持续 10 个 epoch,避免初始学习率过大导致不稳定。

  7. warmup_start_lr=2.5e-6
    • 功能:热身阶段的起始学习率。

    • 示例:热身阶段从 2.5e-6 开始,逐步线性或非线性增长到 restart_lr=12.5e-5


调度器工作流程

  1. 热身阶段(Epoch 0-9)
    • 学习率从 2.5e-6 逐步增加至 12.5e-5,持续 10 个 epoch。

  2. 初始余弦衰减阶段(Epoch 10-24)
    • 学习率按余弦函数从 12.5e-5 降至 2.5e-6,持续 15 个 epoch。

  3. 周期性重启阶段(Epoch 25 及以后)
    • 每 10 个 epoch 重启一次:

    ◦ 学习率重置为 12.5e-5

    ◦ 按余弦函数在 10 个 epoch 内再次降至 2.5e-6

    • 此过程循环进行,直到训练结束。


设计动机
• 热身阶段:避免初始学习率过大,稳定训练初期。

• 余弦衰减:平滑降低学习率,帮助模型收敛到更优解。

• 周期性重启:通过周期性重置学习率,使模型跳出局部最优,探索更佳参数空间。


示意图

学习率变化趋势:
      ▲
12.5e-5 | 重启点        重启点        重启点
       |   ↘            ↘            ↘
       |    ↘          ↗ ↘          ↗ ↘
       |     ↘        ↗   ↘        ↗   ↘
2.5e-6 |______↘______↘____↘______↘____↘______▶ Epoch
          10   25    35   45    55   65
          |←15→|←10→|←10→|←10→|←10→|←10→|
          衰减周期  重启周期 重启周期 重启周期

通过这种设计,模型能够在训练过程中平衡探索(高学习率)与收敛(低学习率),提升泛化性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值