multi-task learning, multi-label learning, multi-class learning

1.单任务学习vs多任务学习

  单任务学习:一次只学习一个任务(task),大部分的机器学习任务都属于单任务学习。
  多任务学习:把多个相关(related)的任务放在一起学习,同时学习多个任务。

  Q:多任务学习(multi-task learning)产生的原因?
  A:对于复杂的问题,可以分解为简单且相互独立的子问题来单独解决,然后再合并结果,得到最初复杂问题的结果。这样做看似合理,其实是不正确的,因为现实世界中很多问题不能分解为一个一个独立的子问题,即使可以分解,各个子问题之间也是相互关联的,通过一些共享因素或共享表示(share representation)联系在一起。把现实问题当做一个个独立的单任务处理,忽略了问题之间所富含的丰富的关联信息。多任务学习就是为了解决这个问题而诞生的。把多个相关(related)的任务(task)放在一起学习。这样做真的有效吗?答案是肯定的。多个任务之间共享一些因素,它们可以在学习过程中,共享它们所学到的信息,这是单任务学习所不具备的。相关联的多任务学习比单任务学习能取得更好的泛化(generalization)效果。

  单任务与多任务对比如图1所示:

图1 单任务学习与多任务学习对比

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

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

图2 基于单层神经网络的单任务和多任务学习对比

  从图2中可以发现,单任务学习时,各个任务(task)的学习是相互独立的;多任务学习时,多个任务之间的浅层表示是共享(shared representation)的。
  多任务学习时,不同的任务会有不同的loss,在更新网络参数的时候是通过采用一个总的loss让梯度根据每个loss的贡献度比例反向传播。各个loss之间权重参数的确定,即调参策略可以参考:Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics

2.什么是多任务学习

  多任务学习(Multitask learning)是基于共享表示(shared representation),把多个相关的任务放在一起学习的一种机器学习方法。
  多任务学习涉及多个相关的任务同时并行学习,梯度同时反向传播,多个任务通过底层的共享表示(shared representation)来互相帮助学习,提升泛化效果。简单来说:多任务学习把多个相关的任务放在一起学习(注意,一定要是相关的任务,后面会给出相关任务(related tasks)的定义,以及他们共享了那些信息),学习过程(training)中通过浅层的共享(shared representation)表示来互相分享、互相补充学习到的特定域信息(domain-specific information),互相促进学习,提升泛化的效果。

  共享表示shared representation:
  共享表示的目的是为了提高泛化(improving generalization),图2中给出了多任务学习最简单的共享方式,多个任务在浅层共享参数。MTL中共享表示有两种方式:
  (1)基于参数的共享(Parameter based):比如基于神经网络的MTL,高斯处理过程。
  (2)基于正则化的共享(regularization based):比如均值,联合特征(Joint feature)学习(创建一个常见的特征集合)。

  拿大家经常使用的school data做个简单的对比,school data是用来预测学生成绩的回归问题的数据集,总共有139个中学的15362个学生,其中每一个中学都可以看作是一个预测任务。单任务学习就是忽略任务之间可能存在的关系分别学习139个回归函数进行分数的预测,或者直接将139个学校的所有数据放到一起学习一个回归函数进行预测。而多任务学习则看重任务之间的联系,通过联合学习,同时对139个任务学习不同的回归函数,既考虑到了任务之间的差别,又考虑到任务之间的联系,这也是多任务学习最重要的思想之一。

