输入“/”快速插入内容

多目标/多任务建模

2024年4月7日修改
1.
背景
在NLP、CV、搜推广等场景下,经常面临着多个指标全都要的问题,而通常多个目标会存在冲突性。譬如,在电商搜索中,既要提高点击率又要增加转化率;视频推荐中,既要点击率又要完播率。
如何有效地平衡多种指标,使其同时得到提升,就是多任务多目标需要研究的问题。
Multi-Task Learning:多任务学习建模多个任务之间的关联关系,任务输入可以是不同的feature/sample,如BERT的MLM预训练任务与NSP任务,两个任务先后训练,输入是不同的feature和sample。这是Multi-Input & Multi-Output (MIMO) 的类型,常用的训练模式是pre-train+finetuning 和 多任务co-train交替训练。
Multi-Label Learning:还有一种是Single-Input & Multi-Output (SIMO) ,就是非常常见的Multi-Label Learning,建模相同feature、相同Sample上多个label之间的关系。也常称之为多目标Multi-Objective。如CV领域中,对同一image,可以同时对semantic classification,depth regression,instance regression等诸多经典任务目标共同学习。CTR领域,对同一输入样本同时预估点击率、转化率多个目标。常用的训练模式是Joint-train的模式。本文后面称的多任务多目标学习,默认是这种建模方式。
多目标学习的模型,有四种结果,
well done:所有任务目标均获得提升;
还不错:所有任务目标效果不降低,至少一个任务有提升;
不理想:跷跷板现象,有跌有涨
无法接受:负迁移现象,所有任务均下降
所以,多任务的挑战就是如何将状态三和四 转移成 状态一和二。众所周知,多任务最关键的一点是『参数共享』,因此,引出了领域研究的核心问题:如何能够利用好“共享参数”,让多个任务和谐共存、相辅相成、相得益彰
2.
多任务多目标技术方案
研究上述核心问题,有两个方向,一个是Architectures,一个是Optimization Strategy,如下图所示。
Architectures:从网络结构设计方向思考哪些参数共享,在什么位置,如何共享
Optimization Strategy:多目标优化策略从loss、Gradient的视角去思考任务与任务之间的关系。平衡loss体量(Magnitude),调节loss更新速度(velocity),优化Gradient更新方向(direction)。在微观层面缓解梯度冲突,参数撕扯,在宏观层面达到多任务的balance
3.
多任务多目标网络结构
多任务的网络结构,常用的主要有以下几种
Shared-Bottom:在整个网络底层模块hard的参数共享
MoE/MMoE:将shared bottom分解成多个Expert,然后通过门控网络自动控制不同任务对这些Expert的梯度贡献。
PLE:在MMoE的基础上又为每个任务增加了自有的Expert,仅由本任务对其梯度更新。
3.1
Shared-Bottom
网络结构非常容易理解,多个任务共用一个Encoder,上层不同任务有自己的网络。