题外话: 多任务学习可以说是机器学习的终极目标之一, 就像物理学家在追求统一所有力一样, 个人认为机器学习也在追求一个模型解决几乎所有问题. 虽然我们现在还离这个目标很远, 但是多任务学习在实际应用中是非常有价值的, 对于像BERT这么复杂的模型, 用一个模型解决多个问题才能物尽其用啊. (稍稍推广下bert-multitask-learning)
这是Intel在NIPS 2018上发表的关于多任务学习的文章: Multi-Task Learning as Multi-Objective Optimization. 多任务学习其实有很多种做法, hard parameter sharing, soft parameter sharing等等, 但是个人认为hard parameter sharing更加具有实用价值, 这里不展开说了. 这篇文章属于用hard parameter sharing 做多任务学习, 通过loss weighting来提升效果, 而本文的主要贡献是对这个weight的快速计算. 作者在文章中说了以下事情:
- 介绍了用多目标优化解决多任务学习的一般形式
- 介绍了怎么比较多任务学习结果的优劣: 帕累托最优
- 将帕累托最优的求解转化成任务权重的求解
- 证明如何简化该计算
文章的idea其实很简单, 但是理论比较多, 如果对理论不感兴趣的话了解一下作者做了什么工作就好了: 通过链式法则的推导, 并证明了, 在梯度为full rank的情况下, 我们不需要对每个任务的向后传播都算到底(所有层), 只需要算到共享模型的最后一层, 用这个去解出各个任务的权重, 既能加快速度, 又能得到一个比较好的解. 下面我会尝试总结一下作者的推导过程.
符号解释
-
: 任务以及任务集合
-
: 模型参数, 共享的模型参数
-
: 任务权重
-
: 学习率
-
:的最后一层输出
-
: 损失函数
-
: 输出空间和任务