参数高效的迁移学习在自然语言处理中的应用

news2024/11/13 7:59:09

人工智能咨询培训老师叶梓 转载标明出处

迁移学习技术,尤其是针对大型预训练模型的微调(fine-tuning),在诸多下游任务中展现出了卓越的性能。然而,当面临众多任务时,传统的微调方法存在参数效率低下的问题,因为它需要为每个新任务训练一个全新的模型。为了解决这一问题,本文提出了一种使用适配器模块(Adapter Modules)进行迁移学习的新方法,该方法由Neil Houlsby、Andrei Giurgiu、Stanisław Jastrzebski等研究者共同提出。

论文链接:https://arxiv.org/pdf/1902.00751

代码地址:GitHub - google-research/adapter-bert

图 1: 展示了适配器调整(Adapter tuning)和微调(Fine-tuning)在训练特定任务参数数量和准确率之间的权衡。图中的y轴以全参数微调的性能为基准进行了归一化,x轴表示每个任务训练的参数数量。显示了在GLUE基准的九个任务上,适配器调整能够以更少的参数数量达到与全参数微调相似的性能。

方法 

适配器调整(Adapter Tuning)策略主要针对大型文本模型在多个下游任务上的调整,具有三个关键特性:良好的性能表现、支持任务顺序训练、以及每个任务只增加少量额外参数。这些特性在云计算服务中尤为重要,因为云服务常常需要在一系列下游任务上训练多个模型,而高度的参数共享是理想的状态。

为了实现这些特性,研究者提出了一种新的瓶颈适配器模块(bottleneck adapter module)。与传统的深度网络微调不同,适配器调整策略通过在原始网络中注入新的层来实现,这些新层被称为适配器层。在适配器调整过程中,原始网络的权重保持不变,而新的适配器层则随机初始化。这种设计允许原始网络的参数在多个任务中共享,从而提高了参数效率。

适配器模块的两大特点:

  1. 参数数量少:适配器模块相比于原始网络的层要小得多,这意味着当添加更多任务时,模型大小的增长相对较慢。
  2. 近恒等初始化:为了模型训练的稳定性,适配器模块需要进行近恒等初始化。初始化时,适配器对原始网络的影响很小,但在训练过程中可以激活适配器来改变网络中激活的分布。

Transformer网络因其在多种NLP任务中的优异表现而受到青睐。适配器模块被设计为可以插入到Transformer的每个层中。具体来说,每个Transformer层包含两个主要的子层:注意力层(attention layer)和前馈层(feed-forward layer)。在这两层之后,会立即进行一个投影,将特征尺寸映射回该层输入的大小。每个子层的输出会进入层归一化(Layer Norm)。

在每个子层之后,研究者插入了两个串联的适配器。适配器直接应用于子层的输出,在将尺寸投影回输入大小之后,但在将跳过连接(skip connection)加回来之前。适配器的输出随后直接进入下一层归一化。为了限制参数数量,适配器采用了瓶颈架构,首先将原始的d维特征投影到更小的维度m,应用非线性激活,然后再投影回d维。每层增加的总参数数量(包括偏置)是2md+d+m。通过设置m≪d,限制了每个任务增加的参数数量;实际操作中使用的参数数量大约是原始模型的0.5-8%。

图2展示了适配器的架构以及其与Transformer的集成方式。适配器模块被添加到每个Transformer层的两个位置:多头注意力(multi-headed attention)后的投影和两个前馈层之后。适配器由一个瓶颈组成,其参数数量相对于原始模型中的注意力层和前馈层要少得多。适配器还包含一个跳过连接。在适配器调整期间,绿色层(包括适配器、层归一化参数和最终分类层)是在下游数据上训练的。

瓶颈维度m 在适配器模块的设计中扮演着至关重要的角色。它为研究者提供了一个权衡性能和参数效率的简单工具。通过调整 m 的值,可以控制每个任务增加的参数数量,从而在保持模型性能的同时减少参数的增加。这种设计使得适配器模块在引入新任务时,对原始模型的改动保持在最低限度,从而有效控制了模型复杂度的增长。

适配器模块内部的跳过连接(skip-connection)是另一个关键设计。这种连接允许模型在处理信息时绕过适配器模块,维持了一定程度的原始网络特性。当适配器的投影层参数初始化接近零时,整个适配器模块初始化为一个近似的恒等函数,这意味着在训练开始时,适配器模块对网络的影响很小。随着训练的进行,适配器模块可以根据任务需求逐渐调整其参数,以优化模型性能。

