Adaptive Weight Assignment Scheme For Multi-task Learning

Adaptive Weight Assignment Scheme For Multi-task Learning

题目Adaptive Weight Assignment Scheme For Multi-task Learning
译题用于多任务学习的自适应权重分配方案
时间2022年
期刊/会议IAES International Journal of Artificial Intelligence (IJ-AI)

摘要:如今,基于深度学习的模型在每一个应用程序中都定期得到了使用。一般来说,我们在一项任务上训练一个模型。然而,在多任务学习设置下,我们可以在单个模型上训练多个任务。这为我们提供了许多优点,如更少的训练时间、为多个任务训练单个模型、减少过拟合、提高性能等。要在多任务学习环境中训练模型,我们需要对不同任务的损失值求和。在普通的多任务学习设置中,我们分配相同的权重,但由于并非所有任务的难度都相似,我们需要为难度更大的任务分配更多的权重。此外,不适当的权重分配也会降低模型的性能。我们在本文中提出了一个简单的权重分配方案,它提高了模型的性能,并更加重视困难的任务。我们测试了我们的方法在图像和文本数据上的性能,并将性能与两种流行的权重分配方法进行了比较。经验结果表明,与其他流行的方法相比,我们提出的方法取得了更好的结果。

1. 引言

从过去十年开始,深度学习方法就被广泛应用于各种应用中。它不仅在计算机科学领域,而且在电气工程、土木工程、机械工程和其他领域都取得了巨大的突破。这是因为深度神经网络(DNN)在图像分类[1]、问答[2]、唇语[3]、视频游戏[4]等各种应用中都达到了人类水平。DNNs 能够在没有任何帮助的情况下找出输入数据的复杂和隐藏特征。以前,这些模型依赖于手工制作的功能[5-10]。

人类有能力同时执行多个任务,而不会损害任何任务的性能。人类经常这样做,并且能够决定哪些任务可以同时完成。这就是为什么近年来人们把很多注意力放在使用 DNN 方法的多任务学习上。通常,一个模型专门用于执行一个任务。然而,执行多个任务可以提高模型的性能,减少训练时间和过拟合[11]。通常,我们发现单个任务的数据集很小,但如果任务以某种方式相关,那么我们可以使用这些共享信息并构建一个足够大的数据集,这将减少这个问题。目前,在多任务学习领域,一些研究工作正在进行,以创建用于多任务学习设置的新DNN架构[12,13],决定哪些任务应该一起学习[14],如何为损失值分配权重[15,16]等。在这项研究工作中,我们专注于创建一种动态权重分配技术,该技术将在训练过程中为每个时期的损失值分配不同的权重。在我们的研究工作中,我们提出了一种为所有损失值分配权重的新方法,并在图像和文本领域使用的两个数据集上进行了测试。我们的研究工作贡献如下。
1)我们提出了一种用于多任务学习的直观损失加权方案;
2)我们使用两个不同的数据集,针对图像和文本领域测试了我们的方法。我们这样做是为了确保我们的方法在所有领域都表现良好;
3)我们将我们的方法与两种流行的权重分配方案进行了比较,以比较我们方法的性能。

2. 研究方法

在本节中,我们将对该领域先前的研究工作进行讨论。接下来,我们将提供我们提出的方法。

2.1 文献综述

R.Caruana[11]提供了关于多任务学习的最早论文之一。在手稿中,作者探讨了多任务学习的思想,并展示了它在不同数据集下的有效性。作者还解释了多任务学习是如何工作的,以及如何将其用于反向传播。为了训练基于多任务学习设置的DNN,我们需要考虑哪些网络层在所有任务之间共享,哪些层用于单个任务。此前,大多数研究工作都集中在硬参数共享概念上[17-19]。在这种情况下,用户定义可共享的层,直到特定的点,然后为每个任务分配所有层。还有软参数共享的概念,其中对于网络中的所有任务存在单个列。在所有网络中设计了一种特殊的机制来共享参数。这种方法的流行方法是Cross-Sitch[13]、Sluich[20]等。最近提出了一种名为 Ada-share 的新方法,其中模型动态学习为所有任务共享哪些层,以及为单个任务使用哪些层[14]。作者还提出了一种新的损失函数,以确保模型的紧凑性和性能。

