1、多任务学习优化面临的问题
多任务学习经常会出现跷跷板现象,即两个任务联合学习的时候,可能一个任务效果变好,另一个任务效果变差。究其本质,核心是训练过程中存在以下3个方面问题:
- 多任务梯度方向不一致:同一组参数,不同的任务更新方向不一致,导致模型参数出现震荡,任务之间出现负迁移的现象,一般出现在多个任务之间差异较大的场景;
- 多任务收敛速度不一致:不同的任务收敛速度不一样,有的任务比较简单收敛速度快,有的任务比较困难收敛速度慢,导致模型训练一定轮数后,有的任务已经overfitting,有的任务还是underfitting的状态;
- 多任务loss取值量级差异大:不同的任务loss取值范围差异大,模型被loss比较大的任务主导,这种情况在两个任务使用不同损失函数,或者拟合值的取值差异大等情况下最为常见。
2、多任务设计
比较容易想到的是,多目标loss设计要满足以下两点,避免被某个任务主导:
- 各任务loss量级接近,最好一致;(值域量级接近),loss量级可以使各任务loss除以对应的初始loss(交叉熵损失/L2)
- 各任务以相近的速度进行学习。(学习速度接近), 速度即相邻迭代次数对应的loss的比值,值越小则速度越高
- 各个任务间设置权重
2.3、多任务学习中各 loss 权重应该如何设计
AI上推荐 之 多任务loss优化(自适应权重篇)_翻滚的小@强的博客-CSDN博客
ShowMeAI知识社区深度学习中的multi task learning——optimization strategy部分 - 知乎
多任务学习优化(Optimization in Multi-task learning) - 知乎
PCGrad方法:深度学习的多个loss如何平衡? - 知乎
多任务学习——【ICLR 2020】PCGrad_小爷毛毛(卓寿杰)的博客-CSDN博客
任务不确定性:关于多任务学习中的均衡loss方法之一 - 算法之道
作者自己的方法,没有论文,仅供参考:
2.2、通过梯度优化提升多任务学习效果的方法
针对上述多任务学习优化过程中的问题,业内有一系列的工作进行解决。今天给大家介绍4篇通过梯度优化提升多任务学习效果的方法。
具体参考: 多任务学习中各loss权重应该如何设计呢? - 知乎
2.3 Using Uncertainty to Weigh Losses
Uncertainty Loss不确定损失_CharpYu的博客-CSDN博客
2.4、多任务分析解决
参考文章: