多任务学习(Multi-task learning)

By | 2017年2月27日

目录:

  1. 多任务学习的简介
  2. 多任务学习的原理及优势
  3. 多任务学习的广泛应用

 

1.多任务学习的简介

1.1 什么是多任务学习

多任务学习是一种归纳迁移机制,在1997年之前,很多的归纳学习系统仅专注于单一任务,因此归纳迁移领域的研究者提出了这个问题:如何通过使用多个学习任务的知识来增强学习能力?为达到同等水平的性能,归纳迁移学习可以减少训练样本的数目或训练的迭代次数 ,这对于训练样本不足的学习任务而言是非常有意义的。

多任务学习(Multi-task learning)是和单任务学习(Single-task learning)相对的一种机器学习方法,可以同时学习多个任务,一般用于分类和回归。

它有许多前身: learning-to-learn,meta-learning,lifelong learning,and inductive transfer。

举个例子,school data是用来预测学生成绩的数据集,总共有139个中学的15362个学生,其中每一个中学都可以看作是一个预测任务。

单任务学习就是忽略任务之间可能存在的关系分别学习139个回归函数进行分数的预测,或者直接将139个学校的所有数据放到一起学习一个回归函数进行预测。

多任务学习则看重任务之间的联系,通过联合学习,同时对139个任务学习不同的回归函数,既考虑到了任务之间的差别,又考虑到任务之间的联系,这也是多任务学习最重要的思想之一。

对于多个任务,如果这些任务之间是相关的,多任务联合学习应该要比单任务学习的效果好,特别是当每个任务的数据相当少的时候,在这种情况下,独自学习是很不成功的。

下图所示为单任务学习和多任务学习的对比,在单任务学习中,每个任务采用单独的数据源,分别学习每个任务单独的模型。而多任务学习中,多个数据源采用共享表示同时学习多个子任务模型。

1.2 任务的相关性

多任务学习的基本假设是多个任务之间具有相关性(预测一张人脸是男性还是女性可能有利于预测这张人脸是大人还是小孩)、训练集的分布具有相关性、或者各个任务的域是相似的(比如所有任务涉及的图像都是室外风景)。因此能够利用任务之间的相关性互相促进,提高分类结果。

那么,什么样的任务是具有相关性的呢?

下面有一些常见理论:

  1. 如果两个任务是处理输入的相同函数,但是在任务信号中加入独立的噪声处理,很明显这两个任务是相关的。
  2. 如果两个任务用于预测同个个体的属性的不同方面,这些任务比预测不同个体的属性的不同方面更相关。
  3. 两个任务共同训练时能相互帮助并不意味着它们是相关的:有时通过在后向传播网络的一个额外输出加入噪声可以提高泛化能力,但是这个噪声任务与其它任务不相关。

例如,在属性分类中,抹口红和戴耳环有一定的相关性,单独训练的时候是无法利用这些信息的,而多任务学习则可以利用任务相关性联合提高多个属性分类的精度。

1.3 多任务学习的应用

首先,多任务学习可以学到多个任务的共享表示,这个共享表示具有较强的抽象能力,能够适应多个不同但相关的目标,通常可以使主任务获得更好的泛化能力。

此外,由于使用共享表示,多个任务同时进行预测时,减少了数据来源的数量以及整体模型参数的规模,使预测更加高效。

因此,在多个应用领域中,可以利用多任务学习来提高效果或性能,比如垃圾邮件过滤网页检索自然语言处理图像识别语音识别等。

2. 多任务学习的原理及优势

2.1 原理

下图左展示了4个独立的神经网络,每个网络是一个针对同样输入集的仅有一个输出的函数。误差后向传播被应用于这些网络中来单独训练每个网络,由于这些网络相互之间没有任何连接,因此其中一个网络学习到的特征并不能帮助另一个网络的学习。这就是前面提到的单任务学习STL

mt1   mt2

上图右展示了一个输入与图左中的四个网络一致的单一网络,但该网络有四个输出,每个输出对应图左中的一个任务。需要注意的是,这些输出可以连接他们共享的一个隐层的所有神经元,也可以如图右所示,在共享的一个隐层后形成独立的子网络,训练不与其他任务共享的参数。这就是多任务学习MTL

在多任务学习网络中,后向传播并行地作用于4个输出。由于4个输出共享底部的隐层,这些隐层中用于某个任务的特征表示也可以被其他任务利用,促使多个任务共同学习。

多任务学习的核心思想多个任务并行训练并共享不同任务已学到的特征表示

2.2 优势

多任务学习的优势在哪呢?

单任务学习的过程中忽略了任务之间的联系,而现实生活中的学习任务往往是有千丝万缕的联系的。

例如,当一名守门员在学习如何扑救时,并不是单纯地学习如何去扑球,而是会涉及许多相关的学习内容,比如如何进行预判,如何移动脚步,如何腾身起跳,如何平稳落地等。相似的,在计算机领域,多标签图像的分类,人脸的识别等等,这些任务都可以分为多个子任务去学习,多任务学习的优势就在于能发掘这些子任务之间的关系,同时又能区分这些任务之间的差别

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

3.多任务学习的广泛应用

3.1 使用未来预测现在(没大懂)

一个从未来学习的应用是医疗风险预测,比如肺炎风险问题,在这个问题中,可以使用可用的实验室测试作为额外输出任务,但在为病人诊断时这些测试是不可用的。来自未来测量方法中的有价值的信息将会帮助网络学习可以更好支持风险预估的隐层表示。

未来测量方法在很多离线学习问题中可用,有些特征不能在运行时实时获得,因此不能作为输入。但作为多任务学习的输出,它们提供了可以帮助学习的额外信息,即使这些输出在运行时不能获得。

3.2 时间序列预测

这种类型的应用是用未来预测现在的一种分类,未来任务和现在任务是相同的 除了它们发生在更迟的时候。

将多任务学习用于时间序列预测的最简单方式是使用一个有多个输出的单一网络,每个输出和在不同时间的相同任务对应。2.1 中图右展示的是一个有四个输出的神经网络,如果输出 k 指的是任务在时间 Tk 的预测,那么该网络可以对相同任务在四个不同时间做出预测。

 

参考文献:

  1. 一箭N雕:多任务深度学习实战
  2. #Deep Learning回顾#之多任务学习

发表评论

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