权重分配是多任务学习领域中一项非常关键的任务。以前的权重要么是相等的值,要么是研究人员指定的一些手动调整值[18,21,22]。然而,在多任务学习模型需要执行大量任务的情况下,这种方法是不够的。[15]提出了一种基于不确定性的方法。后来[12]提出了这种方法的修订方法。在本文中,作者通过添加正则化项来改进先前的基于不确定性的方法。[12]提出了动态权重平均法。在这种方法中,作者计算了前两个时期损失值的相对变化,并对这些值使用 softmax 函数来获得权重。[23]对不同的权重分配方案进行了比较研究。然而,除了图像,他们没有在任何领域研究这些方法。此外,他们使用的数据集只有2个任务。

2.2 自适应权重分配

我们提出的方法很简单,它考虑了(take into account of )每个 epoch 中每个任务的损失值。与其他方法相比,我们的方法易于实现。通常,在多任务学习设置中,为了训练模型,我们需要将所有损失值与其权重相加,然后执行反向传播(backpropagation)以更新模型的权重。这种损失的总和可以表示为:
∑ i = 1 , 2 , . . . , n W i L i = W 1 L 1 + W 2 L 2 + . . . + W n L n ( 1 ) \displaystyle\sum_{i=1,2,...,n}W_iL_i=W_1L_1+W_2L_2+...+W_nL_n\kern15em(1) i=1,2,...,nWiLi=W1L1+W2L2+...+WnLn(1)
这里, W W W 对应于损失的权重, L L L 表示每个任务的损失。在普通的(vanilla)多任务学习设置中,所有权重都设置为1。然而,我们必须记住(keep in mind),并非所有的任务都是相同的。有些任务比其他任务更难,因此我们需要为困难任务提供更多的权重,以提高整体多任务学习系统的性能。这就是我们提出 算法1 的原因。我们的算法基于一个简单的概念,即困难的任务比容易的任务具有更多的损失值。因此,我们应该更多地强调或加权这些损失值,同时为较小的损失值分配较少的权重。我们所做的是取每个任务的损失值之和,并用它来计算单个任务的损失价值占总损失的比例。我们将这个值与任务总数相乘。一般来说,在普通的多任务学习设置中,所有损失值都具有相等的权重1。因此,对于 n 个任务,总重量为 n 。这就是为什么我们将比率与 n 相乘。最后,我们使用这些权重并使用方程(1)计算多任务学习模型的总损失。图1 提供了该方法的可视化表示(visual representation )。设计损失加权方案的重要一点是,我们需要确保这些权重计算方法不会花费大量时间,因为这会增加训练时间。表1提供了关于执行这些方案(包括我们的方法)所需时间的图表。从表中我们可以看出,尽管我们的方法不是计算权重最快的方法,但它肯定不是最慢的。此外,最快的方法和我们的方法之间的时间差非常小。
表1

3. 结果与讨论

我们将在这部分讨论数据集、实验设置和实验结果。
图1

3.1 数据集描述

在实验中,我们使用了两个不同的数据集。他们是 CIFAR-100[24] 和 AGNews[25]。前者是基于图像的,后者是基于文本的。由于这些数据集是为单任务学习而设计的,我们为多任务学习设置创建了人工任务。我们从 CIFAR-100 中创建了 5 个不同的任务,从 AGNews 数据集中创建了 2 个任务。所有任务都是基于原始任务标签创建的,我们将不同的标签组合在一起形成多个任务。创建任务是为了确保所有任务都不存在类不平衡。

3.2 实验设置

我们用两个不同的 DNN 模型进行实验。我们使用 WRN(wide resnet-28-10) 处理 CIFAR-100 数据集和对 AGNews 数据集使用了自定义的 DNN 。我们将 WRN 模型的最后一层划分为 CIFAR-100 的 5 个输出层和AGNews数据集的 2 个输出层。我们使用 SGD 优化器训练了 100 个 epoch 的 WRN 模型,并将学习率设置为 0.001。我们还使用了单周期学习速率调度器[27]。为了训练 AGNews 数据集,我们首先对数据集进行标记化,并在此基础上创建一个词汇词典。然后我们对将成为模型输入的文本进行嵌入。我们的自定义 DNN 由两个全连接的层组成。我们使用 SGD 优化器训练了这个模型。为了确保我们的方法的有效性,我们将我们提出的方法与两种最先进的方法进行了比较,即动态加权平均(DWA)和不确定度方法。我们还比较了单任务学习和普通多任务设置。

3.3 实验结果

我们将在本节中讨论我们的方法对两个数据集的性能。表 2 和表 3 代表了我们整个实验的结果。我们在图 2 中绘制了 CIFAR-100 和 AGNews 数据集的测试损失曲线。

