算法小白菜

多任务模型融合如何平衡?

2022-01-11  本文已影响0人  林桉

平衡目标

废话少说 上图个球的


image.png

1. 加权融合

1.1 手动加权

image.png

人肉调权重。

1.2 动态加权平均

核心思想:利用loss变化率,平衡多任务学习速度。
[End-to-End Multi-Task Learning with Attention],CVPR 2019,Cites:107
https://arxiv.org/pdf/1803.10704v1.pdf
实现:
https://github.com/lorenmt/mtan
本文提出了一种新的多任务学习体系结构,允许学习特定任务的特征级注意力。提出了MTAN(Multi-Task Attention Netwrok)网络,由一个包含全局特征池化的共享网络和基于特定任务的soft-attention模块组成。这些模块从全局共享特征中学习特定任务的特征,同时允许特征在不同任务间共享。
MTAN结构主要包括两大部分,一个任务共享的主网络和K个特定任务的子网络,共享网络可以根据特定的任务进行设计,而每个特定于任务的子网络由一组注意力模块组成,这些模块与共享网络相连接。每个注意力模块对共享网络的特定层应用一个soft attention mask,以学习特定于任务的特征。基于这种设计,共享主网络可以看做是一个跨任务的特征表示,每一个attention mask都可以被看作是对主网络的特征选择器,决定哪些共享特征被用到自己的子任务中去。

image.png
最后损失函数:
image.png
作者尝试了不同的权重方案对模型效果的影响
image.png
DWA,使每个子任务首先计算前个epoch对应损失的比值,然后除以一个固定的值T,进行exp映射后,计算各个损失所占比。
image.png
K代表任务的数量;T是一个常数,T=1时,w等同于softmax的结果;T足够大时,w趋近1,各个任务的loss权重相同。该方法,只需要记录不同阶段的loss值,从而避免了为了获取不同任务的梯度,运算较快。

2. loss梯度数量级差异

loss值的大小不重要,重要的是每一个loss产生的梯度的数量级不能差的特别大。如果梯度数量级差的很多的,可以给loss加权重。

2.1 梯度正则化

《Gradnorm: Gradient normalization for adaptive loss balancing in deep multitask networks》,ICML 2018,Cites:177
https://arxiv.org/abs/1711.02257
核心思想:
同时考虑标签损失与梯度损失,同时将梯度表示为权重的函数,进行全局标准化优化。
实现:
https://github.com/brianlan/pytorch-grad-norm
与静态加权不同,我们认为多任务的w是对于参数t的函数,且有不同的wi(t)对多任务分配loss权重。

image.png
本文定义了两种类型的损失:标签损失和梯度损失,独立优化,不进行叠加。Label Loss即多任务学习中,每个任务的真实的数据标签与网络预测标签计算的loss。Gradient Loss,用来衡量每个任务的loss的权重 wi(t)的好坏,Gradient Loss是关于权重wi(t)的函数。t表示网络训练中的第t步,权重为关于t的一个变量。
image.png

2.2差异化学习率

对于多任务损失减小速度不一致的情况,需要自适应多任务的学习率,在 Adagrad, RMSProp, Adam 等等优化算法中,自适应学习率主要针对高维空间模型参数变化不同的方向,使用不同的学习率。
对更新快的任务,使用小一点的学习率,对更新慢的任务,使用大一点的学习率。


image.png

trick:


image.png

3. 引入Bayesian框架下的平衡

3.1 确定性平衡

尤其针对于多任务指标提升有跷跷板现象的模型,如ESSM模型在做CTR、CVR目标时,引入pCTR与pCTCVR,可以基于先验任务的估计可以作为下游任务的一个特征,从而组合loss。

3.2 动态任务优先级

[Dynamic task prioritization for multitask learning],ECCV 2018,Cites:53
https://openaccess.thecvf.com/content_ECCV_2018/papers/Michelle_Guo_Focus_on_the_ECCV_2018_paper.pdf
本文提出了多任务学习的动态任务优先级。这允许模型在训练过程中动态的对困难任务进行优先级排序,其中困难任务与性能成反比,并且困难随着时间的推移而变化。与传统认知上优先学习简单任务相反,本文通过多个实验证明了优先学习困难任务的重要性。
核心思想:DTP以为更难的任务对模型影响程度更高,希望让更难学的任务具有更高的权重。
引入几个概念:

