深度学习——学习率衰减(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
在这里插入图片描述

  • 26
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值