常见学习率衰减方式

学习率

学习率的作用

​ 在机器学习中,监督式学习通过定义一个模型,并根据训练集上的数据估计最优参数。梯度下降法是一个广泛被用来最小化模型误差的参数优化算法。梯度下降法通过多次迭代,并在每一步中最小化成本函数(cost 来估计模型的参数。学习率 (learning rate),在迭代过程中会控制模型的学习进度。

​ 在梯度下降法中,都是给定的统一的学习率,整个优化过程中都以确定的步长进行更新, 在迭代优化的前期中,学习率较大,则前进的步长就会较长,这时便能以较快的速度进行梯度下降,而在迭代优化的后期,逐步减小学习率的值,减小步长,这样将有助于算法的收敛,更容易接近最优解。故而如何对学习率的更新成为了研究者的关注点。
​ 在模型优化中,常用到的几种学习率衰减方法有:分段常数衰减、多项式衰减、指数衰减、自然指数衰减、余弦衰减、线性余弦衰减、噪声线性余弦衰减

学习率衰减常用参数有哪些

参数名称 参数说明
learning_rate 初始学习率
global_step 用于衰减计算的全局步数,非负,用于逐步计算衰减指数
decay_steps 衰减步数,必须是正值,决定衰减周期
decay_rate 衰减率
end_learning_rate 最低的最终学习率
cycle 学习率下降后是否重新上升
alpha 最小学习率
num_periods 衰减余弦部分的周期数
initial_variance 噪声的初始方差
variance_decay 衰减噪声的方差

分段常数衰减

​ 分段常数衰减需要事先定义好的训练次数区间,在对应区间置不同的学习率的常数值,一般情况刚开始的学习率要大一些,之后要越来越小,要根据样本量的大小设置区间的间隔大小,样本量越大,区间间隔要小一点。下图即为分段常数衰减的学习率变化图,横坐标代表训练次数,纵坐标代表学习率。

[外链图片转存失败(img-kw3S7wkH-1563178407618)(./img/ch3/learnrate1.png)]

指数衰减

​ 以指数衰减方式进行学习率的更新,学习率的大小和训练次数指数相关,其更新规则为:
d e c a y e d _ l e a r n i n g _ r a t e = l e a r n i n g _ r a t e ∗ d e c a y _ r a t e g l o b a l _ s t e p d e c a y _ s t e p s decayed{\_}learning{\_}rate =learning{\_}rate*decay{\_}rate^{\frac{global{\_step}}{decay{\_}steps}} decayed_learning_rate=learning_ratedecay_ratedecay_stepsglobal_step
​ 这种衰减方式简单直接,收敛速度快,是最常用的学习率衰减方式,如下图所示,绿色的为学习率随
训练次数的指数衰减方式,红色的即为分段常数衰减,它在一定的训练区间内保持学习率不变。

[外链图片转存失败(img-RRMXfiVj-1563178407618)(./img/ch3/learnrate2.png)]

自然指数衰减

​ 它与指数衰减方式相似,不同的在于它的衰减底数是 e e e,故而其收敛的速度更快,一般用于相对比较
容易训练的网络,便于较快的收敛,其更新规则如下
d e c a y e d _ l e a r n i n g _ r a t e = l e a r n i n

### 学习率衰减策略及其实现方法 学习率衰减策略是指在训练过程中动态调整学习率的技术,目的是提高模型的收敛速度并优化最终效果。以下是常见学习率衰减策略及其具体实现方式: #### 常见学习率衰减策略 1. **阶梯衰减 (Step Decay)** 这种策略每隔固定的 epoch 或步数将学习率降低一个固定的比例。例如,在 PyTorch 中可以通过 `StepLR` 来实现该功能[^3]。其核心思想是在训练的不同阶段逐步缩小学习率的变化幅度。 2. **指数衰减 (Exponential Decay)** 学习率以指数形式逐渐减小。这种策略适合于那些需要快速初始收敛而后精细调优的任务。其实现公式通常为 \( \text{lr} = \text{lr}_0 * e^{-k*t} \),其中 \( k \) 是衰减速率参数[^5]。 3. **多项式衰减 (Polynomial Decay)** 根据多项式函数来调整学习率。这种方法允许更灵活地定义学习率随时间变化的方式,适用于复杂的场景需求[^3]。 4. **余弦退火 (Cosine Annealing)** 学习率随着训练时间按 cosine 函数变化。这种方式能够模拟周期性的学习率振荡行为,有助于跳出局部极小值。 #### 动态调整学习率的具体实现 在深度学习框架中,如 TensorFlow 和 PyTorch 提供了多种工具支持这些策略的应用: - 使用回调机制(Callback),比如 Keras 的 ReduceLROnPlateau 可基于监控指标自动调节学习率[^4]。 - 在 PyTorch 中通过内置 Scheduler 类完成不同类型的 LR 调整逻辑设置[^2]。 下面是一个简单的 Python 示例展示如何利用 PyTorch 实现 Step Decay 方法: ```python import torch.optim as optim optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9) scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=30, gamma=0.1) for epoch in range(epochs): train(...) validate(...) scheduler.step() ``` 此代码片段设置了每 30 个 epochs 后把当前学习率乘以 0.1 的规则[^2]。 #### 参数配置建议 为了获得良好的性能表现,需合理设定以下几个重要超参: - monitor:决定何时触发学习率改变的行为依据; - factor & patience:控制学习率下降的速度与频率; - mode:明确目标方向是追求最小化还是最大化某些评价标准; - cooldown/min_lr/epsilon 等辅助选项也会影响整体流程稳定性[^4]。 综上所述,选择合适自己的学习率调度方案对于提升神经网络训练效率至关重要。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cpp编程小茶馆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值