2020-06-16 23:22:33

本篇文章将介绍在机器学习中效果比较好的一种模式,多任务学习(Multi task Learning,MTL)。已经有一篇机器之心翻译的很好的博文介绍多任务学习了: 共享相关任务表征,一文读懂深度神经网络多任务学习,写的非常详细,但是我在看的时候会觉得略有点晦涩。所以我准备写的这篇呢,想用大白话介绍一下多任务学习解决的问题是什么,具体是怎么做的,有哪些优势。并且这篇博文中不准备写相关paper的总结和简介。

接下来从以下几个方面介绍MTL:

  1. 定义及与其他机器学习任务的区别(单任务、multi label多标签、multi class多类别)
  2. 什么是相关任务
  3. 共享表示
  4. 优势
  5. 应用方向

1、定义及与其他机器学习任务的区别

1.1 单任务学习与多任务学习

既然要介绍多任务学习,那么就必须要提到与之对应的单任务学习

我们平时接触最多的那些机器学习算法基本都是单任务学习,即专注于一个学习目标。

如上图所示,有4个独立的神经网络,每个网络针对同样的输入只有一个输出函数(优化目标),这四个网络之间没有任何连接,所以每个网络之间的表示层是独立的,彼此训练的隐层对其他网络的训练没有任何影响,这种方式就叫做单任务学习(Single Task Learning,STL)

多任务学习,顾名思义,学习目标有多个。如上图所示,把四个任务放在一起进行学习,他们共享了同一个模型空间,或者换句话说,他们用了共享表示层(shared representation)。在训练过程中,四个任务全都会对这个共享模型造成影响。

1.2 multi task多任务&multi label多标签 & multi class多类别

这三个名词里都带有multi,于是很多人会把他们搞混。下面解释一下这三种之间的区别。

multi class:多分类问题,可选类别有多个但是结果只能分到一类中,比如一个人他是孩子、少年、中年人还是老人。

multi label:打多个标签,或者说进行多种分类,还是拿人举例啊,一个人,他可以被打上标签{青年,男性,画家}这些标签。如果还有一个人他也是青年男性,但不是画家,那就只能打上标签{青年,男性}。

它和多任务学习不一样,它的目标不是学习出一个共同的表示,而是多标签。

multi task:训练模型的时候目标是多个相关目标共享一个表征,比如人的特征学习,一个人,既可以从年轻人和老人这方面分类,也可以从男人女人这方面分类,这两个目标联合起来学习人的特征模型,可以学习出来一个共同特征,适用于这两种分类结果,这就是多任务学习。

2、 什么是相关任务

multi task同时学习多个相关任务,并且具有相当的优势。同时,我们在做多任务学习时,有时关注的点在某个主要任务上,其他的共同学习的任务可能更多的只是起到帮助作用,这些起到帮助作用的任务叫做辅助任务。辅助任务与主任务越相关,那么起到的效果可能会越好。

那么什么是相关任务?比较大白话的解释有:

(1)如果两个任务是处理输入的相同函数,但是在任务信号中加入独立的噪声,很明显这两个任务是相关的。

(2)如果两个任务用于预测同个个体的属性的不同方面,这些任务比预测不同个体的属性的不同方面更相关。

(3)两个任务共同训练时能够相互帮助并不意味着它们是相关的:有时通过在后向传播网络的一个额外输出加入噪声可以提高泛化能力,但是这个噪声任务与其它任务不相关

那么比较学术严谨一些的定义有:

(1)使用相同的特征做判断的任务

(2)共享相同的最优假设空间,即拥有相同的归纳偏置(having the same inductive bias)

(3)F-相关(F-related): 两个任务的数据可以从一组分布变换 F 得到的固定概率分布生成

(4)任务的分类边界接近,也就是参数向量(parameter vectors)接近

任务是否相似不是非0即1的。越相似的任务,收益越大。但即使相关性不佳的任务也会有所收益。不过任务之间的相似性对我们在选择辅助任务上还是有绝对的帮助的。

3. 共享表示 (shared representation)

