400-123-4567

网站建设 APP开发 小程序

KNOWLEDGE/华信登录

分享你我感悟

您当前位置> 首页 > 华信登录 > APP开发

优化器方法-RAdam (Rectified Adam)

发表时间:2024-05-06 05:26:51

文章作者:佚名

浏览次数:

最近看到一篇博客,将LookAheadRAdam结合产生了一个新的算法——Ranger,获得了比单独使用RAdam要好的效果。后来有人将LARS与Ranger结合,效果取得了进一步提升。最近Ranger的提出者又将GC(Gradient Centralization)方法与Ranger结合,也取得了比Ranger好的效果。这里我会分四篇文章分享我个人在阅读这四个方法对应的论文时的总结和体会。由于LookAhead优化器与SWA比较相似,所以还会开辟一篇文章介绍SWAFast SWA优化器。本篇文章为系列文章第二篇。

目前很多自适应学习率优化器,如RMSprop、 Adam、Adadelta和Nadam等,被广泛应用在各种DNN模型的训练中,他们带来的最大益处是快速的收敛速度。下图(Algorithm 1)算法过程概括了大部分自适应学习率优化器的流程框架。不同的地方只是\phi (\cdot)\psi (\cdot)的计算方式不同。例如,在Adam优化器中:

\phi_t (g_1,...,g_t)=\frac{(1-\beta_1)\sum_{i=1}^{t}\beta_1^{t-i}g_i}{1-\beta_1^t}
\psi_t (g_1,...,g_t)=\sqrt{\frac{1-\beta_2^t}{(1-\beta_2)\sum_{i=1}^{t}\beta_2^{t-i}g_i^2}}
为了数值稳定,一般也会以下面的公式计算\psi (\cdot)\epsilon是一个极小的值,例如1 	imes 10^{-8}
\psi_t (g_1,...,g_t)=\frac{\sqrt{1-\beta_2^t}}{\epsilon + \sqrt{(1-\beta_2)\sum_{i=1}^{t}\beta_2^{t-i}g_i^2}}

从流程图中可以看出,自适应学习率优化器的学习率有两个,分别为\alpha_tl_t,其中\alpha_t称为学习率或者全局学习率,而l_t称为自适应学习率。

实际使用中发现,这些优化算法可能会收敛到一个表现较差的局部最优点,之前的解决方法是使用warmup启发式方法,即在训练早期阶段先使用较小的学习率开始训练,然后逐渐增大学习率到正式训练使用的学习率,剩下的训练过程使用正式训练中的学习率调整策略。但是之前没有理论依据可以解释warmup方法为何能够带来性能提升,因此也无法指引我们更好地在各种不同的任务中使用warmup,一般研究者都是通过试错的方式找到合适的warmup超参设置。

作者在对warmup的有效性进行研究时发现,造成自适应学习率优化器陷入较差局部最优点的主要原因是在训练早期,由于使用的训练样本数量有限,自适应学习率会有较大的方差。为了降低该因素带来的负面影响,我们可以在训练的早期阶段使用较小的(全局)学习率,这便是warmup方法。为了说明warmup的有效性,作者指出在机器翻译数据集De-En IWSLT'14的实验中,移除warmup阶段将使训练损失从3增加到10左右。作者也通过可视化方法发现,在不使用warmup的情况下,传统Adam算法的梯度分布会被扭曲,在10次更新中梯度会有一个相对较小的“质心”,而这意味着在进行一些更新后,传统Adam算法会陷入到较差的极小值点(个人无法理解此处的因果关系),如下图所示,该图中也指出在使用warmup后,梯度分布被扭曲的问题得到了矫正。

作者也通过证明说明在训练的早期阶段,Adam优化器的自适应学习率确实存在较大的方差。下面是论文中的简单推导总结,详细推导请参考原文:
1.首先,作者将每次迭代的梯度看作是独立同分布的,且服从N(0, \sigma^2)的正态分布,因为训练开始阶段,权重的初始化是采样自标准正态分布的。
2.Adam优化器中使用指数移动平均来计算自适应学习率,作者指出,通过指数移动平均计算的梯度平方的方差大于使用简单平均计算的梯度平方(推导可参考本文补充1),而且在训练的早期阶段(t较小时),通过指数移动平均来计算的梯度平方值与通过简单平均计算的梯度平方值相差不大(最大为1-\beta_2^{t-1}),所以为了分析简单,作者认为在训练的早期阶段使用简单平均计算的梯度平方概率分布近似于指数移动平均计算的梯度平方的概率分布,即:

p(\psi_t (\cdot))=p(\sqrt{\frac{1-\beta_2^t}{(1-\beta_2)\sum_{i=1}^{t}\beta_2^{t-i}g_i^2}}) \approx p(\sqrt{\frac{t}{\sum_{i=1}^{t}g_i^2} })