除了适配器模块本身,研究者还为每个任务训练了新的层归一化参数。层归一化是一种有效的技术,可以稳定和加速神经网络的训练过程。在适配器模块的上下文中,层归一化参数的引入,类似于条件批量归一化(Conditional Batch Normalization)、FiLM和自调制(Self-modulation)等技术,进一步增强了模型对新任务的适应能力。通过这种方式,每层只需要增加 2d 个参数,就能实现有效的特征归一化和模型性能提升。

尽管层归一化参数的引入提高了模型的适应性,但仅依靠这些参数并不足以保证模型在所有任务上都能取得良好的性能(在后面的实验验证了这一点)。尽管层归一化参数有助于模型的调整,但如果不结合适配器模块中的其他参数进行联合训练,模型的整体性能将受到影响。这说明了适配器模块中各部分参数的协同作用对于实现高性能的迁移学习至关重要。

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。9月22日晚,实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。

加助理微信提供直播链接:amliy007,29.9元即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory,关注享粉丝福利,限时免费CSDN听直播后的录播讲解。
LLaMA Factory 支持多种预训练模型和微调算法。它提供灵活的运算精度和优化算法选择,以及丰富的实验监控工具。开源特性和社区支持使其易于使用,适合各类用户快速提升模型性能。

实验

 研究者们使用了公开的预训练BERT Transformer网络作为基础模型。在进行分类任务时,遵循了Devlin等人(2018)的方法,将每个序列中的第一个标记作为一个特殊的“分类标记”,并在该标记的嵌入上附加一个线性层来预测类别标签。训练过程也遵循了Devlin等人(2018)的方法,使用Adam优化器,学习率在前10%的步骤中线性增加,然后线性衰减至零。所有实验都在4个Google Cloud TPUs上进行,批量大小为32。对于每个数据集和算法,研究者们进行了超参数扫描,并根据验证集的准确率选择最佳模型。对于GLUE任务,报告了提交网站提供的测试指标。对于其他分类任务,则报告测试集准确率。

研究者们首先在GLUE基准测试上进行评估。对于这些数据集,他们从预训练的BERT LARGE模型开始迁移,该模型包含24层,总共有330M参数。对于适配器调整,他们进行了小范围的超参数扫描:学习率在{3·10^−5, 3·10^−4, 3·10^−3}中选择,训练周期在{3, 20}中选择。他们测试了使用固定适配器大小(瓶颈中的单元数)和根据任务选择最佳大小{8, 64, 256}。适配器大小是唯一需要调整的适配器特定超参数。由于训练不稳定,他们使用不同的随机种子重跑了5次,并在验证集上选择了最佳模型。表 1汇总了在GLUE测试集上的实验结果,使用GLUE评估服务器的得分。

为了进一步验证适配器产生的模型是否紧凑且性能良好,研究者们在额外的公开可用的文本分类任务上进行了测试。这些任务包含了多样化的数据集:训练样本数量从900到330k不等,类别数量从2到157不等,平均文本长度从57到1.9k字符不等。对于这些数据集,他们使用了32的批量大小。由于数据集的多样性,他们扫描了广泛的学习率范围:{1·10^−5, 3·10^−5, 1·10^−4, 3·10^−3}。由于数据集数量众多,他们根据验证集学习曲线的检查,从集合{20, 50, 100}中手动选择了训练周期的数量。他们为微调和适配器选择了最优值。表 2: 展示了在额外的文本分类任务上的测试准确率。

图4为两个GLUE任务(MNLIm和CoLA)上,训练参数数量与验证集准确率的关系。比较了适配器调整、微调顶层以及仅调整层归一化参数的三种方法。 适配器大小控制了参数效率,较小的适配器引入的参数更少,但可能会影响性能。为了探索这种权衡,研究者们考虑了不同的适配器大小,并与两个基线进行了比较:(i) 微调BERTBASE的顶层k层。(ii) 仅调整层归一化参数。学习率是使用方法中介绍的范围进行调整的。

研究者们通过在SQuAD v1.1上运行来确认适配器不仅在分类任务上有效。给定一个问题和维基百科段落,这项任务要求从段落中选择问题的答案跨度。图5显示了在SQuAD验证集上微调和适配器的参数/性能权衡。对于微调,他们扫描了训练层数、学习率在{3·10^−5, 5·10^−5, 1·10^−4}中选择,以及训练周期在{2, 3, 5}中选择。对于适配器,他们扫描了适配器大小、学习率在{3 · 10^−5, 1 · 10^−4, 3 · 10^−4, 1 · 10^−3}中选择,以及训练周期在{3, 10, 20}中选择。与分类一样,适配器在训练更少参数的同时,达到了与全参数微调相当的性能。大小为64(2%参数)的适配器达到了90.4%的最佳F1分数,而微调达到了90.7%。即使是很小的适配器,如大小为2(0.1%参数)的适配器也达到了89.9的F1分数。

