多任务学习笔记

简单的说就是把多个相关(related)的任务放在一起学习,同时学习多个任务。

多任务学习笔记

 

从图1中可以发现,单任务学习时,各个任务之间的模型空间(Trained Model)是相互独立的(图1上)。多任务学习时,多个任务之间的模型空间(Trained Model)是共享的(图1下)。

 

假设用含一个隐含层的神经网络来表示学习一个任务,单任务学习和多任务学习可以表示成如图2所示。

 

多任务学习笔记

 

 从图二可以发现,单任务学习时,各个task任务的学习是相互独立的,多任务学习时,多个任务之间的浅层表示共享(shared representation)。

 

定义

基于共享表示(shared representation),把多个相关的任务放在一起学习的一种机器学习方法。

多任务学习(Multitask Learning)是一种推导迁移学习方法,主任务(main tasks)使用相关任务(related tasks)的训练信号(training signal)所拥有的领域相关信息(domain-specific information),做为一直推导偏差(inductive bias)来提升主任务(main tasks)泛化效果(generalization performance)的一种机器学习方法。多任务学习涉及多个相关的任务同时并行学习,梯度同时反向传播,多个任务通过底层的共享表示(shared representation)来互相帮助学习,提升泛化效果。简单来说:多任务学习把多个相关的任务放在一起学习(注意,一定要是相关的任务,后面会给出相关任务(related tasks)的定义,以及他们共享了那些信息),学习过程(training)中通过一个在浅层的共享(shared representation)表示来互相分享、互相补充学习到的领域相关的信息(domain information),互相促进学习,提升泛化的效果。

 

共享表示shared representation:

共享表示的目的是为了提高泛化(improving generalization),图2中给出了多任务学习最简单的共享方式,多个任务在浅层共享参数。MTL*享表示有两种方式:

 

有效的原因

 

还有很多潜在的解释,为什么多任务并行学习可以提升学习效果(performance)。多任务学习有效,是因为它是建立在多个相关的,具有共享表示(shared representation)的任务基础之上的,因此,需要定义一下,什么样的任务之间是相关的。

 

相关(related)定义

相关(related)的具体定义很难,但我们可以知道的是,在多任务学习中,related tasks可以提升main task的学习效果,基于这点得到相关的定义:

 

Related(Main Task,Related tasks,LearningAlg)= 1

 

LearningAlg(Main Task||Related tasks)> LearningAlg(Main Task)

 

LearningAlg表示多任务学习采用的算法,

公式(1):

第一个公式表示,把Related tasks与main tasks放在一起学习,效果更好;

第二个公式表示,基于related tasks,采用LearningAlg算法的多任务学习Main task,要比单学习main task的条件概率概率更大。

特别注意,相同的学习任务,基于不同学习算法,得到相关的结果不一样:

Related(Main Task,Related tasks,LearningAlg1)不等于 Related(Main Task,Related tasks,LearningAlg2)

 

 

多任务学习中的相关关系

    多任务学习并行学习时,有5个相关因素可以帮助提升多任务学习的效果。

 

    所有这些关系(relationships)都可以帮助提升学习效果(improve learning performance),

 

Multitask Learning方法

浅层隐含层节点共享神经网络是最简单MTL,如图2所示。还有基于特征(feature table)共享MTL。

基于特征的共享MTL(联合特征学习,Joint feature learning),通过创建一个常见的特征集合来实现多个任务之间基于特征(features)的shared representation,其共享表示如图3所示。

 

多任务学习笔记

 

基于特征共享的MTL输入输出关系如图4所示,其中采用L1正则来保证稀疏性。

多任务学习笔记

 

如图4,等号左边nxp的输入矩阵,乘上一个由k个任务构成的pxk的共享特征矩阵,加上一个nxk的噪声矩阵(不相关部分),就得到了左边的输出矩阵。

    其他多任务学习方法还有均值约束 MTL:基于均值来约束所有的task,参数共享的高斯处理MTL,低秩约束MTL,交替结构优化MTL等等

 

难点

 

 

多任务学习与其他学习算法之间的关系

多任务学习(Multitask learning)是迁移学习算法的一种,迁移学习之前介绍过。定义一个一个源领域source domain和一个目标领域(target domain),在source domain学习,并把学习到的知识迁移到target domain,提升target domain的学习效果(performance)。

多标签学习(Multilabel learning)是多任务学习中的一种,建模多个label之间的相关性,同时对多个label进行建模,多个类别之间共享相同的数据/特征。

多类别学习(Multiclass learning)是多标签学习任务中的一种,对多个相互独立的类别(classes)进行建模。这几个学习之间的关系如图5所示:

 

 

多任务学习笔记

 

多任务学习应用概述

   基于神经网络的多任务学习,尤其是基于深度神经网络的多任务学习(DL based Multitask Learning),适用于解决很多NLP领域的问题,比如把词性标注、句子句法成分划分、命名实体识别、语义角色标注等任务,都可以采用MTL任务来解决。

 

  • Loss Function(how to balance tasks):多任务学习的损失函数,对每个任务的损失进行权重分配,在这个过程中,必须保证所有任务同等重要,而不能让简单任务主导整个训练过程。手动的设置权重是低效而且不是最优的,因此,自动的学习这些权重或者设计一个对所有权重具有鲁棒性的网络是十分必要和重要的。
  • Network Architecture(how to share):一个高效的多任务网络结构,必须同时兼顾特征共享部分和任务特定部分,既需要学习任务间的泛化表示(避免过拟合),也需要学习每个任务独有的特征(避免欠拟合)。
  • Eavesdropping(窃听)。假设
  • 属性选择(attribute selection)
  • 表示偏移(representation bias)
  • 预防过拟合(overfitting prevention)
  • 数据放大(data amplification)。相关任务在学习过程中产生的额外有用的信息可以有效方法数据/样本(data)的大小/效果。主要有三种数据放大类型:
    1. 统计数据放大(statistical data amplification)
    2. 采样数据放大(sampling data amplification)
    3.  块数据放大(blocking data amplification)。
  • 多个相关任务放在一起学习,有相关的部分,但也有不相关的部分。当学习一个任务(Main task)时,与该任务不相关的部分,在学习过程中相当于是噪声,因此,引入噪声可以提高学习的泛化(generalization)效果。
  • 单任务学习时,梯度的反向传播倾向于陷入局部极小值。多任务学习中不同任务的局部极小值处于不同的位置,通过相互作用,可以帮助隐含层逃离局部极小值。
  • 添加的任务可以改变权值更新的动态特性,可能使网络更适合多任务学习。比如,多任务并行学习,提升了浅层共享层(shared representation)的学习速率,可能,较大的学习速率提升了学习效果。
  • 多个任务在浅层共享表示,可能削弱了网络的能力,降低网络过拟合,提升了泛化效果。
  • 基于参数的共享(Parameter based):比如基于神经网络的MTL,高斯处理过程。
  • 基于约束的共享(regularization based):比如均值,联合特征(Joint feature)学习(创建一个常见的特征集合)。