由于步骤1指出g_i服从正态分布N(0, \sigma^2),则\frac{t}{\sum_{i=1}^{t}g_i^2}服从缩放逆卡方分布(scaled inverse chi-square distribution,维基百科介绍Scale-inv-\chi^2(t, 1/\sigma^2 )。所以\psi_t^2 (\cdot)=\frac{1-\beta_2^t}{(1-\beta_2)\sum_{i=1}^{t}\beta_2^{t-i}g_i^2}也服从自由度为\rho的缩放逆卡方分布Scale-inv-\chi^2(\rho, 1/\sigma^2 )(此处不清楚为什么自由度不是t,个人猜测,两者虽然都服从缩放逆卡方分布,但是由于实际形式不同,所以在自由度上存在差异)。
3.基于以上假设和分析,就可以计算出\psi_t^2 (\cdot)的方差Var[\psi_t^2 (\cdot)],从而可以计算出\psi_t(\cdot)的方差Var[\psi_t (\cdot)]

该公式表明Var[\psi_t (\cdot)]是自由度\rho的单调递减函数,由于自由度\rho与采样的样本数量有关,即与t成正比,此处说明在训练初期,由于缺乏采样的样本数量,自适应学习率的方差Var[\psi_t (\cdot)]比训练后期要大,作者指出大致会有500倍的差异。

从以上推导已经知道Var[\psi_t (\cdot)]是自由度\rho的单调递减函数,为了对Var[\psi_t (\cdot)]进行进一步的量化分析并修正方差较大的问题,需要基于t对自由度\rho进行估计,作者给出的估计为:

\rho_t=f(t, \beta_2)=\frac{2}{1-\beta_2} - 1 - \frac{2t \beta_2^t}{1-\beta_2^t}
另外,指定\rho_{\infty}=\lim_{t 	o \infty }f(t, \beta_2)=\frac{2}{1-\beta_2} - 1

所谓修正自适应学习率,就是使得Var[\psi_t (\cdot)]从始至终都是常量值。从Var[\psi_t (\cdot)]与自由度\rho的关系我们知道Var[\psi_t (\cdot)]的最小值\min_{\rho_t} Var[\psi_t (\cdot)]=Var[\psi_t (\cdot)] |_{\rho_t=\rho_{\infty}}=C_{var},则可通过以下公式进行修正:

其中,r_t便是修正因子,通过公式推导,作者得到t时刻的修正因子r_t为:

r_t=\sqrt{\frac{(\rho_t - 4)(\rho_t - 2) \rho_{\infty}}{{(\rho_\infty - 4)(\rho_\infty - 2) \rho_{t}}}}

通过引入该修正因子,作者提出了Adam算法的新变种RAdam(Rectified Adam),算法整体描述如下:

另外,正如算法中指出的,当\rho_t \le 4\rho_{\infty} \le 4(开方不可解)自适应学习率失效,该算法退化为动量SGD。

1.作者试验表明RAdam在CV和NLP任务中都有比Adam好的表现,而且RAdam也具有比Adam和SGD更好的对不同学习率的鲁邦性:

2.与warmup比较,RAdam取得了与之相当的表现,说明RAdam可以作为warmup的替代策略:

1.通过指数移动平均计算的梯度平方的方差大于使用简单平均计算的梯度平方的方差,推导过程如下:

通过指数移动平均计算的梯度平方的方差计算公式推导:

Var[ \frac{1}{1 -\beta_2^t } (1-\beta_2) \sum_{i=1}^{t} \beta_2^{t-i}g_i^2] \\=\frac{1}{(1 -\beta_2^t)^2 } (1-\beta_2)^2 Var(\sum_{i=1}^{t} \beta_2^{t-i}g_i^2) \\=\frac{1}{(1 -\beta_2^t)^2 } (1-\beta_2)^2 \sum_{i=1}^{t} \beta_2^{2(t-i)} Var( g_i^2) \\=\sum_{i=1}^{t} \frac{1}{(1 -\beta_2^t)^2 } (1-\beta_2)^2 \beta_2^{2(t-i)} Var( g_i^2)

通过简单平均计算的梯度平方的方差计算公式推导:
Var(\frac{1}{t} \sum_{i=1}^{t} g_i^2) \\=\sum_{i=1}^{t} \frac{1}{t^2} Var( g_i^2)

两者的差为:
Var[ \frac{1}{1 -\beta_2^t } (1-\beta_2) \sum_{i=1}^{t} \beta_2^{t-i}g_i^2] - Var(\frac{1}{t} \sum_{i=1}^{t} g_i^2) \\=\sum_{i=1}^{t} [\frac{1}{(1 -\beta_2^t)^2 } (1-\beta_2)^2 \beta_2^{2(t-i)} - \frac{1}{t^2}] Var( g_i^2) \\ \ge \min_{i=1}^{t}[Var( g_i^2)] \sum_{i=1}^{t} [\frac{1}{(1 -\beta_2^t)^2 } (1-\beta_2)^2 \beta_2^{2(t-i)} - \frac{1}{t^2}]
上式最后一项大于等于0,理由是:由于t \ge 1,且对于Adam优化器\beta_2一般取值0.9, 则 \sum_{i=1}^{t} [\frac{1}{(1 -\beta_2^t)^2 } (1-\beta_2)^2 \beta_2^{2(t-i)} - \frac{1}{t^2}] \ge 0,下图是t选择不同值时\sum_{i=1}^{t} [\frac{1}{(1 -\beta_2^t)^2 } (1-\beta_2)^2 \beta_2^{2(t-i)} - \frac{1}{t^2}]的值,可以看出都是大于0的,又\min_{i=1}^{t}[Var( g_i^2)] \ge 0,所以上式大于0,从而说明通过指数移动平均计算的梯度平方的方差大于使用简单平均计算的梯度平方的方差,而且当t较小时两者的差异较小。

相关华信注册查看更多

平台注册入口