问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

多任务学习MTL模型:多目标Loss优化策略

创作时间:
作者:
@小白创作中心

多任务学习MTL模型:多目标Loss优化策略

引用
CSDN
1.
https://blog.csdn.net/sgyuanshi/article/details/141689077

多任务学习(MTL)是深度学习中的一个重要研究方向,它允许模型同时学习多个相关或不相关的任务。然而,在实际应用中,不同任务的损失函数(Loss)往往存在量级差异,这可能导致某些任务主导整个学习过程,影响模型的整体性能。为了解决这一问题,研究者们提出了多种优化策略,本文将详细介绍其中几种主流方法。

前言

之前的文章中介绍了针对多任务学习的几种模型,如MMoE和PLE,主要集中在网络结构方面的优化,以缓解任务间相关性低导致的梯度冲突和“跷跷板”问题。但多任务学习还存在以下棘手问题:

  1. 不同任务的损失量级不同,可能会出现损失较大的任务主导的现象
  2. 不同任务的学习速度不同,有的快有的慢
  3. 不同的损失应该如何分配权重?直接平均是否合理?如何选出最优的损失权重组合?

接下来,我们将介绍几种基于损失优化的多任务学习策略。

使用不确定性加权损失

相关论文

《Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics》

核心思想

这篇论文指出,多任务学习模型的效果很大程度上由共享的权重决定,但训练这些权重是很困难的。因此,引入了不确定性(uncertainty)的概念来衡量不同任务的损失,使得可以同时学习不同类型的任务。

具体来说,总损失的计算公式如下:

其中,α为可学习参数,表示对应任务的不确定性。

容易看出,总损失会惩罚损失大且α小的任务,因为对于这种任务,这一项就会很大,SGD就会将它往小优化。

它代表着对于损失较大的任务,意味着它的不确定性也较高,为了避免模型往错误的方向“大步迈”,应该以较小的梯度去更新w;相反的,对于损失较小的任务,它的不确定性也就较低,以较大的梯度去更新w。

同时,这也能避免让较大损失的任务主导的问题。

总结:大损失的任务给予小权重,小损失的任务给予大权重。

注意事项

这个方法由于后面的log项,可能会出现总损失为负的情况。

GradNorm梯度正则化

相关论文

《GradNorm: Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks》

核心思想

这篇论文提出了一种新的方法:梯度正则化(GradNorm),它能自动平衡多任务不同的梯度量级,提升多任务学习的效果,减少过拟合。

首先,总损失的定义仍是不同任务的损失加权平均:

GradNorm设计了额外的损失来学习不同任务损失的权重wi,但它不参与网络层的参数的反向梯度更新,目的在于不同任务的梯度通过正则化能够变成同样的量级,使不同任务可以以接近的速度进行训练:

其中,t代表训练的步数;
W一般是取最后一层共享网络层shared layer的权重;
第i个任务的正则化梯度,即损失对W的梯度,然后再做L2-norm:

第i个任务的损失(第t步)与初设损失比率,用来代表学习速度:

第i个任务的相对学习速度:

注意事项

  1. 不同任务的初设损失:Li(0),对学习速度的计算影响很大。
    如果所有网络层有着稳定的参数初始化,则可以直接使用(第一次的损失);
    但如果Li(0)对参数初始化方式很敏感,在多分类中,则可以令Li(0) = log(C),C为分类数。

  2. 论文的流程是在每轮训练中,先通过反向传播进行不同任务损失的权重wi,再进行网络参数的更新。

动态权重平均(DWA)

相关论文

《End-to-End Multi-Task Learning with Attention》

核心思想

这篇论文提出了一种Dynamic Weight Average (DWA)的方法,它比较简单直接,与GradNorm不同,不需要计算梯度,而是只需要任务的损失。

  1. λk为任务的权重,即总的损失仍为所有任务的损失加权平均:Ltotal = ∑kλkLk
  2. wk则为上一轮以及上上轮的损失比率,代表不同任务的学习速率
  3. T起到平滑任务权重的作用,T越大,不同任务的权重分布越均匀。甚至T足够大的话,则λk ≈ 1,每个任务的权重相等
  4. K则是让所有任务的权重加权求和后为K:∑kλk = K。因为一般情况下不特殊处理的话,每个任务的权重都相等为1,那么所有任务加权之后便为K。

帕累托效率优化

相关论文

《A Pareto-Efficient Algorithm for Multiple Objective Optimization in E-Commerce Recommendation》

核心思想

这篇论文对总损失的定义仍然是所有任务的损失加权平均,但这个权重是经过正则化(scalarization)的:

不过,论文指出了不同任务会有不同的优先级,比如一个任务为点击预测,一个任务转化预测,那肯定转化预测的任务的优先级更高,因此,可以为不同任务的权重增加了一个边界条件:

wi ≥ ci, 0 < ci < 1, ∑Kci ≤ 1

我们的目标当然是让总损失即L(θ)最小,常规做法,对L(θ)求导,然后令其导数等于0,即为下式:

满足这种条件的解法称为Pareto stationary(帕累托平稳)

以上式子可以转化为:(K个wi▽θLi(θ)二范数之和的最小值即为0,最小化就是在往0逼近)

论文也给出了最优的任务的权重组合解法:

令wi = wi - ci,则不等式变成:

然后根据以上理论求出wi的所有解wi*,但是可能会出现负数的解。

由于上述求出的wi*可能为负,并且为了能够用上的解,最终转化为非负的最小二乘问题:

总结

以上论文都是为了解决不同任务的损失量级或者学习速度不同,求出最优的任务权重组合;

大致流程都相同:先对模型参数进行反向传播进行更新,再使用各自的算法更新任务权重。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号