image.png

3.3不确定性平衡

本文希望让“简单”的任务有更高的权重。
贝叶斯建模中存在的两类不确定性:

对每个task,受限于任务数据与模型刻画能力,都存在task相关的不确定性,不确定性被量化为模型输出与样本标签之间的噪声。
[Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics]
https://arxiv.org/abs/1705.07115v3
实现: https://github.com/yaringal/multi-task-learning-example/blob/master/multi-task-learning-example.ipynb
基础假设:

  1. 回归任务,噪声服从高斯分布,噪声强弱衡量指标高斯分布方差。
  2. 分类任务,噪声服从玻尔兹曼分布,衡量标准为热力学温度。(这个在原文中没有展开)
    // 回归任务不确定性


    image.png

    // 分类任务不确定性


    image.png
    组合loss:
    image.png
    image.png
image.png

取log类似于正则项,防止不确定性估计过大,能够将不确定性压缩在一定数值范围内,不确定性估计越大,任务的不确定性越大,则任务的权重越小,即噪声大且难学的任务权重会变小。
猜想:
与梯度正则化不同的是,不确定性估计


image.png

收敛受到初始化的影响较小,是否可以在梯度正则化中L(0)初始化时引入对不确定性的估计。

4. 梯度冲突系列方法

之前的有关梯度的多任务融合方式,主要针对任务loss梯度量级差异、不同任务学习速度差异而做研究,更进一步,讨论梯度更新方向与梯度更新冲突的方法,正high起来。

从帕累托解集的角度来看

其实,从梯度角度出发的MTL平衡研究主要在讨论,梯度从量化差异上升到多维空间离散解集,再到连续解集的过程。


image.png

从梯度冲突问题角度来看

1. 不同任务梯度之间的更新方向不同引起的梯度冲突,引出了本模块要讲的内容
2. 非方向性冲突,由于梯度大小不同,如果一个梯度特别大,另一个梯度特别小,那么较大的梯度会形成主导从而影响较小梯度。
3. 在曲率很大的位置,高梯度值的任务的改进可能被高估,而高梯度值的任务的性能下降可能被低估

4.1 PCGrad

https://arxiv.org/pdf/2001.06782.pdf
实现:
https://github.com/tianheyu927/PCGrad

  1. 首先,计算任务i梯度和随机一个其他任务j梯度之间的余弦相似度,如果为负值表示是相互冲突的梯度,如上图(a)
  2. 如果余弦相似度为负值,则通过下式计算任务i梯度在任务j梯度的法线平面上的投影(如上图(b)):


    image.png
  3. 如果梯度没有冲突,即余弦相似度为非负,则直接使用原始梯度即可,如上图d。
  4. 选择另外一个任务,作为任务i,重复上述流程,直到所有任务的梯度都修正过一遍。
  5. 将各任务修正后的梯度相加,得到最终的梯度。

4.2 MGDA 帕累托单解

Multiple-gradient descent algorithm (mgda) for multiobjective optimization. Comptes Rendus Mathematique, 350:313–318, 2012.
实现:
在MMOE模型里增加MGDA的玩法。
https://github.com/king821221/tf-mmoe-mgda

image.png

4.3 CAGrad多梯度优化

https://papers.nips.cc/paper/2021/file/9d27fdf2477ffbff837d73ef7ae23db9-Paper.pdf
实现:
https://github.com/Cranial-XIX/CAGrad
核心思想:
通过构造新的梯度更新方向来避免梯度冲突,但之前出现的梯度修正算法往往偏离了最小化平均loss的目标,导致最终结果无法收敛到全局最优。文章在平均梯度方向邻域内求解梯度更新方向,最大化所有子目标中最小的局部提升。

5. 帕累托平衡

多目标优化的解通常是一组均衡解(即一组由众多 Pareto最优解组成的最优解集合 ,集合中的各个元素称为 Pareto最优解或非劣最优解)。

5.1 几个概念:

5.2 方法论

