多任务学习是机器学习的重要组成部分,但是对于应用深度学习进行多任务学习时会遇到一个棘手的问题,那就是我们该如何确定网络的共享部分。针对不同的任务,其最佳共享层往往不同。

此外,针对不同的多任务学习,我们需要根据任务需求设计不同的共享层,并没有统一的标准。因此,本文针对这一问题设计了“十字绣”单元,通过端对端的学习来自动决定共享层。

论文: Cross-stitch Networks for Multi-task Learning
作者: Ishan Misra / Abhinav Shrivastava / Abhinav Gupta / Martial Hebert
转载自:PaperWeekly

引出主题

多任务学习是机器学习的重要组成部分,但是在应用深度学习进行多任务学习时会遇到一个棘手的问题,那就是我们该如何确定网络的共享部分。针对不同的任务,其最佳共享层往往不同。

本文使用 AlexNet 网络分别进行图像检测、图像属性生成及图像语义分割、图像平面法向量生成(Surface Normal)等多任务学习。针对两个任务,作者分别从 fc8 层进行共享,一直测试到两者完全不进行共享的为止。

▲ 图1

实验结果如图 1 所示,其中,图 1(b)是不同共享层完全独立时的效果对比,可以看出对于任务一来说,共享部分在 conv4 时所能达到的效果,针对于任务二来说,在 fc7 层的效果最好。

此外,针对不同的多任务学习,我们需要根据任务需求设计不同的共享层,并没有统一的标准。因此,本文针对这一问题设计了“十字绣”单元,通过端对端的学习来自动决定共享层。

“十字绣”单元与网络设计

Cross-stitch Unit

本文的核心就在这里,设计“十字绣”单元的思想如图 2 所示,通过在两个网络的特征层之间增加“十字绣”单元可以使网络自动学习到需要共享的特征。


▲ 图2

其中的“十字绣”单元就是一个系数矩阵。其表达式如式(1)所示。

[x~ijAx~ijB]=[αAAαABαBAαBB][xijAxijB](1)[x~Aijx~Bij]=[αAAαBAαABαBB][xAijxBij](1)

\begin{bmatrix} \tilde{x}^{ij}_{A}\\ \tilde{x}^{ij}_{B} \end{bmatrix}=\begin{bmatrix} \alpha_{AA} &\alpha_{BA} \\ \alpha_{AB} &\alpha_{BB} \end{bmatrix}\begin{bmatrix} x^{ij}_{A}\\ x^{ij}_{B} \end{bmatrix}\quad\quad (1)
针对这个“十字绣”单元如何进行端对端学习呢?作者给了具体的计算公式:

⎡⎣⎢∂L∂xijA∂L∂xijB⎤⎦⎥=[αAAαABαBAαBB]⎡⎣⎢∂L∂x~ijA∂L∂x~ijB⎤⎦⎥(2)[∂L∂xAij∂L∂xBij]=[αAAαBAαABαBB][∂L∂x~Aij∂L∂x~Bij](2)

\begin{bmatrix} \frac{\partial L}{\partial x^{ij}_{A}}\\ \frac{\partial L}{\partial x^{ij}_{B}} \end{bmatrix}=\begin{bmatrix} \alpha_{AA} &\alpha_{BA} \\ \alpha_{AB} &\alpha_{BB} \end{bmatrix}\begin{bmatrix} \frac{\partial L}{\partial \tilde{x}^{ij}_{A}}\\ \frac{\partial L}{ \partial \tilde{x}^{ij}_{B}} \end{bmatrix}\quad\quad(2)

∂L∂αAB=∂L∂x~ijBxijA,∂L∂αAA=∂L∂x~ijAxijA(3)∂L∂αAB=∂L∂x~BijxAij,∂L∂αAA=∂L∂x~AijxAij(3)

\frac{\partial L}{\partial \alpha_{AB}}=\frac{\partial L}{\partial \tilde{x}^{ij}_{B}}x^{ij}_{A},\quad \frac{\partial L}{\partial \alpha_{AA}}=\frac{\partial L}{\partial \tilde{x}^{ij}_{A}}x^{ij}_{A}\quad\quad(3)
在下文中,为了方便,将 αAB 及 αBA 统称为 αD 表示不同任务的权重值,αAA 及 αBB 统称为 αS 表示相同任务的权重值。

“十字绣”网络设计

图 3 是作者通过对网络添加“十字绣”单元设计的网络。


▲ 图3

网络设计好之后,作者又针对网络提出了以下几个问题:
1. 如何对“十字绣”单元进行初始化,及如何设置“十字绣”单元的学习速率?

作者认为初始值设置应该在 [0,1] 之间,此外,作者还针对初始值及学习速率的设计进行了实验,以决定如何对两者进行设计能够达到最优效果。

2. 如何对网络 A 和 B 进行初始化?

如何对 A、B 进行初始化呢?作者提出了两种方案,第一种就是网络全用由 ImageNet 训练出的参数进行初始化,然后对整个“十字绣”网络进行训练。第二种是针对一种任务在网络上进行微调,然后再添加“十字绣”单元,并对网络进行训练。

参数选取

针对 2.2 中提到的两个问题,作者分别尝试了不同的策略来对参数进行选择。实验结果如表 1 所示:


▲ 表1

在对“十字绣”单元进行训练时作者发现,用来更新网络参数的学习速率相对于“十字绣”单元而言太小了,以至于无法得到好的效果,实验结果如表 2 所示:


▲ 表2

关于如何对网络 A、B 进行初始化,作者同样进行了实验,实验结果如表 3 所示:


▲ 表3

