Multi-Task Learning

最近在研究一个NLP任务,感觉用MTL(Multi-Task Learning,多任务学习)来解决会非常适合,所以就稍微调研了一下MTL,发现一篇比较好的文章,这里就简单理解了一下,现在翻译一下做个笔记,原文地址:http://ruder.io/multi-task/index.html#whydoesmtlwork,英文不错的话还是建议看原文。

首先什么是MTL,多任务学习就是将多个任务放在一起进行训练(它们会共享一些参数,并会将loss进行weighting)来获得更好的效果,获得更好的泛化能力。MTL已经被成功应用于很多领域,譬如natural language processing、speech recognition、computer vision、drug discovery等。在深度学习领域,它的实现主要有两种方法:hard parameter sharing和soft parameter sharing。Hard parameter sharing应用的更多些,也比较简单,就是把所有的任务的hidden layers的参数给共享出来,而且保持自己的task-specific输出层,如下图所示:

Hard parameter sharing

Hard parameter sharing极大降低了过拟合的风险,直觉上理解它就是如果我们同时学习很多任务,模型就必须学习到一个可以捕获所有任务特征的表示,从而它过拟合到其中一个任务的概率就大大降低了。

Soft parameter sharing共享方式稍微复杂些,每个模型都会有自己的隐藏层参数,但是任务间的隐藏层参数会加入一些正则化限制使得它们会比较相似,如图所示:

Soft parameter sharing

那么为什么MTL会有用呢,会有这么好效果呢,上文已经提到一些,这里详细列举下原因,也是这篇文章的主题:

  1. Implicit data augmentation
  2. Attention focusing
  3. Eavesdropping
  4. Representation bias
  5. Regularization

对于implicit data augmentation,主要是由于MTL的每个任务都会有自己的噪声分布,仅仅学习任务A的话模型只会集中精力在处理任务A的噪声分布上,而MTL就会想方设法去学习一个普适表示去适应所有的噪声模式从而提升泛化。

对于attention focusing,如果一个任务是非常的noisy或者样本很少,维度很高的情况下,单任务就会很难区分哪些是相关、哪些是不相关的特征,MTL由于添加了其他任务,对这个任务敏感的特征就会被其他任务给共享到,就可以帮助模型区分这些相关和不相关特征,从而辅助模型决策。

对于eavesdropping,主要就是这个任务学到的特征会对其他任务有用,而这个学到的特征可能在其他任务里面很难去学习到。

对于representation bias,MTL可以使模型偏好其他任务也偏好的表示,使得它可以更好地泛化到新的任务。因为理论上MTL在越多的任务上泛化的好,对于未知的任务就越大概率泛化得好,类比来说就是深度学习领域里面样本越多,模型泛化越好。

对于regularization,MTL共享参数本身就是一个正则化模型。

文首提到的文章里面还有很多其他内容,譬如MTL最近的工作、非神经网络模型的MTL等,有兴趣的可以去看看,这里到此为止~

— 2019-01-12 09:09

发表评论

电子邮件地址不会被公开。 必填项已用*标注