NLP Technology

NLP中的多任务学习

为什么要做多任务学习(multi task learning)? 多任务学习有哪些好处:

  • 单任务的训练目标可能会忽略一些相关任务中可能提升目标任务的潜在信息,加入相关的其他任务,可能使得最终的结果更好
  • 多任务学习能降低过拟合的风险,有更好的泛化能力。在hard-sharing中,如果让多任务共享隐层/encoder,那么模型会去尝试得到适合于所有任务的表征,而不是仅局限于单个任务

    “The more tasks we are learning simultaneously, the more our model has to find a representation that captures all of the tasks and the less is our chance of overfitting on our original task”

什么是多任务学习? [2]

multi task learning有很多称呼:比如joint learning, learning to learn, and learning with auxiliary task.
凡是只要是有多个优化目标/loss函数,就可以称为多任务学习

多任务学习基本知识

Motivation:

  1. 人类学习新任务时,可以从已学会的任务中获益
  2. 从机器学习的角度:MTL是inductive transfer的一种形式,可以引入inductive bias (causes a model to prefer some hypotheses over others),从而使得模型表现更好
    1. L1 正则就是inductive bias的一种表现形式,可以使模型更倾向于得到稀疏解
    2. MTL中,由辅助任务提供inductive bias ,模型倾向于能解释更多任务的假设。

MTL的分类:

  1. Hard-sharing :该形式在MTL任务中最为 常见,即在不同任务中贡献隐层,隐层之后加入任务相关的task-specific output layers;

    好处:能极大降低过拟合的风险 -> O(N) , N为任务数,任务越多,越不容易过拟合 [2]

  2. Soft Parameter: 每个任务有自己的参数,最后通过对不同任务的参数之间的差异加约束,使得参数相似。比如可以使用L2, trace norm等



