©PaperWeekly 原创 · 作者 |
苏剑林
多任务学习是一个很宽泛的命题,不同场景下多任务学习的目标不尽相同。在《多任务学习漫谈(一):以损失之名》和《多任务学习漫谈(二):行梯度之事》中,我们将多任务学习的目标理解为“做好每一个任务”,具体表现是“尽量平等地处理每一个任务”,我们可以称之为“平行型多任务学习”。然而,并不是所有多任务学习的目标都是如此,在很多场景下,我们主要还是想学好某一个主任务,其余任务都只是辅助,希望通过增加其他任务的学习来提升主任务的效果罢了,此类场景我们可以称为“主次型多任务学习”。
在这个背景下,如果还是沿用平行型多任务学习的“做好每一个任务”的学习方案,那么就可能会明显降低主任务的效果了。所以本文继续沿着“行梯度之事”的想法,探索主次型多任务学习的训练方案。
目标形式
在这篇文章中,我们假设读者已经阅读并且基本理解《多任务学习漫谈:行梯度之事》里边的思想和方法,那么在梯度视角下,让某个损失函数保持下降的必要条件是更新量与其梯度夹角至少大于 90 度,这是贯穿全文的设计思想。
现在假设主次型多任务学习场景下,我们有
个任务的损失函数,分别为
,其中
是主任务损失,我们希望它越小越好;而
是辅助损失,相当于正则项,我们只希望它在训练过程中不要往上升的方向走,但不一定要“拼了命地变小”。
这里
是对应损失的梯度。如果没有其他约束,那么将会解得
,这就是普通的梯度下降。但事实上我们还有辅助任务
,我们希望它们不要往上升的方向走,所以至少还要保证
,它们是优化的约束条件,从而总的目标是
求解这个约束优化问题,就可以得到满足条件的更新量。
求解这种带约束优化问题的标准方案是拉格朗日乘子法,简称“拉氏乘子”,它将约束条件整合到目标函数中,转化为一个 min-max 问题:
这里约定对
的求和是从
到
。怎么理解这个转换呢?假如
,那么
这一步就只能得到
,因为只有
能使得它取最小,此时
;如果
,那么自然地
;如果
,那么
这一步就会得到
,此时
。但是别忘了,
的优化是取
的,所以在0与
之间,它自然会选择0,也就是完成该 min-max 优化后,必然自动地有
以及
。这意味着 min-max 的优化结果跟原来带约束的 max 优化完全等价。
为了方便后面的推导,这里引入跟上一篇文章类似的记号:
至此,我们将主次型多任务学习的更新方向求解转化为了一个 min-max 问题 (5)。接下来,跟上一篇文章的方式类似,我们先通过 Minimax 定理来交换
和
的次序,然后进一步通过 Frank-Wolfe 算法给出求解方式,最后我们会比较它跟它跟上一篇文章结果的异同。
注意到问题(5)的
和
是有次序的,正常来说必须要先完成
这一步后才能再做
这一步,贸然交换次序可能会得到错误的结果。然而,
这一步是有约束的优化,而
这一步是无约束的,因此相对来说
确实简单一些。如果我们能交换次序,先进行
这一步,那么问题就可以得到简化。
所以,我们需要先判断两者的次序能否交换。幸运的是,冯·诺依曼提出了美妙的 Minimax 定理
[1]
,它告诉我们如果
和
的参数可行域都是一个凸集,并且目标函数关于
的参数是凸的、关于
的参数是凹的,那么
和
的次序就可以交换。更幸运的是,容易看出问题(5)满足 Minimax 定理的条件,从而它等价于
这样我们就将问题简化为只有
操作了,其中等号右边是因为左边的目标函数只是关于
的二次函数,它的最大值在
取到,代入即得等号右边结果。
现在问题变成了求
与
的最小模长的加权叠加。按照惯例,我们先试着解决最简单的情形,即
时的
,它有着形象的几何意义和简单的解析解。
▲ 简单例子的精确解
如上图所示,共有两种情形:第一种情形是
,这说明
与
本就不冲突,所以直接取
就行;第二种情形是
,从上面右图可以看出,
的最小值在
与
垂直时取到,于是由
解得
。最后,当
时,也可以统一写成
接下来我们处理一般情形,其思想依然源自 Frank-Wolfe 算法
[2]
。
首先,我们通过 找出下一步更新的可行方向
。接着,我们进行一维搜索,但跟之前不同的是,这次不是在
与
之间插值搜索,而是直接重新确定
对应的系数,也就是说,我们直接在
中把
部分删掉,然后重新用
情形的算法重新计算
对应的系数。
至此,我们完成了本文所探究的主次型多任务学习的求解。对于认真推导过两篇文章的数学结果的同学来说,定然会感觉到平行型和主次型的方法和结果都非常相似。事实上确实如此,它们有诸多相似之处,但细微之处又有不同。
为了加深大家的理解,我们可以将这两种多任务学习的异同对比如下:
经过这样对比,我们也不难将结果推广到有
个主任务、
个辅任务的混合型多任务学习,其对偶结果是:
在这一节中,我们通过几个例子说明,很多常见的问题都可以对应到这种有主次之分的多任务学习中,某种意义上来说,主次型多任务学习可能比平行型多任务学习更为常见。
最常见的例子可能是往任务损失函数里边加入的正则项,比如 L2 正则:
如果我们将
和
看成是两个任务的损失,那么这也可以视为一个多任务学习问题。很显然,我们并没有想要
越小越好,而只是希望
的加入能够提高
的泛化性能,所以这就无法对应上平行型多任务学习,而更贴近主次型多任务学习了。
L2 正则项
的梯度比较简单,就是
。那么,套用本文的结果(7),我们可以修改优化器,将梯度项改为
这样就可以实现往模型里边加入 L2 正则但又不用调正则项系数
了。当然,也可以像 AdamW 那样直接对原本的更新量进行处理,实现解耦形式的权重衰减(Decoupled Weight Decay)。
当然,除了这种对参数的直接正则外,还有很多其他形式的辅助损失,比如有往分类模型加入对比学习损失的、有往生成模型加入长度惩罚的,等等。这些做法多多少少都可以对应上主次型多任务学习中,因此可以尝试套用本文的结果。如果觉得完整梯度的计算量较大,那么也可以跟上一篇文章一样,对“共享编码”的情形进行近似来降低计算量。
此外,有一种常见的训练场景,大家可能没意识到它是一个多任务学习问题,但它本质上确实也可以视为多任务学习问题来理解,那就是“带噪学习”。
假设对于同一种任务,我们只有少量精标的干净数据,但同时有大量的噪声数据。由于噪声数据较多,所以我们倾向于以噪声数据为主进行学习,假设对应的损失为
。然而,由于数据中存在噪声,因此纯粹最小化
未必能得到理想的模型,它可能把错误的标注也背下来了。这时,干净数据就可以派上用场了,我们可以用干净数据算一个损失
。由于干净数据的噪声较少,可以认为
比
更能反映模型的真实性能,那么我们就可以增加一个限制:
不管怎么最小化
,都不能让
上升。换句话说,你可以用噪声数据训练,但不能让干净数据的效果变差。
这刚好就是以
为主、
为辅的主次型多任务学习问题!
无独有偶,去年 Google 的一篇论文《Gradient-guided Loss Masking for Neural Machine Translation》
[3]
也给出了类似做法,但细节略有不同。它是通过算每个噪声样本对参数的梯度,只保留与干净数据梯度
夹角小于 90 度(内积大于 0)的样本。也就是说,大家都是以与干净数据梯度的内积为判断依据,不同的是,主次型多任务中,如果内积小于 0,则对更新量做一个修正,而在 Google 的文章中,则是直接删掉对应的样本。
本文将前一篇文章的平行型多任务学习的结果推广到了“主次型”多任务学习,即多任务学习的目标不再是做好所有的任务,而是以某个任务为主、其余任务为辅,其结果跟原来的平行型多任务学习有不少相似之处,但细微之处又不尽相同,最后介绍了主次型多任务学习的一些经典例子,如正则项、带噪学习等。
[1] https://en.wikipedia.org/wiki/Minimax_theorem
[2] https://en.wikipedia.org/wiki/Frank–Wolfe_algorithm
[3] https://arxiv.org/abs/2102.13549
感谢 TCCI 天桥脑科学研究院对于 PaperWeekly 的支持。TCCI 关注大脑探知、大脑功能和大脑健康。
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱:hr@paperweekly.site
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