优化器方法-RAdam (Rectified Adam)

最近看到一篇博客,将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 \times 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倍的差异。

方法

1.对自由度\rho进行估计

从以上推导已经知道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 \to \infty }f(t, \beta_2) = \frac{2}{1-\beta_2} - 1

2.修正自适应学习率

所谓修正自适应学习率,就是使得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较小时两者的差异较小。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342