为什么MTL是有效的?

  1. Implicit data augmentation: MTL可以增加样本大小;同时每个任务的训练数据中都存在噪声。不同数据的噪声模式是不一样的,多个任务同时学习能抵消一部分噪声 (类似bagging的思想,-> 不同任务噪声存在于各个方向,最终平均就会趋于零
  2. Attention focusing: 如果一项任务噪声很大,或者数据有限且维度高(学习了训练数据的噪声和异常,而对样本外的数据拟合效果并不理想,甚至很差),那么模型就很难区分相关和不相关的特征。MTL可以帮助模型将其注意力集中在那些实际上很重要的特性上,因为其他任务将为那些特性的相关性或不相关性提供额外的证据。
  3. Eavesdropping (意思为偷窃、偷听): 某些特征G可能在任务A上不容易学习,而在任务B中容易习得。通过MTL,task A可以以eavesdrop的方式习得G
  4. Representation bias:MTL会使得模型得到的特征representation适合更多的任务, 那么模型可以在来自相同环境的新任务中有良好的表现
  5. Regularization: MTL通过引入归纳偏差作为一个调节器。因此,它降低了过度拟合的风险,也降低了模型的Rademacher complexity,即拟合随机噪声的能力

哪些部分应当是被share的?

  1. 绝大多数成功的MTL任务都遵循一个范式:共享的任务都来源于相同的分布;作者也提出了一个展望,不相关或是相关性不大的任务,是否可以用MTL?这样MTL方法更加健壮
  2. 对于hard-sharing而言,需要任务有较强的相关性 -> 最新的工作着眼于 learning what to share(outperform hard parameter sharing)
  3. MTL也存在一些问题:现在的方式会将所有任务的知识压缩到相同的参数空间,会存在信息损失

辅助任务

很多时候,我们的仅仅只考虑优化一个目标,看似和多任务学习无关,但其实也可以通过添加合适的辅助任务,来帮助得到更好的结果

常见的辅助任务类型如下:

  1. related tasks(具有相关性的任务):使用预测道路不同特征的任务作为预测自动驾驶汽车转向方向的辅助任务;利用头部姿态估计和面部属性推断作为人脸地标检测的辅助任务;
  2. Adversarial (对抗任务) :有些时候,不能添加具有related tasks,因为不存在对应的labeled data;那么可以设置一个和当前任务目标相反的adversarial task,adversarial task的目标是最大化训练误差(通过加gradient reversal layer实现)。这样的会使得模型倾向学习到更加通用的representations. 该方法在domain adaptation中有所应用。
  3. Hints (带有提示性质的任务): 之前有提到的MTL优势, 引入的其他任务可能比较容易的学习到原任务不易习得的特征。一个有效的实现方式就是Hints(如通过辅助任务预测这样的特征)。比如在情感分析任务中加一个辅助任务,预测输入文本中是否包含积极/消极的情感词;比如在name error detection任务中添加一个辅助任务,预测句子中是否包含name。
  4. Focusing attention: 辅助任务可以用来注意模型忽略的部分,比如在自动驾驶领域的learning to steer任务中,单任务模型通常会忽略像路标这样细微的部分,可以加入一个预测路标的辅助任务
  5. Quantization smoothing(量化平滑)
  6. Predicting inputs (预测输入):有些任务中,加入某些特征作为输入对我们优化目标没有太多帮助;但是在某些情况下,把这些特征作为输出来预测,对整个任务是有帮助的。
  7. using the futue to predict the present(用未来预测现在):在某些场景中,一些特征仅仅只有在做出预测之后才能用。比如在自动驾驶中,一旦汽车经过障碍物或路标,便可以对它们做出准确的度量,对于这些例子来讲,这些额外的数据由于在输入的时刻并不可用,所以并不能作为特征。然而,可以用作辅助任务来为模型传授额外的知识以辅助训练
  8. Representation learning(表示学习)

为什么辅助任务是有效的?总体来看,辅助任务可以帮助我们更好的学习任务所需的特征

实践中如何挑选辅助任务:辅助任务应该是与主任务密切相关的,或者是能够对主任务的学习过程有益的。

Examples

2019, MT-DNN [1]

motivation

人类可以从旧的任务,学习对新的任务有帮助的知识,比如会滑雪的人,更容易学会滑冰,那么NLP中,同时训练多个相关的任务,是否也可以提升单个任务的结果?该工作给出了肯定的回答 [1]

method


MT-DDN模型结构比较简单,熟悉bert的同学很容易立即,MT-DNN会共享encoder,即bert(图中Shared layers);然后任务层不一致(图中的task specific layers)

  • 具体实现方式是:均利用bert编码sentence的embedding,将embedding应用于不同的任务,task层同一般的fine-tune任务

整个MT-DNN综合了4种不同的NLU任务(单个任务和一般的fine-tune任务一致):

  1. single-sentence classification
  2. pairwise text classification
  3. text similarity scoring
  4. Relevance Ranking:

MT-DNN总共有两个训练阶段:

  1. pretrain-stage:和bert相同,做MLM和NSP任务
  2. multi- learning stage:做多任务的fine-tune
    1. 训练时,合并所有任务的数据:注意单个任务中,最后一个batch数据不足的会保留
    2. 每个batch,只训练一个任务,利用task_id标识当前任务,选择loss的计算函数;相邻batch,不一定是同一任务(实现效果类似于对不同任务的数据做了混合)。这样一个batch只训练一个任务,不会有loss组合的问题

results

  • MT-DNN在每一项任务中都优于bert
  • 在数据量少的任务中提升更加明显, 如下图,在训练数据少的情况下,MT-DNN结果会更好

从结果上来看MT-DNN是好的,不过多任务组合的方式较为简单,任务应当是“精心”挑选过的:因为在多任务学习中,不同任务loss尺度不同、收敛速度不一致,最终都会对结果带来很大的影响

Reference

1. Multi-Task Deep Neural Networks for Natural Language Understanding
2. 机器学习中的维度灾难
3. An Overview of Multi-Task Learning in Deep Neural Networks

发表评论

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