【多任务学习-Multitask Learning概述】

2023-05-16

多任务学习-Multitask Learning概述

  • 1.单任务学习VS多任务学习
    • 多任务学习的提出
    • 多任务学习和单任务学习对比
  • 2.多任务学习
    • 共享表示shared representation:
    • 多任务学习的优点
    • 那么如何衡量两个任务是否相关呢?
  • 当任务之间相关性弱
  • 多任务MLP特点总结
  • 多任务学习与其他学习算法之间的关系
  • 多任务学习应用

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

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

多任务学习的提出

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

多任务学习和单任务学习对比

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

2.多任务学习

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

多任务学习涉及多个相关的任务同时并行学习,在神经网络中同时反向传播,多个任务通过浅层的共享表示(shared representation)来互相帮助学习,提升泛化效果。简单来说:多任务学习把多个相关的任务放在一起学习(注意,一定要是相关的任务),学习过程中通过一个在浅层的共享表示来互相分享、互相补充学习到的领域相关的信息,互相促进学习,提升泛化的效果。

共享表示shared representation:

共享表示的目的是为了提高泛化(improving generalization),图2中给出了多任务学习最简单的共享方式,多个任务在浅层共享参数。MTL中共享表示有两种方式:
图2
(1)、基于参数的共享(也叫硬约束)(Parameter based):比如基于神经网络的MTL
在这里插入图片描述

(2)、基于软约束的共享(regularization based):比如均值,联合特征(Joint feature)学习(创建一个常见的特征集合or矩阵)。每个任务都有自己的模型,自己的参数。我们对模型参数的距离进行正则化来保障参数的相似
在这里插入图片描述
两种常见共享表示的比较:
基于软约束的多任务学习方法,该方法不要求底部的参数完全一样,而是对不同任务底部的参数进行正则化。相对于硬参数约束的多任务深度学习模型,软约束的多任务学习模型的约束更加宽松,当任务关系不是特别紧密的时候,有可能学习得到更好的结果

如何参数共享?
从机器学习的角度来看,我们将多任务学习视为一种归纳迁移。归纳迁移通过引入归纳偏置来改进模型,使得模型更倾向于某些假设。举例来说,常见的一种归纳偏置是L1正则化,它使得模型更偏向于那些稀疏的解。在多任务学习场景中,归纳偏置是由辅助任务来提供的,这会导致模型更倾向于那些可以同时解释多个任务的解
我们可以记得的是L1正则化是对参数之和上的约束,强制除少数几个外的其他所有参数为0。
通过正则化我们选取所要在不同人任务模型之间共享的参数。块稀疏正则化相对复杂不展开先简单了解。

块稀疏正则化
为了更好的将这些方法联系起来,我们首先介绍了一些符号的含义。我们有T个任务,每个任务t,对应的模型记为,模型参数记为,维度为d维。我们用列向量来表示参数。将这些列向量堆起来形成一个矩阵。矩阵A的第i行对应每个模型的第i个特征,第j列对应任务j的模型参数。

现有的许多方法都对模型参数做出稀疏性假设。文献[8]认为所有模型共享参数的一个小集合。从任务参数矩阵A的角度来看,这就意味着除了少数几行外全部是0,与之对应的只有少数特征是可以在不同任务间共享的。为了强制做到这一点,在多任务学习中强制加L1正则化项。我们可以记得的是L1正则化是对参数之和上的约束,强制除少数几个外的其他所有参数为0。L1正则化又被称为LASSO(Least Absolute Shrinkage and Selection Operator)。

对于单一任务场景,L1正则化的计算仅依赖于单个任务t中的模型参数。对于多任务场景,L1正则化的计算是基于任务参数矩阵A,首先对每行(对应每个任务的第i个特征)计算正则化,产生列向量,然后计算这个向量的L1正则化,从而强迫b中大部分项为0。

我们可以使用不同的正则化,取决于我们想要对每行设置什么样的约束。一般来说,我们将之称为混合正则化(mix norm)约束正则化。由于这样做导致A的整行为0,故可称之为块稀疏性正则化(Block-Sparsity Regularization)。文献[9]使用正则化,而Argyriou使用正则化。后者又被称为group lasso,首次提出是在文献[10]中。Argyriou等人于2007年的时候证明了优化非凸的group lasso可以通过对任务参数矩阵A进行迹正则化(trace norm)约束转化为凸优化问题。也就是,强制矩阵A是低秩的,其中的每一个列向量都位于一个低维度的子空间。文献[11]为了进一步在多任务学习中使用group lasso来建立上界约束。

块稀疏正则化在直觉上是非常受欢迎的,它的受欢迎程度与它依赖于任务间参数共享程度是一样的。文献[12]证明了当任务间特征不重叠时,正则化可能会比单纯的元素层面的正则化效果更糟。因此,文献[13]提出了将块稀疏正则化与元素稀疏正则化结合以改进块稀疏模型。他们将任务参数矩阵A分解为矩阵B与S,其中A=B+S。然后,对B使用强制的块稀疏正则化,对S使用lasso来进行元素稀疏正则化。文献[14]提出了一个分布式版本的group lasso正则化。

