要做一个既能识别物体、又能判断距离的模型,是分别训两个,还是一起训一个?多任务学习(Multi-Task Learning)给出的答案是后者:用同一套模型参数,同时学习多个相关任务,让它们共享底层能力。这个看似简单的选择,直接影响模型效果、训练成本,也是大模型「一个模型什么都能干」背后的思想来源之一。
一句话理解:一套参数学多个任务
多任务学习指用一套模型参数同时学习多个任务,通常是「共享底层、分工上层」的结构:底层参数负责提取通用的特征,多个任务各自有一个轻量的输出头,负责把通用特征映射到各自的结果上。训练时,多个任务一起反向传播、共同更新这套共享参数。相比每个任务单独训一个模型,它只维护一套主干,部署和维护都更省。
为什么可能更好:共享与约束
多任务学习的三个好处都来自「共享」。第一是互相补充:相关任务之间可以互相提供线索,比如「识别物体」和「判断位置」都是视觉理解,学到的底层特征能共用。第二是防止过拟合:多个任务的约束叠加在一起,让模型不容易只记住某一个任务的偏门规律,相当于给参数加了一层「多角度」的约束。第三是省资源:一个模型干几件事,比分别训三个模型占用更少的显存和运维成本,也不同于多模型聚合那种一个入口接多家模型的做法——前者是共用一个主干,后者是把多个现成模型拼在一起。它和多模态融合也有相通之处——都在想办法让不同信息源共用一份底层表示。
关键前提:任务要相关
多任务学习不是「任务越多越好」,任务之间必须相关,否则会互相拖累。相关任务互相促进,不相关任务互相干扰。判断标准可以看两条:底层特征能不能共用、训练信号会不会冲突。
| 任务组合 | 是否相关 | 共享什么 | 预期结果 |
|---|---|---|---|
| 识别物体 + 判断位置 | 相关(都是视觉理解) | 底层视觉特征 | 互相促进,效果更好 |
| 文本分类 + 情感分析 | 相关(都是文本理解) | 底层语义特征 | 通常互相促进 |
| 识别物体 + 翻译文本 | 不相关(跨模态且跨任务) | 几乎没有可共享特征 | 互相拖累,各干各的 |
三类难点:为什么落地要调
多任务学习听着理想,落地却有三道坎。第一是任务权重难调:哪个任务更重要,需要反复试验,权重设不好,模型会偏向某一个任务。第二是可能互相拖累:一个任务的训练梯度会干扰另一个任务,尤其是任务相关性不高的时候。第三是调试困难:出问题时,很难判断是哪个任务拖了后腿。它和多智能体协作形成对照——一个是让一个模型分担多件事,一个是让多个智能体各自分工,各自的坑也不一样。
它做不到什么:不相关任务的拖累
多任务学习有明确的失效边界。一旦任务之间不相关,共享参数反而成了负担:A 任务的更新会破坏 B 任务已经学好的表示,两个任务都学不好。任务数量也不是越多越好,任务一多,权重调节的搜索空间迅速变大,训练越难收敛。因此,它并非万能的省事方案,只在「相关任务」这个前提下成立。拿不准任务是否相关时,先分开训再对比,往往比直接上多任务更稳妥。
速查:多任务学习要点
- 本质:一套模型参数同时学习多个相关任务。
- 结构:共享底层、分工上层。
- 三个好处:互相补充、防过拟合、省资源。
- 关键前提:任务要相关,否则互相拖累。
多任务学习提醒我们:让模型同时学几件相关的事,往往比分开学更有效,但前提是「相关」。这也是大模型「一个模型什么都能干」背后的思想之一——只不过大模型的任务边界更模糊,靠海量数据和超大参数把「相关」这个前提放宽了。理解了这一层,再看各种「多合一」模型,你就知道该先问一句:这些任务真的相关吗?