表 4 展示了在 αDαD\alpha_{D} 及 αSαS\alpha_{S} 取不同的初始值时,最终网络各层各个通道的 αDαD\alpha_{D} 及 αSαS\alpha_{S} 的值的分布情况。其中 αDαD\alpha_{D} 越大说明共享程度越大, αSαS\alpha_{S} 越大,说明特征的特殊性越强。


▲ 表4

实验及结果分析

为验证本文算法的有效性,作者分别在 NYU-v2 数据集进行了图像语义分割及图片平面法向量生成实验,在 PASCAL VOC 2008 数据集上进行了物体检测和属性预测实验。

作者分别针对单任务网络、结合两个单任务的网络(文中称为“ensemble”)、多任务网络(如图 1 中那样尝试在各个特征层共享特征)进行了实验。平面法向量生成及图像语义分割的实验结果如表 5 所示:


▲ 表5

从表 5 可以看出,使用“十字绣”单元的网络均能在两个任务上得到较好的结果。此外,作者分析在图像语义分割任务中,存在严重的数据匮乏问,如图 5 中黑线所示,wall、floor 的数据数量远超出其余的类别数,其中,蓝色柱状表示采用“十字绣”单元的多任务学习相对于单任务学习在效果上的增益,从图中可以看出,数量越少的类别所获得增益越多。


▲ 图5

图像检测及属性预测的实验结果及增益情况分别如表 6 及图 6 所示:


▲ 表6

▲ 图6

总结与分析

虽然本文作者提到他们的方法相对于传统方法不需要去依次尝试如何选取所要共享的特征层,但是增加的“十字绣”单元同样带来了很多麻烦的东西,例如,如何进行初始化,如何设置学习速率。最终的实验结果表明,使用该方法对多任务学习的性能有一定的提升。

针对多任务学习的“十字绣网络”相关推荐

  1. 多任务学习中的网络架构和梯度归一化

    在计算机视觉中的单任务学习已经取得了很大的成功.但是许多现实世界的问题本质上是多模态的.例如为了提供个性化的内容,智能广告系统应该能够识别使用的用户并确定他们的性别和年龄,跟踪他们在看什么,等等.多任 ...

  2. 综述翻译:多任务学习-An Overview of Multi-Task Learning in Deep Neural Networks

    An Overview of Multi-Task Learning in Deep Neural Networks 文章目录 An Overview of Multi-Task Learning i ...

  3. 多任务学习 (Multitask Learning) 汇总

    1 前言 多任务学习(Multi-task learning)是和单任务学习(single-task learning)相对的一种机器学习方法.在机器学习领域,标准的算法理论是一次学习一个任务,也就是 ...

  4. 7篇顶会论文带你梳理多任务学习建模方法

    如果觉得我的算法分享对你有帮助,欢迎关注我的微信公众号"圆圆的算法笔记",更多算法笔记和世间万物的学习记录- 公众号后台回复"多任务",即可获取相关论文资料集合 ...

  5. CMU提出「十字绣网络」,自动决定多任务学习的最佳共享层

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

  6. 密集预测任务的多任务学习(Multi-Task Learning)研究综述 - 网络结构篇(上)

    [ TPAMI 2021 ] Multi-Task Learning for Dense Prediction Tasks: A Survey [ The authors ] • Simon Vand ...

  7. 多任务学习 | YOLOP,一个网络同时完成三大任务

    关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 paper: https://arxiv.org/abs/2108.11250 ...

  8. 多任务学习pytorch使用不同学习率同时训练多个网络的方法

    多任务学习时需要多个网络一起训练,并设置不同的学习率,pytorch中有以下几种方法: 首先网络设置如下: import torch# Encoder参数共享 Decoder分别训练 Encoder ...

  9. [译]深度神经网络的多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)...

    译自:http://sebastianruder.com/multi-task/ 1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我 ...

最新文章

  1. 错把一加当苹果,美国海关侵权大案糗大了:被网友无情嘲讽
  2. 【攻防世界020】easyRE1
  3. java5年转c语言,时隔5年,C语言再次领先Java,荣登编程语言排行榜第一!
  4. http服务ajax编程
  5. easyUI根据参数动态的生成列数
  6. GO 语言博客 搬家部署,NGINX作为代理
  7. 儿童手表语音物联卡贵吗?如何办理?
  8. linux 命令行 双引号,每天一个Linux命令之shell单引号和双引号的经典解释
  9. 华硕a550jk4200公版显卡驱动适配教程
  10. 编程c语言黑与白,C语言黑与白问题代码及解析
  11. 复现awvs——CVE-2020-1938(CNVD-2020-10487)tomcat ajp 文件包含漏洞
  12. Errors occurred during the build. Errors running builder 'JavaScript Validator'
  13. python中if brthon环境安装包_Python实现base64编码的图片保存到本地功能示例
  14. 奋斗吧,程序员——第四十六章 此情可待成追忆,只是当时已惘然
  15. 2022年国家社会/自然科学基金立项名单
  16. 如何查看win10专业版是否永久激活
  17. 超超超超超详细的数据库课设报告-学生公寓管理系统
  18. win7快捷键_?如何用U盘安装win7系统?
  19. ABB510变频器通讯故障
  20. cadence 16.3中设置层叠结构正片/负片

热门文章

  1. spa,ssr对seo的影响和区别
  2. Scanner、Random和ArrayList的基本使用规则;猜数字的小游戏程序与随机不重复点名的程序
  3. [译]PG复制和自动故障转移--2
  4. Hyper-v无法启动虚拟机,因为虚拟机管理程序未运行?
  5. 项目-企业客户关系管理系统(登录+首页操作菜单)
  6. Java开发实战讲解!java象棋游戏源代码
  7. 基于Kubernetes/K8S构建Jenkins持续集成平台(一)
  8. 查询是谁在用挂载的硬盘
  9. Nginx 提升网站访问速度
  10. 2019上海科技大学991数据结构与算法