为了确定哪些适配器是具有影响力的,研究者移除了一些训练过的适配器,并在不重新训练的情况下在验证集上重新评估模型。图6显示了在移除所有连续层跨度的适配器时性能的变化。实验是在BERTBASE上使用适配器大小64对MNLI和CoLA进行的。首先,他们观察到移除任何单层的适配器对性能的影响很小。热图的对角线上的元素显示了移除单层适配器的性能,其中最大的性能下降是2%。相比之下,当从网络中移除所有适配器时,性能显著下降:在MNLI上下降到37%,在CoLA上下降到69%——这是通过预测大多数类别得到的分数。这表明尽管每个适配器对整个网络的影响很小,但总体效应是大的。

另外图6表明,较低层次的适配器比高层次的适配器影响要小。在MNLI上移除0-4层的适配器几乎不影响性能。这表明适配器之所以表现良好,是因为它们自动优先考虑更高层次。事实上,专注于上层是一种流行的微调策略。一种直觉是,较低层提取的是不同任务间共享的较低级别的特征,而较高层构建的则是特定于不同任务的特征。这与他们的观察结果相关,即对于一些任务,仅微调顶层的性能就超过了全参数微调,如表2所示。

研究者们调查了适配器模块对神经元数量和初始化规模的鲁棒性。在主要实验中,适配器模块的权重是从均值为零、标准差为10^−2的高斯分布中抽取的,截断到两个标准差。为了分析初始化规模对性能的影响,他们测试了在区间[10^−7, 1]内的标准差。图6总结了结果。他们观察到,在两个数据集上,适配器的性能对于低于10^−2的标准差是鲁棒的。然而,当初始化过大时,性能会下降,在CoLA上更为显著。

为了研究适配器对神经元数量的鲁棒性,研究者们重新检查了实验数据。他们发现,跨适配器大小的模型质量是稳定的,可以在对性能影响很小的情况下为所有任务使用固定的适配器大小。对于每个适配器大小,他们通过选择最优的学习率和训练周期,计算了八个分类任务的平均验证准确率。对于适配器大小8、64和256,平均验证准确率分别为86.2%、85.8%和85.7%。这一信息得到了图4和图5的进一步证实,这些图显示了在几个数量级上稳定的性能。

研究者最后尝试了适配器架构的一些扩展,但没有获得显著的性能提升。他们在这里记录了这些尝试,以供完整性。他们尝试了(i)在适配器中添加批/层归一化,(ii)增加每个适配器的层数,(iii)不同的激活函数,如tanh,(iv)仅在注意力层内插入适配器,(v)将适配器并行添加到主层,并可能与乘法交互。在所有情况下,他们观察到的结果性能与第前面提出的瓶颈相似。因此,由于其简单性和强大的性能,他们推荐原始的适配器架构。

适配器模块为自然语言处理中的迁移学习提供了一种新的视角,它通过在预训练模型中插入轻量级的模块,实现了对新任务的高效适应。这种方法不仅减少了模型的存储和计算需求,还保持了优异的性能,对于需要处理大量任务的应用场景具有重要的实际意义。随着自然语言处理技术的不断进步,适配器模块有望在未来的NLP任务中发挥更大的作用。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙开发:深入浅出Stage模型(UIAbility组件)

🚀一、UIAbility组件 🔎1.概述 HarmonyOS中的Stage模型是一种基于UIAbility组件的应用程序架构。UIAbility是HarmonyOS系统中用于构建用户界面的基本组件之一。它负责处理应用程序界面的显示和交互。 在Stage模型中,每个应用程序都有一个或…

【Qt笔记】QCommandLinkButton控件详解

目录 引言 一、概述 二、特性与属性 1. 属性 2. 样式 三、基本用法 1. 引入必要的头文件 2. 创建和配置 QCommandLinkButton 3. 布局管理 四、高级用法 1. 自定义绘制 2. 动态内容更新 五、代码解析示例 注意 总结 引言 QCommandLinkButton 是 Qt 框架中 QtWi…

招生简章如何制作为在线版的网址链接?

​随着互联网的高速发展,越来越多的学校和企业选择通过在线方式发布招生简章。这种趋势不仅方便了大量用户,还大大降低了传统纸质招生简章的制造成本。那么,如何制作一份吸引眼球的在线招生简章呢? 1.要制作电子杂志,首先需要选择…

leetcode_001_两数之和解析

两数之和解析 题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序…

【解压即玩】使命de召唤4

