GradNorm:Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks,梯度归一化

GradNorm是一种优化方法,解决多任务学习中不同任务梯度量级不同和收敛速度不一致的问题。通过动态调整任务损失权重,平衡梯度,促进模型对所有任务的均衡学习。GradLoss作为核心,根据实际和理想梯度范数的差调整任务权重,考虑了损失量级和训练速度。
摘要由CSDN通过智能技术生成

文章目录

  gradnorm论文地址:https://arxiv.org/abs/1711.02257

  gradnorm是一种优化方法,在多任务学习(Multi-Task Learning)中,解决 1. 不同任务loss梯度的量级(magnitude)不同,造成有的task在梯度反向传播中占主导地位,模型过分学习该任务而忽视其它任务;2. 不同任务收敛速度不一致;这两个问题。

  从实现上来看,gradnorm除了利用label loss更新神经网络的参数外,还会使用grad loss更新每个任务(task)的损失(loss)在总损失中的权重 w w w

引言

  以简单的多任务学习模型shared bottom为例,两个任务的shared bottom结构如下,输出的两个tower分别拟合两个任务。

  针对这样的模型,最简单的方法就是每个任务单独计算损失,然后汇总起来,最终的损失函数如下:

l o s s ( t ) = l o s s A ( t ) + l o s s B ( t ) loss(t) = loss_{A}(t)+loss_{B}(t) loss(t)=lossA(t)+lossB(t)

  但是,两个任务的loss反向传播的梯度量级可能不同,在反向传播到shared bottom部分时,梯度量级小的任务对模型参数更新的比重少,使得shared bottom对该任务的学习不充分。因此,我们可以简单的引入权重,平衡梯度,如下:

l o s s ( t ) = w A × l o s s A ( t ) + w B × l o s s B ( t ) loss(t) =w_{A}\times loss_{A}(t)+w_{B}\times loss_{B}(t) loss(t)=wA×lossA(t)+wB×lossB(t)

  这样做并没有很好的解决问题,首先,如果loss权重 w w w在训练过程中为定值,最初梯度量级大的任务,我们给一个小的 w w w,到训练结束,这个小的 w w w会一直限制这一任务,使得这一任务不能得到很好的学习。因此,需要梯度也是不断变化的,更新公式如下:

l o s s ( t ) = w A ( t ) × l o s s A ( t ) + w B ( t ) × l o s s B ( t ) loss(t) =w_{A}(t)\times loss_{A}(t)+w_{B}(t)\times loss_{B}(t) loss(t)=wA(t)×lossA(t)+wB(t)×lossB(t)

  gradnorm就是用梯度,来动态调整loss的 w w w的优化方法。注意,阅读下面需要区分两种loss,1. label的loss,即用于更新权重的loss;2. grad的loss,即用于更新 w w w的loss。

gradnorm

  想要动态更新loss的 w w w,最直观的方法就是利用grad,因为在多任务学习中,我们解决的就是多任务梯度不平衡的问题,如果我们能知道 w w w的更新梯度(这里的梯度不是神经网络参数的梯度,是loss权重 w w w的梯度),就可以利用梯度更新公式,来动态更新 w w w,就像更新神经网络的参数一样,如下,其中 λ \lambda λ沿用全局的神经网络学习率。

w ( t + 1 ) = w ( t ) + λ β ( t ) w(t+1) = w(t)+\lambda\beta (t) w(t+1)=w(t)+λβ(t)

  我们的目的是平衡梯度,所以 β \beta β最好是梯度关于

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值