在表 2 中,我们得到了在 CIFAR-100 数据集上运行实验的结果,该数据集是一个图像数据集。一开始,我们在单个任务学习设置中获得了所有五项任务的结果。也就是说,为了得到这五项任务的结果,对五个不同的模型进行了训练。接下来,在多任务学习设置下,我们为这些任务训练了四种方法。在普通的多任务学习中,我们为每个 epoch 的每个任务分配了相等的权重。其他方法不确定性、DWA 和我们的方法在每个 epoch 中更新权重。从这个表中,我们可以看到我们提出的方法在五分之三的任务中优于其他方法。此外,我们的方法在剩下的两项任务中获得了第二好的性能。我们可以看到,多任务学习模型比 STL 模型表现得更好,而且我们只需要为所有五个任务训练一个模型。
表2
图2
我们在包含文本数据的 AGNews 数据集上评估我们的方法性能。我们有两个任务,一开始我们为这两个任务训练两个单独的模型。之后,我们用不同的权重分配方案训练四个多任务学习模型。我们可以从表中观察到,我们提出的方法在一项任务下表现良好,在另一项任务中得分第二。与其他流行的方法相比,我们可以看到我们提出的方法性能要好得多。如果我们仔细观察这些值,就会发现其他方法无法达到最佳效果。在某些情况下,这些方法甚至无法获得比单任务学习方法更好的性能。我们认为这是由于模型架构对多任务学习设置的性能有很大影响。在我们的实验中,我们专注于统一的DNN 架构进行评估,但有些任务可能需要一些额外的卷积或完全连接层。如果我们进一步强调 DNN架构,那么我们提出的方法在这两项任务中的性能肯定会更好。我们认为,在分配权重时应该采取更简单的方法。由于这一步骤是在每次迭代中执行的,过多的参数化和复杂的方法思想会阻碍模型的性能并增加时间复杂性。

4. 总结

理解并正确执行不同的超参数对于训练 DNN 模型以获得最佳结果至关重要。当涉及到所需的数据量、训练模型的时间、减少过拟合和提高模型性能时,多任务学习设置在单任务学习中占据上风。在多任务学习设置中,由于并非所有任务都具有相同的难度,因此为损失值分配权重对于更加强调困难任务很重要。在本文中,我们提出了一种新的权重分配方案,该方案有助于提高多任务学习模型的性能。我们提出的方法在图像和文本领域都优于其他最先进的权重分配方案,并提高了模型的性能。
表3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/10646.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AutoGPT】你自己运行,我先睡了—— ChatGPT过时了吗?

系列文章目录 【AI绘画】Midjourney和Stable Diffusion教程_山楂山楂丸的博客-CSDN博客 目录 系列文章目录 前言 一、AutoGPT是什么? 二、AutoGPT带来的利弊 三、AutoGPT和ChatGPT区别 四、未来 总结 前言 ChatGPT是否过时?AutoGPT的兴起&#…

MappingGenerator PRO 2023.3 Visual Studio 2019-2022

您的私人编码助手 MappingGenerator 最初是作为 AutoMapper 的设计时替代品创建的。现在它正在演变为编码助手,您可以将最平凡的编码任务委派给它: 生成映射生成显式转换实施克隆生成投影表达式脚手架方法调用脚手架对象创建清理方法调用方便ILogger的使…

ChatGPT风口下的中外“狂飙”,一文看懂微软、谷歌、百度、腾讯、华为、字节跳动们在做什么?

毫无疑问,ChatGPT正成为搅动市场情绪的buzzword。 历史经历过无线电,半导体,计算机,移动通讯,互联网,移动互联网,社交媒体,云计算等多个时代,产业界也一直在寻找Next Bi…

Golang每日一练(leetDay0031)

目录 91. 解码方法 Decode Ways 🌟🌟 92. 反转链表 II Reverse Linked List II 🌟🌟 93. 复原 IP 地址 Restore IP Addresses 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练…

【JVM】JVM之执行引擎

文章目录一、前言二、名词解释机器码指令指令集汇编语言高级语言字节码虚拟机&物理机前端编译器&后端编译器三、JVM之执行引擎执行引擎是如何工作的?解释器即时编译器(JIT)分层编译策略虚拟机执行模式热点代码&探测方式1&#xf…

如何在 Linux 中使用 Chage 命令,修改Linux系统用户密码更改策略

Chage是一个用于修改Linux系统用户密码更改策略的命令行工具。在本文中,我们将介绍如何在Linux系统中使用Chage命令。 检查用户密码过期信息 使用Chage命令可以检查用户密码更改策略和过期信息。要检查特定用户的密码过期信息,可以使用以下命令&#x…

PPT NO.1【用ppt如何做一张海报+字体】

