深度学习——学习率衰减(learning rate decay)

学习率衰减(learning rate decay)

为了防止学习率过大,在收敛到全局最优点的时候会来回摆荡,所以要让学习率随着训练轮数不断按指数级下降,收敛梯度下降的学习步长。

学习率衰减可以用以下代码实现
decayed_learning_rate = learning_rate * np.power(decay_rate,(global_step / decay_steps))

decay_rate衰减指数,可设为略小于1的值,比如0.98。global_step是当前的迭代轮数decay_steps是你想要每迭代多少轮就衰减的度量值,可叫作衰减速度。比如decay_steps = 1000,意味着当global_step达到1000时就给learning_rate乘上0.98的一次方,达到2000就乘上0.98的二次方,以此类推,不断缩小学习率。

TensorFlow提供了一个函数实现了指数衰减学习率,叫做tf.train.exponential_decay
用法如下

global_step = tf.Variable(0)
learning_rate = tf.train.exponential_decay(0.1, global_step, 1000, 0.98)
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost,\
global_step = global_step)

初始学习率为1,衰减指数为0.98,衰减速度为1000,global_step会跟着minimize函数自动更新。
tf.train.exponential_decay还有一个参数是staircase,默认为False,如果是False,学习率会平滑地衰减,而非每迭代1000轮才衰减一次,如果为True,则会每迭代1000次才衰减一次,这种称为阶梯函数。

学习率的本质可以说成是,在训练初期,你希望学习的步长在可承受的范围内尽量大一些,随着训练轮数的增加,为了避免梯度下降无法收敛到全局最优点,甚至发散,你希望学习的步长越来越小,逐步逼近最优点,至少是在一个最优的范围内来回震荡。

学习率衰减是非常有用的技巧,通常会和mini_batch的方法一并使用,你也可以手动衰减学习率,虽然这很耗费人力和精力。不过从我学到的知识来看,学习率衰减并不是你要考虑的首要问题,通常,你只需要不断调整学习率,直至一个令人满意的效果即可,并不一定需要用到学习率衰减。因为还有很多更高级的超参数调整和搜索方式值得尝试。

个人博客
我的GitHub
文章第一时间主要更新在我的个人公众号:天宏NLP,微信号:tianhongzxy
在这里插入图片描述

### 深度学习中的学习率衰减策略概述 在深度学习中,学习率是一个至关重要的超参数,它决定了权重更新的速度。适当的学习率有助于加速收敛并提高模型性能。然而,在整个训练过程中保持固定的学习率通常不是最优的选择。因此,采用合适的学习率衰减策略能够显著提升模型的效果。 #### 常见的学习率衰减方式 1. **分阶段常量衰减** 这种方法按照预定的时间间隔或条件触发时降低学习率。例如,每经过一定数量的epoch之后乘上一个小于1的比例因子。这种方式简单易实现,但在实践中可能不够灵活[^4]。 2. **指数衰减** 它定义了一个随时间呈指数减少的学习率公式 \(\eta_t=\eta_0\gamma^{(t/t_{decay})}\),其中 \(t\) 表示迭代次数,\(t_{decay}\)衰减速率周期长度,而 \(\gamma<1\) 控制着每次衰减的程度。这种方法允许更平滑地控制学习速率的变化趋势[^2]。 3. **余弦退火 (Cosine Annealing)** 利用余弦函数特性设计了一条从最大值逐渐降至接近零再回升至较大值的过程线。这不仅实现了缓慢降温还引入了重启机制,即当达到局部极小点附近时重新激活探索能力,从而避免陷入次优解。表达式如下所示: ```python eta_min = 0.001 * initial_learning_rate learning_rate = eta_min + 0.5*(initial_learning_rate - eta_min)*(1 + math.cos(math.pi*t/T_max)) ``` 4. **自适应调度器(如ReduceLROnPlateau)** 自动监控特定指标(通常是验证集上的损失),如果该指标连续几轮没有改善,则自动削减学习率。这类方法不需要预先设定具体的时刻表而是基于实际表现作出反应,具有较高的灵活性和实用性[^5]。 5. **循环学习率(Cyclical Learning Rates)** 提出了让学习率在一个范围内波动而不是单调递减的概念。通过交替升高和降低学习率可以在一定程度上防止过拟合现象的发生,并且有时还能找到更好的全局最小值位置[^1]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值