如何实现软约束?
其中是平均参数向量。该惩罚项强制一些任务向量的聚类靠近其均值,用来控制。
它寻求使得所有模型接近均值模型。

多任务学习的优点

(1)、提高泛化能力,多人相关任务放在一起学习,有相关的部分,但也有不相关的部分。当学习一个任务(Main task)时,与该任务不相关的部分,在学习过程中相当于是适当的噪声,因此,引入噪声可以提高学习的泛化(generalization)效果

(2)、防止陷入局部最优,单任务学习时,梯度的反向传播倾向于陷入局部极小值。多任务学习中不同任务的局部极小值处于不同的位置,通过相互作用,可以帮助隐含层逃离局部极小值。

(3)、提高学习速率和效果,添加的任务可以改变权值更新的动态特性,可能使网络更适合多任务学习。

(4)、防止过拟合,多个任务在浅层共享表示,可能削弱了网络的能力,降低网络过拟合,提升了泛化效果。

(5)、学习能力提升,某些特征可能在主任务不好学习,但在辅助任务上好学习。可以通过辅助任务来学习这些特征

(6)、偏置机制。多任务学习更倾向于学习到一类模型。由于一个对足够多的训练任务都表现很好的假设空间,对来自于同一环境的新任务也会表现很好,所以这样有助于模型展示出对新任务的泛化能力[7]。

那么如何衡量两个任务是否相关呢?

一些理论研究:

  • 使用相同的特征做决策
  • 相关的任务共享同一个最优假设空间(having the same inductive bias)
  • F-related: 如果两个任务的数据是通过一个固定分布经过一些变换得到
  • 分类边界(parameter vectors)接近

任务是否相似不是非0即1的,越相似的任务,收益越大

当任务之间相关性弱

当任务之间相关性较弱,使用上述方法可能导致negative transfer(也就是负向效果)。在此情景下,我们假设某些任务之间是相关的,但是某些任务之间是相关性较差。可以通过引入任务集合来约束模型(第二种常见的共享表示)可以通过动态的约束 不同任务的参数向量 和降低他们的方差。限制不同模型趋向于不同的各自任务参数向量

前面提到的某些特征在某些任务不好学,提出主任务和辅助任务概念,(NLP中主任务为情感预测,辅助任务为inputs是否包含积极或消极的词;)。辅助任务应该在一定程度上与主任务相关,利于主任务的学习。

多任务MLP特点总结

  • 紧凑分布均匀的label的辅助任务更好
  • 主任务训练曲线更快平稳,辅助任务慢
  • 不同任务尺度不一样,任务最优学习率可能不同
  • 某个任务的输出可以作为某些任务的输入
  • 某些任务的迭代周期不同,可能需要异步训练?(后验信息;特征选择,特征衍生任务等)
  • 整体loss函数可能被某些任务主导,需要整个周期对参数进行动态调整
    「一个loss函数的多任务」:很多任务中把loss加到一起回传,实质优化的是一个loss函数, 但过程是多个任务,loss相加是多任务学习的一种正则策略

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

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

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

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

多任务学习应用

