在计算机视觉中的单任务学习已经取得了很大的成功。但是许多现实世界的问题本质上是多模态的。例如为了提供个性化的内容,智能广告系统应该能够识别使用的用户并确定他们的性别和年龄,跟踪他们在看什么,等等。多任务学习(Multi-Task Learning, MTL)可以实现这样的系统,其中一个模型在多个任务之间分配权重,并在一次正向传递中产生多个推理。

多任务学习中的优化

因为有多个任务同时运行所以MTL 的优化过程与一般的单任务模型有所不同,为了避免一项或多项任务对网络权重产生主导影响,应该仔细平衡所有任务的联合学习。这里介绍了一种考虑任务平衡问题的方法。

MTL 问题中的优化目标可以表述为

这里‘wi’是特定任务的权重,‘Li’是特定的损失函数,使用随机梯度下降来最小化上述目标,共享层“Wsh”中的网络权重更新为:

当任务梯度发生冲突时,或者说当一个任务的梯度幅度远高于其他任务时,网络权重更新可能不是最优的。这就需要在损失中设置针对于不同任务的权重,这样才能保证梯度幅度在各个任务间的相对平衡。

梯度归一化

有一种称为梯度归一化 (GradNorm)[1] 的优化方法,通过使不同任务的梯度具有相似大小来控制多任务网络训练的方法。这样可以鼓励网络以相同的速度学习所有任务。在展示这种方法之前,我们将介绍相关的符号。

这里也为每个任务 i 定义了不同的训练率:

GradNorm 旨在在多任务网络的训练过程中平衡两个属性:

1、平衡梯度幅度:平均梯度被用作基线,可以根据该基线计算作业之间的相对梯度大小。

2、在学习不同任务的速度之间找到一个很好的平衡点:使用了loss变化率(inversetrainingrate), 任务 i 的梯度幅度应该随着相对变化率的增加而增加,从而刺激任务更快地训练。GradNorm 通过减少以下损失来实现这些目标。

其中 α 是已添加到方程中的附加超参数。α 设置“恢复力”的强度,可以使任务恢复到一个普通的训练速率。在任务复杂性大导致任务之间的学习动态差异大时,应使用更大的 α 值来确保更好的训练率平衡。当问题更加对称时,需要较低的 α 值。

实验

这里使用了 NYUv2 的两种变体数据集。将每个视频的翻转和附加帧添加到标准 NYUv2 数据集中。我们额外添加了 90,000 张照片,每张照片都包含单目深度估计, 表面法线估计, 关键点定位。这些额外的帧没有分段标签。所以就获得两个数据集:NYUv2+seg 和 NYUv2+kpts。这里将交叉熵用于分割,将平方损失用于深度估计,将余弦相似度用于法线估计。

上表中看到 GradNorm α = 1.5 提高了所有三个任务相对于等权基线的性能,并且超过或匹配每个任务的单个网络的最佳性能。

为了展示 GradNorm 如何在更大数据集的情况下执行,还在 NYUv2+kpts 数据集上进行了广泛的实验。

尽管训练损失更高了,但GradNorm 通过对网络进行速率平衡将深度估计的测试误差减少5%。并最终将深度的权重抑制到了低于 0.10,并且关键点的误差也出现了通向的趋势,这就是网络正则化的明显趋势。

实验表明:对于各种网络架构例如回归和分类任务,与单任务网络、固定比例的基线和其他自适应多任务损失平衡技术相比,GradNorm 提高了准确性并减少了跨多个任务的过度拟合。

深度多任务学习架构

本节将讨论能够同时学习[2]多个任务的网络架构。我们将关注两种类型的深层多任务架构:以编码器为中心的架构和以解码器为中心的架构。

以编码器为中心的架构在编码阶段共享任务特征,然后用一组独立的特定任务头处理它们。他们在一个处理周期中直接预测来自相同输入的所有任务输出。

