关于调参技巧的问题

编程入门 行业动态 更新时间:2024-10-25 00:23:34

关于调参<a href=https://www.elefans.com/category/jswz/34/1767080.html style=技巧的问题"/>

关于调参技巧的问题

学习率衰减(learning rate decay)是什么?

在训练模型的时候,通常会遇到这种情况:我们平衡模型的训练速度和损失(loss)后选择了相对合适的学习率(learning rate),但是训练集的损失下降到一定的程度后就不在下降了。

遇到这种情况通常可以通过适当降低学习率(learning rate)来实现。但是,降低学习率又会延长训练所需的时间。

学习率衰减(learning rate decay) 就是一种可以平衡这两者之间矛盾的解决方案。学习率衰减的基本思想是:学习率随着训练的进行逐渐衰减。

学习率衰减基本有两种实现方法:

线性衰减。例如:每过5个epochs学习率减半。

指数衰减。例如:随着迭代轮数的增加学习率自动发生衰减,每过5个epochs将学习率乘以0.9998。具体算法如下:

decayed_learning_rate=learning_rate*decay_rate^(global_step/decay_steps)

其中decayed_learning_rate为每一轮优化时使用的学习率,learning_rate为事先设定的初始学习率,decay_rate为衰减系数,decay_steps为衰减速度。

Warmup和学习率衰减(learning rate decay)的区别是什么?

训练神经网络模型常规策略是初始使用较大的学习率,随着训练的逐渐进行学习率衰减(learning rate decay)。而wramup则是刚开始使用较小的学习率,然后增大到设定的学习率,最后又随着训练的进行慢慢减小学习率。

为什么需要Warmup?

在训练的开始阶段,模型权重迅速改变。刚开始模型对数据的“分布”理解为零,或者是说“均匀分布”(当然这取决于你的初始化),在第一轮训练的时候,每个数据点对模型来说都是新的,模型会很快地进行数据分布修正,如果这时候学习率就很大,极有可能导致开始的时候就对该数据“过拟合”,后面要通过多轮训练才能拉回来,浪费时间。当训练了一段时间(比如两轮、三轮)后,模型已经对每个数据点看过几遍了,或者说对当前的batch而言有了一些正确的先验,较大的学习率就不那么容易会使模型学偏,所以可以适当调大学习率。这个过程就可以看做是warmup。那么为什么之后还要decay呢?当模型训到一定阶段后(比如十个epoch),模型的分布就已经比较固定了,或者说能学到的新东西就比较少了。如果还沿用较大的学习率,就会破坏这种稳定性,用我们通常的话说,就是已经接近loss的local optimal了,为了靠近这个point,我们就要慢慢来。

更多推荐

关于调参技巧的问题

本文发布于:2024-02-27 06:09:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1705478.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:技巧

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!