本文作者Elevanth最早出现在Zhihu的专栏,ai研究会被授权转载。

深度学习中更新参数的方法大家一定很清楚——SGD,adam等。,关于孰优孰劣有广泛的讨论。但是,你有没有特别关注学习率的衰减策略?

说实话,我之前只用过指数法和降压法,我觉得对深度学习没什么帮助。但是在最近的学习和工作中,接触到了各种奇怪的lr策略,可以说是大大刷新了三观。在这里,我想和大家分享一下我的学习经验。

学习率衰减策略文件在tensor flow/tensor flow/python/training/learning _ rate _ decade . py中,函数中调用的方法类似于TF . train . index _ decade。

下面,我将在ipython中逐一介绍各种lr衰减策略。

指数衰减

指数衰减

指数lr衰减法是最常用的衰减方法,广泛应用于大量模型中。

Learning_rate传入初始lr值,global_step用于逐级计算衰减指数,decay _ steps用于确定衰减周期,decay _ rate为每次衰减的速率,如果staircase为False,则为标准指数衰减,如果为True,则为阶梯衰减法,旨在一段时间内保持相同的学习速率。

图1。指数_衰减示例,其中红线为阶梯=False,即指数递减曲线,蓝线为阶梯=True,即逐步递减曲线。

这种衰减方法的优点是收敛速度快、简单直接。

分段常数

分段常数

分段常数下降法类似于指数_衰变中的逐步下降法,但每个阶段的值都是自己设定的。

x是全局步长,边界= 定义第一步中的lr衰减,值= 定义lr的初始值和后续衰减的具体值。应该注意的是,值应该比边界长一个维度。

图2。分段常数示例

这种方法有助于用户针对不同的任务精细调整参数,并且在任何一步之后将学习率降低任意值。

多项式衰减

多项式衰减

多项式衰减以多项式方式衰减学习速率。

通常观察到的是,单调递减的学习速率会产生性能更好的模型。

该函数将多项式衰减函数应用于所提供的初始“学习速率”,以在给定的“衰减步骤”中达到“结束学习速率”。

其递减公式也在函数注释中说明:

全局步长=最小值

衰变_学习_速率=*

^+结束_学习_速率

图3。多项式_下降例,周期=False,其中红线为幂=1,即线性下降;蓝线是power=0.5,即处方减少;绿线是power=2,也就是第二次下降

周期参数是确定lr下降后是否再次上升的过程。周期参数的初衷是为了防止lr在网络后期一直在局部最小值震荡,突然增加的lr可以跳出注定不能继续增长的区域,去探索其他区域。

图4。多项式衰减示例,周期=真,颜色同上

自然_ exp _衰变

自然_ exp _ decade

自然_ exp _ declare的形式类似于指数_衰变,只是自然指数下降的基数是类型。

指数衰减:

衰减_学习_速率=学习_速率*衰减_速率^

自然_ exp _衰变:

衰变_学习_速率=学习_速率* exp

图5。自然_ exp _ deck与指数_ deck对比图,其中红线为自然_ exp _ deck,蓝线为自然_ exp _ deck,绿线为指数_ deck

从图中可以看出,自然数的指数衰减比指数衰减快得多,适用于收敛速度快、易于训练的网络。

反向时间衰减

逆_时间_衰减

Inverse _ time _ decay为倒数衰减,衰减公式如下:

衰变_学习_速率=学习_速率/

图6。反向时间衰减示例

以上衰减方法差别不大,主要基于指数衰减。个人认为问题在于一开始lr的快速下降,可能导致在复杂问题中快速收敛到局部最小值,而没有更好的探索参数空的范围。

余弦衰减

余弦衰减

余弦_衰减是近年来提出的lr衰减策略,其基本形状是余弦函数。该方法基于论文:sgdr:热重启随机梯度下降

计算步骤如下:

全局步长=最小值

余弦衰减= 0.5 *)

衰变=*余弦_衰变+α

衰退_学习_率=学习_率*衰退

alpha的作用可以看作基线,保证lr不会降到某个值以下。不同alpha的效果如下:

图7。余弦衰减示例,其中红线alpha=0.3,蓝线alpha=0.0

余弦衰减重启

余弦衰减重新开始

余弦_甲板_重启是余弦_甲板的循环版本。first _ deep _ steps指的是第一次完全下降的步数,t_mul表示每个周期的步数将乘以t_mul倍,m_mul表示每个周期重启时的初始lr是m_mul乘以前一个周期的初始值。

图8。余弦_声明_重启示例,红线t_mul=2.0,m_mul=0.5,蓝线t_mul=2.0,m_mul=1.0

余弦函数的下降模拟了大lr找到潜在区域,然后小lr快速收敛的过程。另外重启带来的周期效应可能会增加1-2个点。

线性余弦衰减

线性余弦衰减

linear _余弦_ deck的参考是带rl的神经优化器搜索,主要应用领域是增强学习,我以前没试过。可以看出,这种方法也是一种基于余弦函数的衰减策略。

图9。线性_余弦_甲板示例

噪声_线性_余弦_衰减

噪声_线性_余弦_衰减

参考同上。该方法在衰减过程中加入了噪声,在一定程度上增加了lr搜索最优值的随机性和可能性。

图10。噪声_线性_余弦_甲板示例

自动学习率衰减

当然,您也可以自定义学习速率衰减策略,例如设置检测器来监控有效的丢失或准确性值。如果损失在一定时间内持续有效下降,则lr维持,否则下降;损失越大//acc越小,lr越小,等等。

图11。自动学习率衰减效应示例

最后祝大家炼丹快乐!

为什么随机最速下降法是一种好方法?

1.《decay Tensorflow 中 learning rate decay 的奇技淫巧》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《decay Tensorflow 中 learning rate decay 的奇技淫巧》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/caijing/1753122.html