谷歌 | 多任务学习,如何挑选有效的辅助任务?只需一个公式!

2021 年 10 月 12 日 夕小瑶的卖萌屋

文 | 小伟
编 | 小轶

前言

说到多任务学习,大家都不陌生,不管是在学术界还是工业界都已经有了很多成熟的探索与应用。在理想的多任务学习中,各个任务对彼此应当是有益,所有任务相互促进,从而达到超过单任务学习的效果。

但理想归理想,实际情况却并非如此。简单的把一堆任务堆积在一起往往会降低模型最终的性能,所以在多任务学习中,如何去有效地识别哪些任务在训练时结合在一起可以对彼此有益 成为了很关键的问题。

显而易见,我们可以直接搜索所有任务组合在一起构成的参数空间(N个任务对应2^N-1种可能性),但指数级的复杂度实在是让人无法接受。Google最近的这篇文章就对这个问题做出了比较好的解答。它提出了一种在多任务学习中高效决定哪些任务应当划分到一组进行训练的方法,在大规模的 Taskonomy 计算机视觉数据集上,不仅可以把测试集的 loss 降低10.0%,训练速度也是之前任务分组 SOTA 的 11.6 倍

论文标题:
Efficiently Identifying Task Groupings for Multi-Task Learning

论文链接:
https://arxiv.org/abs/2109.04617

概览

总体来看,训练可以分为四个部分:

  • 首先我们用一个单独的多任务模型来把 所有任务结合在一起训练
  • 其次在训练的过程中我们会 计算不同任务之间的亲和度(Inter-Task Affinity)
  • 当模型过完一遍所有的训练数据并且计算出任务两两之间的亲和度之后,我们通过某种算法来 对任务进行分组,使得 亲和度之和最大
  • 最后我们用分组之后的任务来进行训练以及预测。

第一部分与第四部分很容易理解,下面我们来具体看一下第二部分以及第三部分。

任务间亲和度

整个算法中最最关键的概念就是这个“任务间亲和度”了。任务间亲和度(Inter-Task Affinity),直白一点的讲的话,就可以理解为:在多任务学习中,用一个值来量化一个任务 对另一个任务 的正面或者负面影响

那具体怎么衡量呢?在本文中,作者提出:用任务 对共享参数的梯度更新对另一个任务 的 loss 影响的程度 来衡量两个任务的亲和度。

形式化地表达就是:考虑任务集合 , 共享参数 ,以及任务 的参数 , 其中 对于一个batch的训练数据 , 整体的训练loss

其中 是任务 对应的loss 那么对于在训练时刻 的一个batch的训练数据 , 当我们用某个任务 的loss对共享参数 进行一次梯度更新后,得到新的共享参数

然后我们就可以用新的共享参数 , 训练数据 以及另一个任务 的参数 来计算共享参数更新之后任务 新loss

与共享参数更新之前任务 旧loss 进行比较,就可以得到任务 对任务 的亲和度

如果亲和度大于0,说明任务 对共享参数的此次梯度更新会降低另一个任务 的loss,对应着正面影响; 相反如果小于0,说明 对共享参数的更新会提高 的loss,对应着负面影响。

这样,我们对训练数据进行一次迭代,就可以获得最终所有任务 两两之间的亲和度

任务分组

不要忘记我们最终的目标是——把任务进行分组。在得到任务两两之间的亲和度之后,我们要怎么对任务进行分组呢?

我们先定义两个概念:

  • 目标任务(Serving-time Task):也就是最后真正要测试的任务。它是所有任务集合 的子集。
  • 任务亲和度(Task Affinity):对于某个任务 来说,其任务亲和度为 所属的组内其他所有任务对其亲和度之和。

这样,分组问题就转化为:把所有任务划分为 组,使得所有目标任务的任务亲和度之和最大。文中提出我们可以通过利用分支定界法或者0-1整数规划来解决该问题。

然而很悲伤的是,这是一个NP-hard问题。当任务数量较多时,时间复杂度会非常高。

实验结果

