NeurIPS 2022 | AutoMTL:第一个自动化多任务学习编程框架!
点击下方卡片,关注“CVer”公众号
AI/CV重磅干货,第一时间送达
点击进入—> CV 微信技术交流群
NeurIPS 2022 | UMass Amherst 提出AutoMTL: 第一个自动化多任务学习编程框架!
英文标题:AutoMTL: A Programming Framework for Automating Efficient Multi-Task Learning
中文标题:AutoMTL:用于自动化高效多任务学习的编程框架
作者列表:张荔郡,刘潇,关卉
作者单位:UMass Amherst
论文地址: https://arxiv.org/abs/2110.13076
代码地址: https://github.com/zhanglijun95/AutoMTL
1. 引言
多任务学习(Multi-Task Learning)的兴起与主要问题
近年来,人工智能的发展使得越来越多的实际应用开始采用卷积神经网络(CNN)解决与视觉相关的任务,从而导致在资源受限的设备上运行多个 CNN的情况也愈发常见。由于线性增加的计算、能源和存储成本,在设备上同时支持多个模型十分具有挑战性,而解决该问题的一种有效方法就是多任务学习(MTL)—— 联合学习多个任务以允许任务之间的参数共享。MTL往往基于一个骨干模型来建立多任务模型,能够显著降低推理成本,提高泛化性能。
MTL 的有效采用面临两个主要挑战。第一个挑战是资源高效的架构设计——即确定骨干模型的哪些参数在任务之间共享,以优化资源效率和任务准确性。许多先前的工作依赖于手动设计的 MTL 模型架构,这些架构往往共享几个初始层,然后在一个特定点为所有任务进行分支,但是 由于巨大的架构空间,它们通常无法得到令人满意的架构。还有一些工作希望通过模型自动学习如何进行跨任务的共享参数,他们将策略学习组件嵌入到骨干 CNN 中,并训练策略以确定网络中的哪些块应该在哪个任务之间共享,或者在哪里为不同的任务分支。
第二个主要挑战是自动化。一方面手动架构设计需要大量的领域专业知识,另一方面尽管基于神经架构搜索 (NAS) 的方法在一定程度上自动化了模型设计,然而这些方法的实现与特定的骨干模型密切相关,它们理论上可以支持更广泛类型的 CNN。然而,当骨干发生变化时,它们需要大量的手动工作和专业知识来重新实现所提出的算法。
本文的工作
在本文中,我们通过开发 AutoMTL 来解决这两个挑战,这是第一个为视觉任务自动开发资源节约型 MTL 模型的编程框架。AutoMTL 以任意骨干 CNN 和一组任务作为输入,然后自动化地生成一个具有高任务精度和小内存占用地多任务模型。其关键设计在于将架构搜索算法与特定的骨干模型解耦,真正做到不需要任务人力就可以完成MTL在各种骨干模型上的重复实现。
为达成高度自动化的目的,我们设计了一个针对MTL的架构空间编译器,可以自动将用户提供的骨干 CNN 转换为超模型(supermodel),该超模型以基本操作(如Convolution,BN等)的粒度对多任务架构空间进行编码。具体来说,我们提出了一个可伸缩的架构空间,它可以基于不同任务难度和任务间干扰,灵活地派生出具有大模型容量的多任务模型。另外我们还提供了一组 PyTorch API,允许用户灵活指定输入骨干模型。基于自动生成的超模型,我们在AutoMTL中嵌入了基于梯度的架构搜索算法,能够在MTL目标函数的引导下自动搜索出任务之间的最佳共享模式。
我们在几个具有不同任务数量的 MTL 基准上的实验表明,与最先进的方法相比,AutoMTL 可以生成具有更小内存占用和更高任务精度的高效多任务模型,并且只需要0.6秒就可以自动扩展到不同的骨干模型,提高了MTL被广泛应用的可能性。
2. AutoMTL介绍
AutoMTL的两大核心是多任务架构空间编译器MTS-Compiler和架构搜索部件Architecture Search Component。前者自动化了任意骨干模型到多任务超模型的变换,后者自动化了在架构空间中搜索出最优架构的过程。其总体流程如图1所示。首先给定一个骨干模型(图1(a)),用户可以使用 AutoMTL API 或prototxt 格式指定模型(图1(b))。接着MTS-compiler将自动解析模型规范,生成一个对整个搜索空间进行编码的多任务超模型(图1 (c))。最后基于梯度的架构搜索算法将会从超模型中自动识别出最优的多任务模型架构(图1(d))。
图1 AutoMTL流程图。
MTS-Compiler的设计核心是以骨干模型中的每个最基础的操作符作为任务间共享的基本单元。如图1(c)所示,每个任务可以从骨干模型原操作符,原操作符的任务特定副本,以及跳过连接这三种操作符中自行选择,不同的选择能够表明该任务是否要与其他任务共享操作符。因此,给定N个任务和一个由L个操作符组成的骨干模型,那么多任务超模型的大小即。MTS-Compiler的伪代码如下:
Architecture Search Component旨在有效地探索多任务超模型中编码的架构空间。具体来说,每个任务拥有一个任务特定的策略变量以在超模型提供的三种操作符中进行选择,我们采用微分策略近似来实现共享策略和超模型的联合训练,并提出了一种策略正则项来促进任务间参数共享以提高内存效率。首先,由于策略变量是离散的因此不可导,我们采用Gumbel-Softmax Approximation得到软性的策略变量用以联合训练:
然后,为使任务间尽可能选择与能够共存的其他任务进行参数共享以减少内存开销,我们提出了一种策略正则项以鼓励选择共享操作符:
3. 实验结果
我们在经典多任务数据集上与其他方法进行了任务准确度,模型大小,推理速度上的对比,并通过消融研究证明Architecture Search Component及其策略正则化的有效性。
在CityScapes数据集上的任务准确度对比
在CityScapes和NYUv2数据集上的Inference Time (ms)对比
在CityScapes数据集上的Ablation Study
图2 三组多任务模型不同评价指标的分布图。橙色条对应由随机策略生成的模型组,绿色和蓝色条对应与策略经过训练得到的模型组,其中绿色模型组不使用论文提出的策略正则化。
User Study
当骨干模型发生变化时,AutoMTL 没有重新实现的人工成本。用户只需要以 prototxt 格式指定不同的骨干模型,MTS-Compiler只需要约0.6秒即可完成多任务超模型的编译。相反,在我们的用户研究中,拥有精通 PyTorch 技能的编程者仍然需要20至40个 小时来完成其他基于NAS的先进的MTL方法的重新实现。
4. 总结
本文简单介绍了AutoMTL的研究背景和总体结构,并简单实验分析了其有效性。论文中有更详细的技术细节与实验讨论,希望我们的工作能够给多任务学习领域带来一些帮助与启发,期待大家的关注与建议。
CVPR 2022论文和代码下载
后台回复:CVPR2022,即可下载CVPR 2022论文和代码开源的论文合集
后台回复:Transformer综述,即可下载最新的3篇Transformer综述PDF
目标检测和Transformer交流群成立
扫描下方二维码,或者添加微信:CVer222,即可添加CVer小助手微信,便可申请加入CVer-目标检测或者Transformer 微信交流群。另外其他垂直方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch、TensorFlow和Transformer等。
一定要备注:研究方向+地点+学校/公司+昵称(如目标检测或者Transformer+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群
▲扫码或加微信号: CVer222,进交流群
CVer学术交流群(知识星球)来了!想要了解最新最快最好的CV/DL/ML论文速递、优质开源项目、学习教程和实战训练等资料,欢迎扫描下方二维码,加入CVer学术交流群,已汇集数千人!
▲扫码进群
▲点击上方卡片,关注CVer公众号
整理不易,请点赞和在看
微信扫码关注该文公众号作者