共享表示的目的是为了提高泛化(improving generalization),一般来说有两种

1)、基于参数的共享 (Parameter based):比如基于神经网络的MTL,高斯处理过程。

2)、基于约束的共享 (regularization based):比如均值,联合特征(Joint feature)学习(创建一个常见的特征集合)。

神经网络中MTL的共享表示有两种方式

3.1 hard参数共享

它是神经网络MTL中最常见的一种方式,即在所有任务之间共享隐藏层,同时保留几个特定任务的输出层。这种方式很大程度上降低了过拟合的风险,因为同时学习的工作越多,模型找到一个含有所有任务的表征就越困难,而过拟合某特定原始任务的可能性就越小。

3.2 soft参数共享

每个任务有自己的参数和模型,最后通过对不同任务的参数之间的差异加约束,表达相似性。比如可以使用L2进行正则, 迹范数(trace norm)等。

4、优势

为什么多个相关的任务放在一起学习就可以提升学习效果?关于这个问题,有很多解释。这里列出其中一部分。

(1)、多个任务一起学习时,有相关部分也有不那么相关的地方,在学习一个任务时,与它不相关的部分就相当于是加入一些噪声,而加入噪声可以提升模型的泛化能力

(2)、单任务学习时容易陷入局部最优,而多任务学习中不同任务的局部最优解处于不同的位置,通过相互作用,可以逃离局部最优

(3)、增加任务会影响网络参数的更新,比如增加额外的任务增加了隐层的有效的学习率,具体取决于每个任务输出的错误反馈权重。可能较大的学习速率提升了学习效果

(4)某些特征可能在主任务不好学习(比如以很复杂的方式与特征进行交互,或被其他因素抑制),但在辅助任务上这个特征好学习到。可以通过辅助任务来学习这些特征,方法比如hints(预测重要特征)

(5)通过学习足够大的假设空间,在未来某些新任务中可以有较好的表现(解决冷启动),前提是这些任务都是同源的

(6)多个任务在浅层共享表示,引入归纳偏置作为正则化项。因此,它降低过拟合的风险以及模型的 Rademacher 复杂度(即适合随机噪声的能力)

5、应用场景

多任务学习在传统机器学习和深度学习方向都有很多应用,这里就不一一举例了。

深度学习网络是具有多个隐层的神经网络,在深度学习网络中应用多任务学习是一种很自然的想法。机器视觉领域有广泛的多任务学习应用,主要方式包括:

1)多个任务并行输出,同时做分类和回归或使用不同的损失函数;

2)多个任务像流水线一样,辅助任务附加在主任务后面等。

参考博文:

http://sebastianruder.com/multi-task/index.html

https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid=2650728311&idx=1&sn=62b2dcc82657d1ce3bf91fd6a1197699&chksm=871b2309b06caa1fa314e3807d84cdb32eb34419341ba26e037dabe90909ca4a9f480b6eeac2&scene=21&token=630103414&lang=zh_CN#wechat_redirect

https://blog.csdn.net/zaf0516/article/details/90380732

https://blog.csdn.net/lqfarmer/article/details/73322878

https://blog.csdn.net/laolu1573/article/details/78205180#2