《使命de召唤4》 立即下载:【chumenx.com】【解压即玩】使命de召唤4

Leetcode 51. 皇后 回溯 C++实现

Leetcode 51. 皇后 问题:按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不…

Spring框架基础

前言 本文将讲解spring框架的基础内容 Spring 首先,我们需要了解,spring是什么? spring是一个轻量级的IOC和AOP的一站式java开发框架 作用是简化企业级开发 轻量级:框架体积小(核心模块) 其中 IOC: Inversion of Control 控制反转 IOC的作用是可以把创建对象的控制权,反转给s…

学习区块链?看我就够了!

写在前面,本文提到的所有书籍资源,都提供免费下载地址 内含pdf,epub,mobi等格式 一.区块链:定义未来金融与经济新格局 以区块链技术为核心构建的价值互联网 将深刻改变未来的金融与经济格局 文明向前发展,有些成果的…

Linux基础软件-共享存储nfs

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux进阶部分又分了很多小的部分,我们刚讲完了Linux日常运维。讲的那些东西都算是系统自带的,但是Linux作为一个…

大模型之二十七-语音识别Whisper实例浅析

Whisper简介 Whisper是OpenAI于2022年9月开源的一个多语种识别模型,目前支持99种语言,是目前性能最好的开源多语种识别ASR大模型,第一版版使用了68万小时标注好的语料预训练模型,而large-v3的标注数据超过了500万小时&#xff0c…

QL5010-16-ASEMI逆变焊机专用整流桥QL5010

编辑:ll QL5010-16-ASEMI逆变焊机专用整流桥QL5010 型号:QL5010 品牌:ASEMI 封装:KBPC-4 批号:2024 类型:整流模块 电流:50A 电压:1600V 安装方式:直插式封装 …

(2)Studio 5000 Logix Emulate仿真使用方法

Studio 5000 Logix Emulate仿真使用方法 引言:首先要安装好Studio 5000 logix emulate,这个软件也是需要授权的。还需要注意仿真器与studio 5000之间版本的对应,studio5000的版本需要小于仿真器版本。 打开Studio 5000 logix emulate&#x…

Lombok组件的使用

什么是Lombok Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。 Lombok的使用 使用Lombok需要的开发环境JavaMavenIntelliJ IDEA或…

游戏开发设计模式之桥接模式

目录 桥接模式在游戏开发中的具体应用案例是什么? 如何在Unity或Unreal Engine中实现桥接模式以提高游戏引擎与场景的灵活性? 桥接模式与其他设计模式(如适配器模式、模板方法模式)在游戏开发中的比较优势是什么? …

【Verilog 数字系统设计教程】Verilog 基础:硬件描述语言入门指南

目录 摘要 1. 引言 2. Verilog 历史与发展 3. Verilog 基本语法 4. Verilog 模块与端口 5. 组合逻辑与时序逻辑 6. 时钟域与同步设计 7. 测试与仿真 8. Verilog 高级特性 任务(Tasks) 函数(Functions) 多维数组 结构体…

MinGW-w64 x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z

MinGW-w64 x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z 安装包 链接: https://pan.baidu.com/s/1G8SDlDcBtNU4TCBuLL9XYw?pwdv587 提取码: v587 是7z文件,解压即可,自动得到一个mingw64文件夹。 自存,应该能用

多态(虚构的整体,具体的个体)(多态的基本概念/多态的原理剖析/纯虚函数和抽象类/虚析构和纯虚析构)

多态的基本概念 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; // 多态的基本概念 // 多态分为静态多态和动态多态 // 静态多态&#xff1a; 函数重载还运算符重载属于静态多态&#xff0c;服用函数名 // 动态多态&#xff1a; 派生派和虚函…

电商走向“未来化”,“含金量”几何?

2018年&#xff0c;史蒂文斯皮尔伯格导演的《头号玩家》一经上映&#xff0c;就带火了虚拟现实概念。电影中&#xff0c;男主角戴上VR眼镜、感知手套&#xff0c;穿上触感套装&#xff0c;从视觉、听觉到触觉&#xff0c;瞬间切换至全新的世界。 电影《头号玩家》剧照 时隔六年…

如何使用ssm实现图书管理借阅系统

TOC ssm301图书管理借阅系统jsp 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。…

构建在线教育系统源码:企业培训APP开发的技术指南

在数字化浪潮的推动下&#xff0c;企业培训正从传统课堂转向在线教育模式。构建一个高效、稳定且可扩展的在线教育系统源码&#xff0c;已经成为开发企业培训APP的关键。在本文中&#xff0c;我们将深入探讨构建在线教育系统源码的核心技术&#xff0c;并提供一份开发企业培训A…