但是以编码器为中心的架构无法捕捉任务之间的共性和差异,最近的一些研究工作发现:首先使用多任务网络来进行初始任务预测,然后利用这些初始预测的特性来进一步改进每个任务的输出。这些MTL方法也在解码阶段共享或交换信息,这里将它们称为以解码器为中心的体系结构。

实验

这里使用两个数据集(NYUD-v2 数据集和 PASCAL 数据集)对不同多任务架构的性能进行实验。

NYUD-v2 数据集考虑了室内场景理解。这里专注于语义分割和深度估计任务,mIoU (mean intersection over union)和rmse (root mean square error)来分别评估语义分割和深度估计任务。

PASCAL 数据集是密集预测任务的流行基准。F-measure (odsF) 用于评估边缘检测任务。语义分割、和人体部分分割任务使用mIoU (mean intersection over union)进行评估。使用预测角度中的平均误差 (mErr) 来评估表面法线。

将多任务性能 ΔMTL 定义为每个任务的平均性能下降:

li = 1,如果值越低意味着度量Mi的性能越好。

结果如下:

单任务与多任务:首先,将专注于编码器和专注于解码器的 MTL 模型与它们在 NYUD-v2 和 PASCAL 上的单任务对应进行比较。相对于单任务学习,MTL 可以提供几个优点,即更小的内存占用、减少的计算次数和更高的性能。

在 NYUD-v2 上,MTL 证明了一种联合处理分割和深度估计是有效策略。并且大多数 MTL 模型优于单任务网络集。

在 PASCAL 上,使用 MTL 基线时处理效率更高,但性能也会下降。大多数模型在 PASCAL 上的表现都没有优于它们的单任务模型,这是可能因为多任务的相关性的影响。在 NYUD-v2 上是语义分割和深度估计的任务,这对任务密切相关的,语义分割和深度估计都揭示了场景的相似特征,例如布局和对象形状或边界。但是PASCAL 包含一个更大、更多样化的任务类型。

在比较以编码器和以解码器为中心的模型时,我们发现以解码器为中心的架构通常优于以编码器为中心的架构。我们认为这是因为每种架构范式都有不同的用途。以编码器为中心的架构旨在通过在编码过程中共享信息来学习更丰富的图像特征表示。以解码器为中心的那些专注于通过跨任务交互反复细化预测来改进密集预测任务。因为交互发生在网络输出附近,因此它们可以更好地对齐常见的跨任务模式,并大大提升性能。

以编码器为中心和以解码器为中心都具有优势。所以在未来,我们可以尝试将这两种范式整合在一起。

深入研究

第一篇论文讨论了使用 GradNorm 进行自适应损失平衡以提高深度多任务网络的性能。不同的任务有不同的训练率和数据规模。Normal 方法可能会导致梯度不平衡,并自动专注于某一项任务而忽略其他任务。论文提出的一种梯度归一化,用于深度多任务网络中的自适应损失平衡来解决这个问题。

第二篇论文比较了编码器和解码器架构在不同数据集中的性能。结果表明,相关任务比使用多任务学习的不相关任务执行得更好,并且以解码器为中心的架构通常优于以编码器为中心的架构。

从这两篇论文中,我们可以看到:使用多任务学习,相关任务比不相关任务表现更好;以解码器为中心的架构通常优于以编码器为中心的架构;这些论文关注的是 MTL 模型的优化器,而不是损失函数的定义。

总之,多任务学习有助于提高 AUC 分数的性能并减少损失,对于不同类型的任务,特定的 MTL 模型会表现得更好。因此为特定的任务场景选择或构建模型可能是目前最好的选择。

引用

[1] GradNorm: Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks, arxiv 1711.02257

[2] Multi-Task Learning for Dense Prediction Tasks: A Survey, arxiv 2004.13379

https://www.overfit.cn/post/5a90e7982e254a0580ab3eeeec728714

作者:Huaizhi Ge