现实生活中有很多适合多任务学习的场景,以下举例说明
(1).自然语言处理相关的研究,比如把词性标注、句子句法成分划分、命名实体识别、语义角色标注等任务放在一起研究。
(2).人脸识别中,人脸的属性的研究、人脸识别、人脸年龄预测等任务也可以通过多任务学习进行解决。
(3).图像分类,不同光照下、拍摄角度、拍摄背景下等分类任务的研究,也可以在多任务研究的框架下完成。除了上述举例的三种不同应用之外,现实生活中还有很多类似的多任务学习的例子。
https://blog.csdn.net/qq_32782771/article/details/90517443?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【多任务学习-Multitask Learning概述】 的相关文章

  • Samba服务

    目录 配置yum源 安装samba服务 配置samba服务 Windows环境使用Samba服务 Linux环境使用Samba服务 xff08 1 xff09 方法一使用smbclient命令 xff08 2 xff09 方法二使用挂载的方
  • 已解决—The connection to the server localhost:8080 was refused - did you specify the right host or port

    运行 kubectl get namespace时报错 xff1a root 64 ip 10 0 0 8 kubectl get namespace E0320 07 39 20 866425 32422 memcache go 265
  • 修改ideal中java项目jdk版本,记得收藏

    1 Ctrl 43 Shfit 43 Alt 43 S 进入Settings 窗口 xff0c 修改红框标记的两处jdk版本 2 Ctrl 43 Shfit 43 Alt 43 S 进入Project Structure窗口 xff0c 先
  • GO语言开发环境配置(Linux)

    Go语言开发环境配置 xff08 Linux xff09 一 Go安装二 IDE安装三 Vim IDE 常用功能 一 Go安装 Go 有多种安装方式 xff0c 比如 Go 源码安装 Go 标准包安装 第三方工具 xff08 yum apt
  • HBase过滤器

    目录 一 介绍 1 hbase运算符 2 Hbase 过滤器的比较器 二 代码 1 hbase建表 2 创建数据 3 导入依赖 4 列值过滤器 5 单列值过滤器 6 单列值排除过滤器 7 rowkey过滤器 8 rowkey前缀过滤器 xf
  • Hive与HBase之间的区别和联系

    目录 概念 Hive HBase 共同点 区别 关系 首先要知道Hive和HBase两者的区别 xff0c 我们必须要知道两者的作用和在大数据中扮演的角色 概念 Hive 1 Hive是hadoop数据仓库管理工具 xff0c 严格来说 x
  • VSCode(Visual Studio Code )软件(插件)安装与使用

    VSCode 简介 Visual Studio Code 简称 VS Code VSC 是微软公司推出的一款免费开源的现代化轻量级代码编辑器 xff0c 支持几乎所有主流的开发语言的语法高亮 智能代码补全 GIT 等特性 xff0c 支持插
  • 51单片机智能小车

    最近学校举办了一个智能小车比赛 xff0c 比赛内容为用手机蓝牙控制小车拥有5个功能 xff0c 分别是超声波舵机避障 xff0c 测距 xff08 显示在LCD1602上 xff09 xff0c 红外跟随 xff0c 循迹还有蓝牙控制小车
  • 在Matlab中通过mex使用cuda的方法

    仅供参考 xff0c 具体问题需要具体分析 xff01 1 cuda安装及配置 xff0c 参考下面这篇 cpp文件调用cuda函数 苹果挨炮的博客 CSDN博客 2 Matlab配置mex编译环境 在matlab命令行中输入以下命令 me
  • container_of 详解

    container of宏的功能 xff1a 从结构体类型 type 的一个成员 member 指针 ptr xff0c 反推得到该结构体的指针 其实现由两个分号隔开的语句组成 xff0c 首先用typeof关键字 xff0c 得到memb
  • ubuntu 内存清理【亲测有效】

    目录 一 xff1a 引言 二 xff1a ubuntu 内存清理 应急 1 移除掉不再需要的软件包 2 清理ubuntu中的APT缓存 3 清理缩略图缓存 4 手动删除老旧Linux内核 5 删除多余的孤立包 6 卸载不必要的应用程序 一
  • hdfs的常见语句

    开hdfs环境 xff1a xff08 开启成功后用jps命令出来至少6条数据 xff09 start all sh 关hdfs环境 xff08 记得关 xff0c 容易坏 xff09 xff1a stop all sh 上传文件 xff1
  • 疑难杂症之vscode--During startup program exited with code 0xc0000139.--缺失重要文件(杂记)

    问题展示 在vscode中 xff0c 只要用了STL容器 xff0c 就会出现这样的提示 发现自己的 vscode 不能运行带有部分 stl 库的程序 xff0c 编译不会报错 xff0c 运行也不会报错但是也没有结果 xff0c 调试的
  • SpringBoot整合Jcasbin,RESTful,Mysql,入门

    Casbin 是一个权限框架 xff0c 这里就不多赘述了 xff0c 有兴趣自己了解 Casbin xff0c 这里我们使用的是JCasbin 首先需要了解Casbin的Model和Policy xff0c 可以通过这里观察编辑器 xff
  • 聚类联邦学习的拜占庭鲁棒性

    聚类联邦学习的拜占庭鲁棒性 2020 ICASSP On the Byzantine Robustness of Clustered Federated Learning 原文链接 xff1a https ieeexplore ieee o
  • 网络安全学习(十七)VlAN

    虚拟局域网vlan vlan是二层技术 xff0c 路由器上不能配置vlan表 主要应用在交换机上 广播的危害 xff1a 增加网络 终端负担 xff0c 传播病毒 xff0c 安全性 路由器也可以隔离 xff0c 但有缺点 成本高 不灵活
  • 计算机网络 - IPv4 常考知识点详解(超详细!)

    目录 一 IPv4分组 1 IPv4分组的格式 2 IP数据报分片 3 网络层转发分组的流程 二 IPv4地址与NAT 1 IPv4地址 2 NAT 三 子网划分与子网掩码 CIDR 1 子网划分 2 子网掩码 3 CIDR 四 ARP D
  • 浏览器工作原理(超级详解!!!!)

    浏览器工作原理 浏览器的结构 用户界面 gt 浏览器引擎 gt 渲染引擎 渲染引擎上有 网络 js解析器 gt 也称浏览器内核 浏览器引擎上有 xff1a 数据持久层 xff08 帮助浏览器存储数据 如cookie等 xff09 各个浏览器
  • The repository ‘https://ppa.launchpadcontent.net/ubuntugis/ppa/ubuntu jammy Release‘ does not have a

    问题场景 在Ubuntu22 04中安装软件时报错 xff1a The repository span class token string 39 https ppa launchpadcontent net ubuntugis ppa u
  • tx2 安装opencv4.1.1及opencv_contrib-4.1.1

    目前tx2系统是jetpack4 5 xff0c 并且刷机的时候把opencv也给刷进去了 xff0c 所以我知道自己的opencb是4 4 1 但这里 xff0c 我把opencv版本查询命令也给附上 opencv3 opencv ver

随机推荐