实验结果非常给力(TAG是本文方法),总结一下的话主要有一下两点:

  • TAG分组方法比之前分组方法的多任务学习 效果更好,在CelebA上有更少的测试错误以及在Taskonomy上有更低的测试loss
  • TAG分组方法 更加高效,训练速度可以是之前方法的10几甚至20多倍

总结

本文提出了一种只需要对训练数据进行一次迭代就可以计算出任务间亲和度的方法,利用该亲和度来衡量任务间的相互影响并进行任务组的划分,在多任务学习的效果以及效率上都超过了之前方法很多。作者同时也希望这篇文章可以给多任务学习中任务组的划分带来更多的关注,希望可以在这一方向上有更多的探索与发展。

思考

虽然多任务学习不管是在学术界还是工业界都已经有了比较成熟的应用,但现在多任务学习还是比较依赖于充足的先验知识,很多情况下都需要人事先判断任务之间是不是可以相互促进的。然而人的知识毕竟是有限的,所以很多情况下并不能做出很准确的判断以及划分,从而对多任务学习的性能造成负面的影响。所以如果能有一种可以简易快捷的判断几个任务是不是应该结合在一起学习的方法,相信会给多任务学习带来质的提高,它的应用也会更加的广泛与方便。

从刚才的介绍我们也可以看出,虽然本文的方法只需要对训练数据进行一次迭代就可以对任务进行分组,但复杂度还是蛮高的(亲和度计算以及组的划分),所以感觉如何把复杂度再降低一些将会是非常有前景的未来研究方向。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

登录查看更多
0

相关内容

多任务学习(MTL)是机器学习的一个子领域,可以同时解决多个学习任务,同时利用各个任务之间的共性和差异。与单独训练模型相比,这可以提高特定任务模型的学习效率和预测准确性。多任务学习是归纳传递的一种方法,它通过将相关任务的训练信号中包含的域信息用作归纳偏差来提高泛化能力。通过使用共享表示形式并行学习任务来实现,每个任务所学的知识可以帮助更好地学习其它任务。
【ICLR2022】基于任务相关性的元学习泛化边界
专知会员服务
18+阅读 · 2022年2月8日
专知会员服务
18+阅读 · 2021年9月13日
专知会员服务
25+阅读 · 2021年5月23日
《多任务学习》最新综述论文,20页pdf
专知会员服务
123+阅读 · 2021年4月6日
专知会员服务
19+阅读 · 2021年3月12日
专知会员服务
29+阅读 · 2020年9月18日
多任务学习漫谈:行梯度之事
PaperWeekly
0+阅读 · 2022年2月18日
多任务学习漫谈:以损失之名
PaperWeekly
1+阅读 · 2022年1月26日
输入梯度惩罚与参数梯度惩罚的一个不等式
PaperWeekly
0+阅读 · 2021年12月27日
吴恩达团队:神经网络如何正确初始化?
AI100
10+阅读 · 2019年5月15日
谷歌BERT模型深度解析
AINLP
42+阅读 · 2018年11月15日
如何找到最优学习率?
AI研习社
11+阅读 · 2017年11月29日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
5+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
VIP会员
相关VIP内容
【ICLR2022】基于任务相关性的元学习泛化边界
专知会员服务
18+阅读 · 2022年2月8日
专知会员服务
18+阅读 · 2021年9月13日
专知会员服务
25+阅读 · 2021年5月23日
《多任务学习》最新综述论文,20页pdf
专知会员服务
123+阅读 · 2021年4月6日
专知会员服务
19+阅读 · 2021年3月12日
专知会员服务
29+阅读 · 2020年9月18日
相关资讯
多任务学习漫谈:行梯度之事
PaperWeekly
0+阅读 · 2022年2月18日
多任务学习漫谈:以损失之名
PaperWeekly
1+阅读 · 2022年1月26日
输入梯度惩罚与参数梯度惩罚的一个不等式
PaperWeekly
0+阅读 · 2021年12月27日
吴恩达团队:神经网络如何正确初始化?
AI100
10+阅读 · 2019年5月15日
谷歌BERT模型深度解析
AINLP
42+阅读 · 2018年11月15日
如何找到最优学习率?
AI研习社
11+阅读 · 2017年11月29日
相关基金
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
5+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
Top
微信扫码咨询专知VIP会员