优化器方法-GC

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

方法

Batch Normalization(BN)和Weight Standardization (WS)都可以提高模型的泛化能力和训练速度,之前的文献对BN和WS的理论分析指出二者都使得梯度具有更好的Lipschitz平滑性(Lipschitz smooth的介绍),并使得权重空间路径更加平滑,从而可以提升模型训练的稳定性。这两个方法分别是对激活值和权重进行Z-score标准化。从这两个方法得到灵感,作者便尝试是不是也可以对梯度进行Z-score标准化,以提升模型训练效率。遗憾的是对梯度进行Z-score标准化并不能提升模型训练的稳定性,但是作者发现进行梯度中心化(Gradient Centralization, GC)处理却能提高模型的泛化能力和训练速度。作者分别从理论和实验角度论证了GC有效性。GC很简洁,可以轻易嵌入到已有优化算法中,下图是将GC加入到优化过程中的流程,以及GC在卷积层和全连接层的执行方式:

符号说明

W \in \mathbb{R}^{M*N} 表示网络某一层的权重,对于全连接层来说M=C_{in},N=C_{out},对于卷积层M=C_{in}*k_1*k_2,N=C_{out}k_1,k_2表示卷积核大小,C_{in}表示卷积核维度,C_{out}表示卷积核数量。用\textbf{w}_i \in \mathbb{R}^{M} (i=1,\dots,N)表示W的第i列,用\mathcal{L}表示目标函数,用\bigtriangledown_{ \textbf{w}_i} \mathcal{L}\bigtriangledown_{W} \mathcal{L}分别表示目标函数\mathcal{L}\textbf{w}_iW的(偏)导数。X表示某一层的输入特征值,W^TX表示输出。用\textbf{e} = \frac{1}{\sqrt{M}}\textbf{1}表示M维单位列向量,\textbf{I} \in \mathbb{R}^{M*M}表示单位矩阵。

GC计算公式

根据上面的符号,可以表示GC的计算公式:

\Phi_{GC}(\bigtriangledown_{ \textbf{w}_i} \mathcal{L}) = \bigtriangledown_{ \textbf{w}_i} \mathcal{L} - \frac{1}{M} \sum_{j=1}^{M}\bigtriangledown_{ \textbf{w}_i} \mathcal{L}

使用矩阵方式表示如下:
\Phi_{GC}(\bigtriangledown_{ \textbf{W}} \mathcal{L}) = P\bigtriangledown_{ \textbf{W}} \mathcal{L} , P=\textbf{I} - \textbf{e} \textbf{e}^T
从上面的公式可以看出,对于卷积层,中心化操作首先是计算每个卷积核的权重梯度均值,然后用卷积核中的每个权重梯度减去这个均值得到中心化后的权重梯度,对于全连接层则是对负责计算同一激活值的权重进行中心化。下面是官方实现的Pytorch版GC(x为某层权重):

x.add_(-x.mean(dim = tuple(range(1,len(list(x.size())))), keepdim = True))

可以看出GC是很简单的,这也体现在它很容易集成到目前以后的优化器中,下面是将GC集成到SGD和Adam中的算法流程:

GC理论分析

泛化作用

GC使得模型具有更好的泛化效果的原因是它能够对权重和特征空间进行正则化。

权重空间正则化

对上面的矩阵P使用简单的矩阵运算便可以得出下面的结论:

P^2 = P = P^T, e^T P \bigtriangledown_{ \textbf{w}}\mathcal{L} = 0
从上面的结论可以看出,实际上矩阵P是一个投影矩阵,其将梯度投影到以e^T为法向量的平面(投影后的向量为P \bigtriangledown_{ \textbf{w}}\mathcal{L})。作者指出,之前就有研究工作证明,梯度投影会起到将权重限制在一个超平面上(或称为黎曼流形),而GC便具有这样的能力。从下面的图中可以形象地看出,t时刻权重的更新方向总是在一个特定的超平面上,而这个超平面是由\textbf{e}^T(\textbf{w}^0 − \textbf{w}^t) = 0决定的,即权重的更新方向一直处于该超平面上(-P \bigtriangledown_{ \textbf{w}^t}\mathcal{L}),其实是由初始权重\textbf{w}^0和法向量\textbf{e}^T决定,\textbf{e}^T(\textbf{w} − \textbf{w}^t) = 0可由下面的推导得到:将公式\textbf{w}^1 = \textbf{w}^0 - P\bigtriangledown_{ \textbf{w}^0}\mathcal{L}中的\textbf{w}^0调整到等号左边,等式两边再同时左乘\textbf{e}^T,利用上面的结论,得\textbf{e}^T (\textbf{w}^1 - \textbf{w}^0 ) = - \textbf{e}^T P \bigtriangledown_{ \textbf{w}^0}\mathcal{L} = 0,不断做同样的推理可得\textbf{e}^T \textbf{w}^0 = \cdots = \textbf{e}^T \textbf{w}^t。这说明在训练中\textbf{e}^T \textbf{w}^t一直是个常量。从数学角度解释的话,具有GC的优化过程是带有对权重约束条件的优化过程:

\min_{w} \mathcal{L}(\textbf{w}), s.t. \textbf{e}^T(\textbf{w}^0 − \textbf{w}) = 0

输出(激活值)空间正则化

对于使用GC的SGD优化器,对于任意输入\textbf{x},权重具有下面的性质(详细证明见原论文):

(\textbf{w}^t)^T \textbf{x} - (\textbf{w}^t)^T(\textbf{x} + \gamma \textbf{1} ) = \gamma \textbf{1}^T \textbf{w}^0

该性质说明,当某层(卷积层或全连接层)的输出发生常量的强度变化(constant intensity change)时,经过权重计算后产生的输出变化只与初始权重\textbf{w}^0和标量\gamma有关(\gamma \textbf{1}^T \textbf{w}^0为缩放过的初始权重向量\textbf{w}^0的均值)。当初始权重\textbf{w}^0很小的时候,该变化就会很小,那么输出特征空间对训练样本变化具有一定的鲁棒性(不理解怎样的(噪声)变化会是\textbf{x} + \gamma \textbf{1}样子的?)。而实际上,不管是从头训练还是从ImageNet预训练模型开始训练,初始化的参数都是很小的,所以基本可以肯定GC具有对输出空间正则化的效果。

加快训练作用

之前的文献已经证明,BN和WS都具有可以平滑化优化参数空间路径的作用,从而使得训练更加稳定,即起到加速训练的作用。而有关BN和WS的文献指出, BN和WS的权重梯度和海森矩阵分别具有上界||\bigtriangledown_{ \textbf{w}}\mathcal{L}||_2||\bigtriangledown^2_{ \textbf{w}}\mathcal{L}||_2,这样的上界导致原始的损失函数具有更好的Lipschitz性质,从而使得优化过程更加平滑。作者证明GC也具有这样的性质(具体证明见原论文):

以上性质说明GC也具有加速训练的作用。

另外,作者还指出GC还具有梯度裁剪的作用,从而可以抑制梯度爆炸。

实验效果

作者在不同的视觉任务上做了全面实验,从而验证GC的有效性:

Mini-ImageNet上验证加速训练和提高测试集泛化的作用

CIFAR100上验证不同优化器和不同网络上的有效性

CIFAR100上验证不同的超参配置上的有效性

gc_7.png

大型数据集ImageNet上验证加速训练和提高测试集泛化的作用

细粒度分类数据集上验证有效性

对象检测和分割上验证有效性

从数据上看,GC在检测和分割上的表现并不是很出色,当然这也和任务的难度有关。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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