Multi task learning多任务学习背景简介相关推荐

  1. Multi Task Learning在工业界如何更胜一筹

    摘要: 本文主要介绍多任务学习和单任务学习的对比优势以及在工业界的一些使用.如何从单任务学习转变为多任务学习?怎样使AUC和预估的准确率达到最佳?如何对实时性要求较高的在线应用更加友好?本文将以淘宝实 ...

  2. 多任务学习MTL-基本介绍(一)

    多任务模型 单任务模型 一个模型学习一个目标,不同模型享用独立的模型空间,不同模型之间没有连接,相互独立 多任务模型 一个模型学习多个目标,共享同一个模型空间 优势:相比于单任务模型,同时学习多个相关 ...

  3. 多任务学习(Multi-task Learning)方法总结

    多任务学习(multi task learning)简称为MTL.简单来说有多个目标函数loss同时学习的就算多任务学习.多任务既可以每个任务都搞一个模型来学,也可以一个模型多任务学习来一次全搞定的. ...

  4. 多任务学习(Multi-Task Learning, MTL)

    目录 [显示] 1 背景 2 什么是多任务学习? 3 多任务学习如何发挥作用? 3.1 提高泛化能力的潜在原因 3.2 多任务学习机制 3.3 后向传播多任务学习如何发现任务是相关的 4 多任务学习可 ...

  5. PAMTRI:用于车辆重新识别的姿势感知多任务学习

    Today, we will discuss an unorthodox paper by NVIDIA Labs on Vehicle Re Identification. 今天,我们将讨论NVID ...

  6. 机器学习-48-Life-long Learning(终生学习)

    文章目录 Life-long Learning 简介 Knowledge Retention(知识保留) Example – Image Example – Question Answering Mu ...

  7. 多任务学习(Multi-task)keras实现

    多目标任务存在很多场景中,如多目标检测,推荐系统中的多任务学习. 多任务学习(Multi-task learning)简介 多任务学习背景:只专注于单个模型可能会忽略一些相关任务中可能提升目标任务的潜 ...

  8. 2021年浅谈多任务学习

    作者 | 多多笔记 来源 |AI部落联盟 头图 | 下载于视觉中国 写此文的动机: 最近接触到的几个大厂推荐系统排序模型都无一例外的在使用多任务学习,比如腾讯PCG在推荐系统顶会RecSys 2020 ...

  9. 多任务学习模型之ESMM介绍与实现

    简介:本文介绍的是阿里巴巴团队发表在 SIGIR'2018 的论文<Entire Space Multi-Task Model: An Effective Approach for Estimat ...

最新文章

  1. 8-flutter 异步和线程
  2. 对于随机变量的标准差standard deviation、样本标准差sample standard deviation、标准误差standard error的解释...
  3. hibernate主配置文件中指定session与当前线程绑定
  4. 高性能服务器架构思路「不仅是思路」
  5. 2020,PyTorch真的赶上TensorFlow了吗?
  6. vue学习:事件传递(冒泡和捕获),事件委托,jquery中的事件委托,$event 获取元素,vue事件修饰符
  7. python中字符串格式化符号含义
  8. 深度长文:地球真的进入“人类世”时期了吗?
  9. .NET Core版本揭秘
  10. 总结ThinkPHP使用技巧经验分享(三)
  11. 大数据学习路线图 让你精准掌握大数据技术学习
  12. Python--day34--前面网络编程的复习
  13. linux vi 回到命令行,linux vi(linux系统vi命令详解)
  14. 对话甲乙丙丁CEO阮成瑜:要做产业互联网标杆,和新零售探路者
  15. OSChina 周三乱弹 ——发福利的日子到了!来领妹子!
  16. linux系统编译dfu
  17. Java版 设计一个程序, 输入三位数a, 分别输出个,十,百位
  18. php mysql 金钱_PHP实现货币换算的方法
  19. 苹果AirPods3将用与AirPods Pro中相同的SiP技术
  20. pygame创建透明背景

热门文章

  1. 基于链表实现队列(基于Java实现)
  2. TCP实现服务器与单客户端连接(多线程)
  3. 关键短语抽取及使用BERT-CRF的技术实践
  4. 进度条三方库tdqm trange用法
  5. EM算法讲推导原理讲的懂了的,表达清晰易懂的, 收藏cnblog上的大牛的
  6. android 弹出键盘 底部控件上移,如何设置底部控件view随着软键盘的弹出而上移...
  7. 有限域f9的特征是多少_宽频域谐波的潜在威胁欠缺全面考虑,现有标准需进一步优化...
  8. 中科院自动化所余山:对大脑的未知,并不阻碍借鉴大脑,成就智能
  9. 如果现在只能用汇编和 Goto 编程......
  10. 新闻通稿 | 2021年世界互联网大会乌镇峰会网络法治分论坛圆满举行