PPT做得好的人,一定是站在观众的角度思考的人。 1、设置幻灯片尺寸大小: 设置完成后如下: 2、加载一张自己喜欢的图片进来:【图片越高清越好】 将图片铺满空白的地方,调整好自己喜欢的区域: 做裁剪&#xf…

数据结构---递归转化为非递归

递归转化为非递归前言快速排序非递归归并排序的非递归前言 为什么要学习非递归写法呢? 当我们在用递归实现一个程序的时候,要考虑一个问题,这个程序用递归去实现,当数据量庞大的时候,会不会造成栈溢出(STACK OVERFLOW…

代码随想录_226翻转二叉树、101对称二叉树

leetcode 226. 翻转二叉树 ​​​226. 翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:r…

算法训练第五十五天 | 392.判断子序列、115.不同的子序列

动态规划part15392.判断子序列题目描述思路总结115.不同的子序列题目描述思路392.判断子序列 题目链接:392.判断子序列 参考:https://programmercarl.com/0392.%E5%88%A4%E6%96%AD%E5%AD%90%E5%BA%8F%E5%88%97.html 题目描述 给定字符串 s 和 t &…

【CocosCreator入门】CocosCreator组件 | Graphics(绘制)组件

Cocos Creator 是一款流行的游戏开发引擎,具有丰富的组件和工具,其中Graphics组件允许您在游戏中绘制2D图形和几何形状,并通过编写脚本来控制其外观和行为。 目录 一、组件属性 二、组件方法 三、脚本示例 一、组件属性 属性功能说明lineW…

面试篇-Java并发之CAS:掌握原理、优缺点和应用场景分析,避免竞态问题

1、CAS介绍及原理 多线程中的CAS(Compare-and-Swap)操作是一种常见的并发控制方法,用于实现原子性更新共享变量的值。其核心思想是通过比较内存地址上的值和期望值是否相等来确定是否可以进行更新操作,从而避免多线程条件下的竞态…

用PyTorch构建基于卷积神经网络的手写数字识别模型

本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052 目录 一、MINST数据集介绍与分析 二、卷积神经网络 三、基于卷积神经网络的手写数字识别 一、MINST数据集介绍与分析 MINST数据库是机器学习领域非常经典的一个数据集&#xff0c…

动力节点王鹤SpringBoot3笔记——第八章 文章管理模块

目录 第八章 文章管理模块 8.1 配置文件 8.2 视图文件 8.3 Java代码 第八章 文章管理模块 创建新的Spring Boot项目,综合运用视频中的知识点,做一个文章管理的后台应用。 新的Spring Boot项目Lession20-BlogAdmin。Maven构建工具,包…

【UE4】关卡流送的demo

关卡流送功能可以将地图文件加载到内存中,或者从内存中卸载,并在游戏过程中切换地图的可视性。 这样一来,场景便能拆分为较小的地图块,并且只有相关部分才会占用资源并被渲染。 正确设置后,开发者便能创建大型、无缝衔…

开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放

场景 目前市面上有很多开源的流媒体服务器解决方案,常见的有SRS、EasyDarwin、ZLMediaKit和Monibuca等。 1、SRS GitHub - ossrs/srs: SRS is a simple, high efficiency and realtime video server, supports RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH and …

ChatGPT批量翻译-ChatGPT批量生成多国语言

ChatGPT翻译的准吗 ChatGPT是一种基于Transformer架构的自然语言处理技术,其翻译准确性取决于所训练的模型和数据集的质量。在特定的语料库和训练数据下,ChatGPT可以实现一定程度的准确翻译。但是,与人工翻译相比,ChatGPT的翻译质…

LeetCode_101

千奇百怪的排序算法 快速排序 采用左闭右开的二分写法 归并排序 插入排序 冒泡排序 选择排序 以上代码的调用方式: 快速选择 在一个未排序的数组中,找到第 k 大的数字 快速选择一般用于求解 k-th Element 问题,可以在 O(n) 时间复杂度&…

Unix、UTC、GPS时间戳及转换

UTC时间 UTC时间的英文全称:Universal Time Coordinated,中文名称:协调世界时。俗的理解为,这个时间是全世界通用的,即全世界都公用的一个时间。可以认为格林威治时间就是时间协调时间(GMTUTC)&…

测试名词介绍

测试名词介绍一:敏捷测试1. 定义:2. 敏捷测试的核心:3. 敏捷测试的8大原则和传统测试的区别二:测试名词介绍瀑布模型回归测试Alpha测试Beta测试性能测试白盒测试黑盒测试灰盒测试三:测试流程单元测试 (unit test)集成测…