3.多任务学习有效的原因

  Q:多任务学习相比单任务学习有何优势?
  A:单任务学习的过程中忽略了任务之间的联系,而现实生活中的学习任务往往是有千丝万缕的联系的,比如多标签图像的分类,人脸的识别等等,这些任务都可以分为多个子任务去学习,多任务学习的优势就在于能发掘这些子任务之间的关系,同时又能区分这些任务之间的差别。

  Q:为什么把多个相关的任务放在一起学习,可以提高学习的效果(performance)?
  A:关于这个问题,有很多解释。这里列出其中一部分,以图2中由单个隐含层神经网络表示的单任务和多任务学习对比为例,
  (1)多个相关任务放在一起学习,有相关的部分,但也有不相关的部分。当学习一个任务(Main task)时,与该任务不相关的部分,在学习过程中相当于是噪声,因此,引入噪声可以提高学习的泛化(generalization)效果。
  (2)单任务学习时,梯度的反向传播倾向于陷入局部极小值。多任务学习中不同任务的局部极小值处于不同的位置,通过相互作用,可以帮助隐含层逃离局部极小值。
  (3)添加的任务可以改变权值更新的动态特性,可能使网络更适合多任务学习。比如,多任务并行学习,可能提升了浅层共享层(shared representation)的学习速率,较大的学习速率提升了学习效果。
  (4)多个任务在浅层共享表示,可能削弱了网络的能力,缓解网络过拟合,提升了泛化效果。
  还有很多关于“为什么多任务并行学习可以提升学习效果”的潜在解释。多任务学习有效,是因为它是建立在多个相关的,具有共享表示(shared representation)的任务基础之上的,因此,需要定义一下,什么样的任务之间是相关的。

4.相关(relate)定义

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

5.多任务学习中的相关关系(task relationship)

  多任务学习并行学习时,有5个相关因素可以帮助提升多任务学习的效果。
  (1)数据放大(data amplification)。相关任务在学习过程中产生的额外有用的信息可以有效方法数据/样本(data)的大小/效果。主要有三种数据放大类型:统计数据放大(statistical data amplification)、采样数据放大(sampling data amplification),块数据放大(blocking data amplification)。
  (2)Eavesdropping(窃听)。假设
  (3)属性选择(attribute selection)
  (4)表征偏置(representation bias)
  (5)预防过拟合(overfitting prevention)
  所有这些关系(relationships)都可以帮助提升学习效果(improve learning performance),关系具体定义可以参考文献[1]。

6.Multi-task Learning方法

  目前多任务学习方法大致可以总结为两类,一是不同任务之间共享相同的参数(common parameter),二是挖掘不同任务之间隐藏的共有数据特征(latent feature)。

  浅层隐含层节点共享神经网络是最简单的MTL,如图2所示。还有基于特征(feature table)共享的MTL。
  基于特征共享的MTL(联合特征学习,Joint feature learning),通过创建一个常见的特征集合来实现多个任务之间基于特征(features)的shared representation,其共享表示如图3所示。

图3 基于特征的共享表示示意图

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

图4 基于joint feature的MTL示意图

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

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

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

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

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

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

图5 多任务学习与其他机器学习方法之间的关系

8.多任务学习应用概述

  基于神经网络的多任务学习,尤其是基于深度神经网络的多任务学习(DL based Multitask Learning),适用于解决很多NLP领域的问题,比如词性标注、句子句法成分划分、命名实体识别、语义角色标注等任务,都可以采用MTL任务来解决。
  其他MTL的应用还有,网页图片和语音搜索[Zhou et. al. KDD’11],疾病预测[Zhang et. al. NeuroImage 12]等等。

9.参考文献

[1] Caruana, R. (1997). Multitask Learning. Machine Learning, 28(1), 41–75. doi: 10.1023/A:1007379606734

[2] Collobert, R., & Weston, J. (2008). A unified architecture for natural language processing: Deep neural networks with multitask learning.Presented at the Proceedings of the 25th international conference ….

[3] Lounici, K., Pontil, M., Tsybakov, A. B., & van de Geer, S. (2009, March 8). Taking Advantage of Sparsity in Multi-Task Learning. arXiv.org.

[4] Zhang, Y., & Yeung, D.-Y. (2012, March 15). A Convex Formulation for Learning Task Relationships in Multi-Task Learning. arXiv.org.

[5] Zhou, J., Chen, J., & Ye, J. (2012) Multi-Task Learning , Theory, Algorithms, and Applications, SDM

参考博客

模型汇总-14 多任务学习-Multitask Learning概述 - 知乎 20170616
模型汇总-14 多任务学习-Multitask Learning概述_人工智能_lqfarmer的博客 20170616
Multi-task learning(多任务学习)简介_python_MultimediaComputingGroup_blogs 20140807

待阅读

An overview of multi-task learning | National Science Review | Oxford Academic 201801
An Overview of Multi-Task Learning for Deep Learning 20170529
multi class - What is the difference between Multitask and Multiclass learning - Cross Validated 201902

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值