多目标优化问题不存在唯一的全局最优解 ,过多的非劣解是无法直接应用的 ,所以在求解时就是要寻找一个最终解。

  1. 生成法,即先求出大量的非劣解,构成非劣解的一个子集,然后按照决策者的意图找出最终解;(生成法主要有加权法﹑约束法﹑加权法和约束法结合的混合法以及多目标遗传算法)。
  2. 交互法,不先求出很多的非劣解,而是通过分析者与决策者对话的方式,逐步求出最终解。
    3.目标重要度,算法以此为依据,将多目标问题转化为单目标问题进行求解。
  1. 传统优化算法包括加权法、约束法和线性规划法等,实质上就是将多目标函数转化为单目标函数,通过采用单目标优化的方法达到对多目标函数的求解。
  2. 智能优化算法包括进化算法(Evolutionary Algorithm, 简称EA)、粒子群算法(Particle Swarm Optimization, PSO)等。
    两者的区别——传统优化技术一般每次能得到Pareo解集中的一个,而用智能算法来求解,可以得到更多的Pareto解,这些解构成了一个最优解集,称为Pareto最优解(任一个目标函数值的提高都必须以牺牲其他目标函数值为代价的解集)。

5.3 帕累托多解

https://proceedings.neurips.cc/paper/2019/file/685bfde03eb646c27ed565881917c71c-Paper.pdf
该文章提出多个 Pareto 解的重要性,但由于没有利用 Pareto 前沿的性质,该方法生成的每一个解都是从头训练的,并且无法形成连续的 Pareto 前沿。

image.png

5.4 连续帕累托优化

paper:
https://arxiv.org/pdf/2006.16434.pdf
视频:
https://icml.cc/virtual/2020/poster/5856

  1. 利用 Hessian 矩阵对多目标问题的 Pareto 集(权衡多目标的理论最优集)进行一阶近似,并实验说明沿该近似方向更新可以使已有的 Pareto 解保持其性质。
  2. 提出使用 Hessian 向量积(Hessian-Vector Product)和 Krylov 子空间迭代法(共轭梯度法就是其中的一种)来高效解决上述近似问题,并将该方法应用于深度学习。
  3. 对生成的 Pareto 集进行线性插值,并由此得到无穷多的连续一阶近似解,以满足多目标问题下的不同偏好。
  1. MINRES
  2. 无需显式构造左侧矩阵,只需要调用它和一个向量的点积。
  3. 迭代求解,可以 early-stopping 加快求解速度。
  1. 计算复杂度高,任务数量无法过度扩展,但这个面对一般工程3-4task其实还好。
  2. 在 Pareto 局部连续性的假设上进行的操作,但深度过参数化网络往往高度非线性,难以从一个局部 Pareto 曲面跳到另一个局部 Pareto 曲面,容易陷入某 Pareto 曲面的局部最优解。

仅供学习 无关利益 大论灌水 宝刀屠龙

REF:
https://www.zhihu.com/question/359962155/answer/928941168
https://zhuanlan.zhihu.com/p/362860026
https://www.zhihu.com/question/293188597/answer/1183278070
https://zhuanlan.zhihu.com/p/425672909
https://zhuanlan.zhihu.com/p/56613537
https://www.yanxishe.com/columnDetail/26367
https://www.zhihu.com/question/294635686/answer/606259229
https://www.zhihu.com/question/375794498/answer/1052779937
https://zhuanlan.zhihu.com/p/269492239
https://zhuanlan.zhihu.com/p/56986840
https://blog.csdn.net/Leon_winter/article/details/105014677
https://zhuanlan.zhihu.com/p/82234448
https://zhuanlan.zhihu.com/p/71012037
https://zhuanlan.zhihu.com/p/159000150
https://blog.csdn.net/weixin_43202635/article/details/82700342
https://www.zhihu.com/search?type=content&q=Pareto%20Multi-Task%20Learning
https://zhuanlan.zhihu.com/p/442858141
https://zhuanlan.zhihu.com/p/395220852
https://zhuanlan.zhihu.com/p/258327403
https://www.zhihu.com/column/c_1360363335737843712

上一篇 下一篇

猜你喜欢

热点阅读