看了一些目标检测的论文之后发现对多任务学习不够了解,下面的内容是Multi-Taks Learning综述论文的部分总结。
概念
在传统的机器学习中通常针对一个任务来优化模型,对不同的任务使用不同的模型。Multi-Task Learning(MTL)使用共享某些隐层表达的方式来实现同时完成多个任务(或是利用辅助任务提升主任务的效果)。
例如在Fast RCNN中,object Classifier 和bounding box regressor共享Conv feature map,使用multi-task loss来进行训练,可以同时完成目标识别与定位。
两种共享方式
提到的多任务学习主要分为两种:
hard parameter sharing:不同任务直接共享隐藏层。
降低过拟合风险(相对于单一任务,模型要学习更多更通用的表达。)
**soft parameter sharing:**每个任务对应一个模型,添加额外的权重代价(L2,trace norm)约束各个模型中的某些层。
在非神经网络的方法中更常见。
MTL有效的原因
- 同样的数据集对于不同的任务,噪声的定义可能是不同的,同时学习目标A和B对于目标的对应噪声有平均的效果,也能防止过拟合其中一个目标;
- 任务A难以被学习时,那些对任务B有用的特征可能对A同样有用;
- 对于不同任务,隐层学习到的特征也有不同,共享隐层增加了特征数量;
- 多任务模型学习到的Feature Representation有利于新任务的推广;
- 有正则化效果。
任务之间要相关,否则结果可能更差
DL中的应用和发展
DL中层与层之间的互联或者说结构之间的互联天然地为hard parameter sharing提供了基础,可以简单的预定义某些层为共享层。MTL在深度学习上还有一些其他的结构比如Fully-Adaptive Feature Sharing、Tensor factorisation for MTL等。但要注意的是,如果任务不是紧密相关或者需要在不同级别上进行进一步推理,这样的参数共享效果并不好。
辅助任务
另一个重点是,即使我们只需要模型完成任务A,可能在加入辅助任务B之后得到对于任务A的更好的学习。但是如何选择任务B是一个问题,一般假设辅助任务应该以某种方式与主任务相关或有助于预测主任务。但是如何定义这样的相关性仍然是一个问题,这一方面还有待探索。