假设你在学习一门新的外语。在学习语法的同时,你也在积累词汇;在练习听力时,口语能力也在提升;阅读文章帮助你理解文化背景,这又反过来帮助你更好地理解对话。语言学习的各个方面是相互关联、相互促进的。这就是多任务学习(Multi-Task Learning, MTL) 的思想——通过同时学习多个相关任务,让它们相互帮助,达到比单独学习更好的效果。
在机器学习中,传统方法是为每个任务训练独立的模型。要做情感分析,训练一个情感分类器;要做命名实体识别,训练一个序列标注模型;要做文本蕴含,训练一个句对分类模型。每个模型从头学习,即使这些任务有很多共性(都需要理解语法、语义、上下文)。
多任务学习改变了这个范式。它让多个任务共享部分模型参数(通常是底层的编码器),强迫这些共享参数学习对所有任务都有用的通用表示。这带来了多重好处:参数效率更高(一个编码器服务多个任务)、泛化能力更强(任务间的互补性起到正则化作用)、数据效率提升(一个任务的数据帮助其他任务)。

最直观的多任务学习架构是硬参数共享(Hard Parameter Sharing):
所有任务共享一个底层编码器(如BERT),然后各自有独立的任务特定输出层。训练时,不同任务的loss加权求和,联合优化整个模型:
这个设计基于一个假设:存在一个对所有任务都有用的共享表示。例如,理解句子的语法结构对情感分析和命名实体识别都有帮助;识别实体边界对问答和关系抽取都重要。
硬参数共享的优点是简单、参数效率高(共享编码器)、正则化效应强(Baxter在1997年证明,共享参数降低了过拟合风险)。缺点是如果任务差异太大,强行共享可能伤害性能——不同任务可能需要不同的表示,强迫它们使用同一编码器会导致冲突。
软参数共享(Soft Parameter Sharing) 给每个任务独立的模型,但鼓励参数保持相似:
第二项是正则化,惩罚不同任务参数差异过大。这给了模型更多灵活性——任务可以有不同的参数,但不会完全独立。
实践中,软参数共享较少使用,因为它需要更多参数和计算。硬参数共享通常已经足够好。
多任务学习中最棘手的问题之一是:如何平衡不同任务的重要性?
简单相加往往不合理,因为不同任务的loss尺度可能差异巨大。情感分类的loss可能在0-2之间,而命名实体识别的loss可能在10-20之间。简单相加会让第二个任务主导训练,第一个任务被忽视。
Kendall等人(2018)提出了一个优雅的解决方案:将任务权重视为可学习的参数,并用**同方差不确定性(homoscedastic uncertainty)**来解释:
其中是任务的不确定性,作为模型参数学习。第一项说:不确定性大的任务(大)应该被降权;第二项防止模型简单地让所有趋向无穷(那样第一项就全为0了)。
这个方法的美妙之处在于自适应性——困难的任务会自动获得较低权重(因为学习其不确定性较高),简单的任务获得较高权重。而且无需手动调节超参数。
另一个策略是归一化每个任务的梯度:
这确保每个任务对共享参数的影响相当,不会因为loss尺度差异而让某个任务主导。实践中,这个方法简单有效,在许多场景下与不确定性加权效果相当。

2019年,微软提出了MT-DNN(Multi-Task Deep Neural Network),将多任务学习与BERT预训练结合,在GLUE基准的多个任务上达到了新的最佳水平。
MT-DNN的架构很简单:底层是BERT编码器(在大规模文本上预训练),顶层是任务特定分类器。训练时,在多个GLUE任务(句子分类、句对分类、相似度回归等)上联合微调。
关键发现是:多任务微调比单任务微调效果更好。即使每个任务都有充足的训练数据,MTL仍然带来1-2%的性能提升。这表明任务间确实存在有益的知识共享——即使在预训练已经学到丰富知识的情况下,不同任务仍能相互促进。
更重要的是,MT-DNN在域适应上表现出色。当迁移到新领域时,MT-DNN比单任务BERT需要更少的标注数据,这表明多任务学习学到了更通用、更鲁棒的表示。
多任务学习并非总是有益。有时联合训练会导致负迁移(Negative Transfer)——某些任务的性能反而低于单独训练。
负迁移通常发生在:
应对策略包括:任务分组(只让相似任务共享参数)、自适应权重、任务特定层(不是所有层都共享)。
不是任意任务组合都适合MTL。选择任务时需要考虑:
一个经验法则:从2-3个相关任务开始,验证MTL有效后再逐步添加任务。
从认知科学或机器学习理论角度,解释为什么多任务学习能提升性能。
在什么情况下会发生负迁移?如何检测和避免?
实现一个多任务模型,同时训练情感分析和命名实体识别。比较与单任务训练的性能差异。