0%

syd 【ICML2018】GradNorm:Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks

Abstract

深度多任务网络可以用一个网络产生多个输出,与单任务网络相比,又快又好,但是不好训练。提出了梯度归一方法,通过动态调整梯度大小,自动平衡多任务中的训练。与单任务、其他loss权衡机制相比,GradNorm可以提高准确率,缓解过拟合。GradNorm只用一个不对称超参数$\alpha$,能达到或超过穷举网格搜索的效果。

Introduction

CV中需要同时且高效的完成多个任务,可以通过MTL实现,不同的任务间共享网络权重,在一个这种网络可伸缩,且共享特征引入更鲁棒的正则化、性能。但是多任务网络难以训练,不同的任务需要有一个恰当的平衡,参数应该收敛到鲁棒的共享特征。通过操控网络的反向传播寻找任务间的平衡,现有的方法都忽略了这一点:任务不平衡会阻碍训练,表现为反向梯度的不平衡。所以本文考虑直接调整loss,改变梯度大小,缓解这个问题。

多任务loss是单任务的线性组合,$L=\Sigma_iw_IL_i$,我们提出自适应方法,每一个训练步权值都变化,在训练过程中优化$w_i$,达到平衡的目的。当某个反向梯度过大或过小时,进行惩罚。所有的任务以相似的速率训练时,就达到平衡了。如果某个任务训练较快,对应的权值就要变小。

贡献:

  1. 直接调整梯度大小,实现多任务loss平衡
  2. 只需调整一个参数,可以达到或超过穷举网格搜索
  3. 直接梯度交互可以控制MTL

GradNorm

3.1. Definitions and Preliminaries

期望学到的$w_i(t)$能实现以下目标:1)将不同任务的梯度规范置于同一尺度上,通过这个尺度可以推断出梯度的相对大小;2)动态调整梯度范数,使得不同的任务以相似的速率训练。

$W$:网络权值的子集,真正应用GradNorm的参数,一般是最后一层权值共享层

$G_W^{(i)}(t)$:单任务loss($w_iL_i$)对$W$的梯度的l2范数

$\overline{G}_W(t)$:所有任务$G_W^{(i)}(t)$的均值

$\widetilde{L}_i(t)=L_i(t)/L_i(0)$:任务i在t时刻的loss比率,记为反向训练速率,这个值越小,loss降的越快,训练速度就越快

$ri(t)=\widetilde{L}_i(t)/E{task}[\widetilde{L}_i(t)]$:相对逆训练速率,越小,训练速度越快

3.2. Balancing Gradients with GradNorm

GradNorm讲梯度大小规范到同一尺度(平均梯度$\overline{G}_W(t)$),平衡不同任务的训练速率。相对反向训练速率$r_i(t)$用于平衡梯度,$r_i(t)$越大(说明该任务训练比较慢),梯度值应越大,加速这个任务的训练,所以得到任务i的期望梯度:

$\alpha$是超参数,控制恢复力(将梯度拉回同一训练速率)的强度。如果任务之间非常不平衡,$\alpha$适当调大;如果任务只是轻微不平衡,$\alpha$适当调小。上式给出了任务i的目标梯度,更新loss权值$wi$使得梯度朝着这个目标前进,目标梯度和当前梯度的l1范数求和,得到$L{grad}$:

将后半部分看作常数,那么$L_{grad}$只与$w_i$有关。对$w_i$进行求导,它直接控制每个任务的梯度大小,利用标准更新准则进行更新;每次更新后,需要规范化使得$\Sigma w_i$为T。

算法:



Example

训练多个任务,具有相似的损失函数,但是尺度不同,起初$w_i$均为1,损失量级越大的、反向传播梯度越大的任务越占主导地位。应用GradNorm:

T个回归任务,square loss,输入250维,输出100维,B和$\epsilon_i$是常矩阵,分别服从两个IID的正态分布。每个任务共享B中的信息,也包含任务特定信息$\epsilon_i$,$\sigma_i$控制着输出$f_i$的尺度,若$\sigma_i$较大的任务占主导,不是最优训练状态。

设计了4层全连接层,ReLU激活函数,每层100个神经元,最后的仿射层给出T个任务的T个预测,$\alpha$设为0.12。我们设计的多个任务,除了$\sigma_i$外都相同,所以用$\sigma_i^2$对每个任务进行标准化然后再求和,等同于对loss比率进行求和。

设只有两个任务,且$(\sigma_0,\sigma_1)=(1,100)$,初始权重均为1,由于任务1的量级较大,它的学习会超过任务0,所以应该相应地增大$w_0(t)$,提高任务平衡性。下图给出了训练过程中$w_0$和$w_1$的变化。

用10个任务进行了实验,结果如下,可以看出当任务数量变多时,梯度归一化的效果会更明显。

应用梯度归一化后,会得到各任务loss的权值$w_i$随着训练步变化的曲线,将权值按时间进行平均,取最终的一个静态值,这个静态权重可以近似达到网格搜索的效果

Conclusion

提出了GradNorm-一种自适应的加权机制,基于不同任务的训练速率,调整各任务loss的权值。通过调整$\alpha$的大小实现不同层层次的平衡,可以达到或超过网格搜索的效果,且更高效。


  • 这项研究由 Magic Leap 完成。这篇论文解决了一个非常有意思并且非常实用的问题,即多任务学习中多个任务难易程度不同所导致的优化不同步问题。作者提出了一种梯度传播机制,其核心思想是动态调整多个任务的权重,这些权重通过各个任务的实时梯度再进行反向传播和更新。研究表明,GradNorm 算法对多种不同的网络架构都有效,而且无论是回归任务还是分类任务,无论是合成数据集还是真实数据集,GradNorm 在多个任务上都能实现优于单任务网络的准确度并降低过拟合。GradNorm 也能得到比肩或超过穷举网格搜索方法的表现,尽管其仅涉及到单个不对称超参数 α。因此,曾经每增加一个任务都会导致计算需求指数增长的繁琐的搜索过程现在只需几次训练就能完成了,而且无论任务有多少都一样。研究者还表明梯度操作能实现对多任务网络的训练动态的更好控制。