多任务学习中的网络架构和梯度归一化相关推荐

  1. 详解深度学习之经典网络架构(十):九大框架汇总

    目录 0.概览 1.个人心得 2.总结 本文是对本人前面讲的的一些经典框架的汇总. 纯手打,如果有不足之处,可以在评论区里留言. 0.概览 (1)详解深度学习之经典网络架构(一):LeNet (2)详 ...

  2. MMoE论文中Synthetic Data生成代码(控制多任务学习中任务之间的相关性)

    Synthetic Data 一. 前言 二. 程序实现 2.1 生成一条数据 2.2 生成一组相关系数为p的数据集 2.3 权重系数的余弦相似度与标签相关系数之间的关系 一. 前言 在MMoE论文中 ...

  3. RS Meet DL(68)-建模多任务学习中任务相关性的模型MMoE

    本文介绍的论文题目是:<Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts ...

  4. 多任务学习中各loss权重应该如何设计?

    作者 | hahakity@知乎 编辑 | 极市平台 在多任务中,通常是把各loss统一到一个数量级,请问这么做的原理是什么呢? 今天分享一个技术硬核文章,详细的聊聊多任务这点事: 个人感觉这是一个非 ...

  5. 深度学习中经典网络结构图和代码

    Inception网络与其它网络的性能对比 PyTorch-Networks: 包含了分类.检测以及姿态估计等网络的pytorch代码 caffe-model-zoo: AlexNet.VGGNet. ...

  6. 针对多任务学习的“十字绣网络”

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

  7. 新论文推荐:Auto-Keras:自动搜索深度学习模型的网络架构和超参数

    Auto-Keras 是一个开源的自动机器学习库,由美国德州农工大学(Texas A&M University)助理教授胡侠和他的两名博士生:金海峰.Qingquan Song提出.Auto- ...

  8. 深度学习之经典网络架构AlexNet(二)

    一.简介 AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的.也是在那年之后,更多的更深的神经网路被提出,比如优秀的vgg,Google ...

  9. 深度学习中的网络设计技术(一) ——理论概述

    一.网络设计 (1) 网路设计要点 网络设计考虑重点:1. 精度 2.容量 3. 效率 精度:网络预测样本的精度(TP / (TP +FP)) 容量:容纳数据量的多少,神经元越多,容量越大. 效率:网 ...

最新文章

  1. ES6里的修饰器Decorator
  2. 7-26晚上实现mystring
  3. Create your own blockchain amp; cryptocurrency! - understand blockchains by creating one in python
  4. Follow My Logic 1048 PKU
  5. android---am命令
  6. iframe 自适应高度 跨域
  7. Git版本控制使用方法入门教程?
  8. 富文本处理NSMutableAttributedString
  9. C语言之while和do-while
  10. 支付宝回应手机黑产;微软将允许员工永久在家办公;Flutter 1.22 正式发布|极客头条
  11. DVR NVR CVR有什么区别
  12. php城市切换,城市切换 - 网下淘
  13. Python从ftp服务器下载文件的源码
  14. matlab指南针的例子,matlab画指北针
  15. 影视搜索播放PHP源码_可对接资源网
  16. 让迁移不再开盲盒,让云也能省钱丨Hackathon 项目背后的故事第一期回顾
  17. 零阶保持模型和一阶保持模型离散的推导
  18. 免费音乐素材网站推荐 视频剪辑自媒体运营必备
  19. epub 免费转换网站
  20. 牛客每日练习----合并回文串,年轮广场,安卓图案解锁

热门文章

  1. c语言程序设计菜鸟教程,C语言菜鸟基础教程之a++与++a
  2. C语言基础编程题(一)
  3. 程序员如何拓展自己的社交圈(超实用)
  4. java xms1024m_关于java:Eclipse中Xmx和Xms的最大值?
  5. python-字符串格式化输出控制小结;格式控制符小结;字符串和变量的结合;3+3种字符串的表示方法
  6. 那些让 Web 开发者们深感意外的事情
  7. 【Unity3D-UGUI系列】(十二)ScrollView 滚动视图组件详解
  8. 阿里云部署Docker私有镜像仓库
  9. SPS 所有信息分析
  10. 支持基于角色的权限访问控制,优化UI界面,JumpServer堡垒机v2.20.0发布