L4-Prompt-Delta

在这里插入图片描述

  • Paper List
    • PromptPapers:https://github.com/thunlp/PromptPapers
    • DeltaPapers: https://github.com/thunlp/DeltaPapers
  • Programming Toolkit
    • OpemPrompt: https://github.com/thunlp/OpenPrompt
    • OpenDelta: https://github.com/thunlp/OpenDelta

一、传统微调方法:存在计算成本高、存储成本高、泛化能力差等问题,大模型使用受限

传统微调方法主要应用于预训练语言模型(PLMs)以适应下游任务,常见的有以下几种:
1、基于 BERT 的微调:在序列标注任务中利用 BERT 生成的 token 表示,文本分类则使用 [CLS] 标记的表示,并将合适的表示输入到输出层进行微调。例如在关系抽取任务中,会根据不同的实体标记方式(如标准方式、提及池化、位置嵌入提及池化、实体标记等)对 BERT 进行微调,以提取两个标记实体之间的关系。
在这里插入图片描述
在这里插入图片描述

2、基于 GPT 的微调:将最后一个隐藏状态输入到线性输出层,通过 softmax 函数得到预测结果。如在不同的自然语言处理任务(如文本分类、蕴含推理、相似性判断等)中,根据任务的输入和输出要求对 GPT 进行相应的微调。
在这里插入图片描述
3、基于 T5 的微调
(1)采用具有 110 亿参数的编码器 - 解码器结构,
(2)将任务以简单示例的方式转换为 seq2seq 形式,
(3)训练解码器输出期望的标记。例如在问答任务中,对输入进行处理后,让模型学习生成符合要求的答案。
在这里插入图片描述
然而,随着模型规模的不断扩大,传统微调方法面临着一些挑战。一方面,计算成本高昂,因为需要更新所有的参数;另一方面,存储需求大,不同任务需要保留单独的模型实例。此外,在监督数据有限的情况下,其泛化能力不足,导致在研究中大规模 PLMs 的使用受到限制。

GPT-3
(1)模型规模:是一个具有 1750 亿参数的巨大模型。
(2)微调方式:在应用中通常不更新任何参数,而是通过提供描述(Prompts)和少量示例(Few-shot examples)来生成标记。例如在翻译任务中,如 “Translate English to French: task description cheese => - prompt”,仅依靠任务描述和示例引导模型生成结果,不进行梯度更新。
(3)学习能力体现:在零样本(Zero-shot)学习中,模型仅依据自然语言描述的任务就能预测答案;在少样本(Few-shot)学习时,除任务描述外,模型参考少量示例来生成结果,但同样不进行梯度更新。这体现了其在不同数据条件下的学习和生成能力。

二、有效模型适配方法:prompt-learning、delta tuning

在这里插入图片描述

(一)基于任务和数据的方法:提示学习(prompt-learning)

作用:通过提示学习来增强少样本学习能力。
原理:弥合模型调优和预训练之间的差距。即通过设计合适的提示(Prompt),让预训练语言模型(PLM)更好地理解任务,从而在少样本情况下也能有较好的表现。例如,对于不同的任务(如 Task #1、Task #2、Task #3),可以设计相应的提示(图中用不同颜色的虚线框表示),将这些提示输入到 PLM 中,使模型能够根据提示更好地处理任务。

1、prompt-learning 的概念与作用


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2、prompt-learning 的关键要素

提示模板(Template)
  • 手动设计(Manually Design)
    (1)介绍:这是一种传统且常见的模板构建方法,依赖人工根据任务的特点、领域知识以及经验来设计提示模板。
    (2)示例:对于情感分类任务,人工可能会设计 “这部电影 [MASK],我觉得它是 [正面 / 负面] 的” 这样的模板,其中 [MASK] 是待预测的位置,通过这种方式引导模型根据输入内容在 [MASK] 处预测出对应的情感类别(正面或负面)。
    (3)优点:
    — 可以充分利用人类的专业知识和对任务的深入理解,设计出更符合任务逻辑和语义的模板。
    — 在一些特定领域或任务中,人工设计的模板可能能够更精准地捕捉关键信息和关系。
    (4)缺点:
    — 耗时费力,需要大量的人工尝试和调整,尤其是在任务复杂或领域多样的情况下,设计出有效的模板可能需要耗费大量的时间和精力。
    — 对设计者的经验和知识水平要求较高,不同的人设计的模板可能效果差异较大。

  • 自动生成(Auto Generation)
    (1)介绍:利用算法或模型自动生成提示模板,无需过多的人工干预。
    (2)示例:通过一些自动化的技术和策略,在一定的搜索空间或优化目标下,生成可能有效的提示形式。例如,可以使用基于强化学习的方法,让模型在与环境的交互过程中不断尝试和优化提示模板,以获得更好的任务性能。
    (3)优点:
    — 能够快速生成大量的候选模板,大大提高了模板构建的效率,尤其适用于大规模数据和复杂任务的情况。
    — 可以探索一些人工难以想到的模板形式和结构,可能会发现一些新颖且有效的提示方式。
    (4)缺点:
    — 自动生成的模板可能缺乏语义的可解释性,难以理解其背后的逻辑和原理。
    — 生成的模板质量可能参差不齐,需要进一步的筛选和评估,以确定哪些模板真正对任务有帮助。

  • 融入规则和逻辑(Incorporating Rules and Logic)
    (1)介绍:将特定的规则和逻辑融入到模板中,使模板能够更好地处理具有特定结构和关系的任务。
    (2)示例:如给出的逻辑规则,并根据此规则设计模板 “the [MASK] Langdon [MASK] the [MASK] Mark Twain [SEP]”,其中不同颜色的 [MASK] 和周围的标记对应不同的子提示标记,用于表示不同的逻辑元素或函数。
    (3)优点:
    — 能够利用规则和逻辑的约束,使模型更加准确地理解任务和输入数据,提高在特定任务上的性能和准确性。
    — 对于一些具有明确规则和逻辑关系的任务,如知识图谱相关任务、逻辑推理任务等,这种方法可以更好地适配任务需求。
    (4)缺点:
    — 需要对任务的规则和逻辑有清晰的认识和定义,对于一些复杂或模糊的任务,可能难以准确地制定有效的规则和逻辑。
    — 模板的设计和构建可能会变得更加复杂,需要考虑规则和逻辑的表示以及与模型的交互方式。
    在这里插入图片描述

  • 结构化模板(Structured Template)
    (1)介绍:为所有提示创建键值对的形式,将不同任务按照结构化的方式进行整理,使其具有统一的格式和结构。
    (2)示例:对于不同的问答实例,明确其格式(如抽取式、多项选择式、抽象式等)、所属任务(如具体的问答数据集或类型)以及相关领域(如维基百科、医学、社交事件、化学、生物学、文学等),然后按照统一的结构化模板,将每个实例的具体问题(Question)、相关段落(Passage)以及可能的候选答案(Candidates,仅在多项选择问答中有)等信息进行组织和呈现,如 Instance 1 中 “[Format]: ,[Task]: ,[Domain]: ,[Question]: In what Country is Normandy located?,[Passage]: The Normans, were the people who in the 10th and 11th centuries gave their name to Normandy, a region in France.”
    (3)优点:
    — 有助于将各种复杂多样的任务进行标准化和系统化的处理,提高了提示信息的清晰度和可管理性。
    — 便于模型更好地理解和处理不同类型的任务和数据,尤其是在多任务学习或需要处理多种数据格式的场景下,结构化模板可以提供统一的接口和处理方式。
    (4)缺点:
    — 可能会受到预先定义的结构限制,对于一些特殊或不规则的任务和数据,可能需要额外的处理或调整才能适应结构化模板。
    — 设计结构化模板需要考虑多种因素和维度,可能需要一定的前期规划和设计工作。
    在这里插入图片描述

  • 其他方法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

答案词表(Verbalizer)
  • 答案词表(Verbalizer)的概念:映射(Mapping):将答案映射为不固定的标签(Answer -> Unfixed Labels)。例如,对于情感分类任务,将 “Positive”(积极)映射为 “great, wonderful, good…” 等词语,将 “Negative”(消极)映射为 “terrible, bad, horrible…” 等词语。
  • 答案词表的组成形式
    • (1)Tokens(标记):是预训练语言模型词汇表中的一个或多个标记。例如,在上述情感分类的例子中,“great”“wonderful”“good” 等每个词都可以看作是一个标记。
    • (2)Chunks(词块):由多个标记组成的词块,即长度超过一个标记的词语组合。
    • (3)Sentence(句子):任意长度的句子也可以作为答案词表的一部分。
  • 构建方式:
    • (1)基于人类先验知识的手动设计(Manually design with human prior knowledge)
    • (2)从初始标签词开始进行释义和扩展(Start with an initial label word, paraphrase & expand)
    • (3)从初始标签词开始,利用外部知识进行扩展(Start with an initial label word, use external knowledge & expand)
    • (4)将标签分解为多个标记(Decompose the label with multiple tokens)
    • (5)使用虚拟标记并优化标签嵌入(Virtual token and optimize the label embedding)
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3、prompt-learning 的应用场景与优势

  • 应用场景:
      • 低资源场景:在标注数据有限的情况下,prompt-learning 能够利用预训练模型的知识和少样本提示,取得较好的性能,尤其适用于一些新兴领域或特定任务,难以获取大量标注数据的情况。
        多任务学习:可以方便地应用于多种任务,通过设计不同的提示模板和答案词表,实现一个预训练模型在多个任务上的适配和切换,提高模型的通用性和复用性。
  • 优势:
      • 计算效率高:相比传统的微调方法,prompt-learning 通常不需要更新大量的模型参数,只需要在输入层添加提示和进行少量的计算,因此计算成本较低,对硬件资源的要求相对较少。
      • 知识利用充分:能够更好地利用预训练模型在大规模语料上学习到的语言知识和语义信息,通过提示引导模型将这些知识应用到具体任务中,提高模型的性能和泛化能力。

(二)基于优化的方法:Delta Tuning(增量调优)

1、delta tuning 的概念与背景

  • 定义:delta tuning 是一种在自然语言处理中针对大规模预训练模型进行微调的方法。它旨在通过仅调整模型中的一小部分参数,而不是像传统微调那样更新所有参数,来实现模型对特定任务的适配。
  • 背景:随着预训练语言模型规模的不断增大,如 GPT-3 等拥有数十亿参数的模型出现,传统的全量微调变得计算成本高昂且容易过拟合。delta tuning 应运而生,作为一种更高效、更轻量级的模型适配策略。
  • 原理:创建轻量级的 Delta Objects(增量对象),这些对象与原始的 PLM 结合,仅对少量参数进行调整,而不是像传统微调那样更新所有参数。这样可以大大降低计算成本和存储需求,同时也能使模型适应不同的任务(如图中不同颜色的 Delta Tuning 过程分别对应不同的任务和 PLM)。
  • 作用:用于刺激具有数十亿参数的模型,通过优化一小部分参数来实现。
    在这里插入图片描述

2、delta tuning 的实现方式与方法

实现方式
  • 创建 delta 对象(Delta Objects)
    • 这些 delta 对象是与原始预训练模型相结合的轻量级模块。它们包含了需要调整的少量参数,通常通过在模型的特定位置(如输入层、中间层或输出层)添加或修改少量的权重或偏差来实现。
    • 例如,在某些实现中,可能会在输入层添加一些可学习的提示向量(prompt vectors)作为 delta 对象的一部分,这些提示向量在训练过程中会根据任务数据进行调整,以引导模型对特定任务的理解和处理。
  • 参数优化策略:
    • 在训练过程中,主要关注对这些 delta 对象中的参数进行优化。通常采用基于梯度的优化算法,如随机梯度下降(SGD)或其变体,如 Adagrad、Adadelta、Adam 等。
    • 优化目标是最小化特定任务的损失函数,例如在文本分类任务中,可能是交叉熵损失函数。通过不断调整 delta 对象中的参数,使得模型在该任务上的性能逐渐提高。
方法总结:基于添加的方法(Addition-based methods)、基于指定的方法(Specification-based methods)、基于重参数化的方法(Reparameterization-based methods)
  • 基于添加的方法(Addition-based methods)
    • 介绍:这种方法会引入原始模型中不存在的额外可训练神经模块或参数。
    • 示例:比如在模型中添加新的层、模块或参数,这些新添加的部分会在微调过程进行训练,而原始模型的大部分参数保持冻结状态。
  • 基于指定的方法(Specification-based methods)
    • 介绍:指定原始模型中的某些参数或过程变为可训练的,同时将其他参数冻结。
    • 示例:可以指定模型中的某些特定层的参数(如偏置项、权重矩阵的某些部分等)在微调时进行更新,而其他层的参数保持不变。
  • 基于重参数化的方法(Reparameterization-based methods)
    • 介绍:通过变换将现有参数重新参数化为一种参数高效的形式。
    • 示例:对模型中的某些参数进行数学变换或分解,使得在微调时只需要调整变换后的参数,从而减少需要优化的参数数量,但又能达到类似全量微调的效果。
      在这里插入图片描述
方案具体介绍
基于添加的方法:Adapter-Tuning(适配器微调):transformer中添加小型神经模块adapters、将adapter移出主干网络backbone、基于添加的Prefix-Tuning(前缀微调)、基于添加的提示方法(Addition-based: Prompting)中的 Prompt-Tuning(提示微调)

(1)transformer中添加小型神经模块adapters
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)将adapter移出主干网络backbone
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
(3)基于添加的方法中的 Prefix-Tuning(前缀微调)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)基于添加的提示方法(Addition-based: Prompting)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于指定的方法(Specification-based methods)

在这里插入图片描述

基于重参数化的方法(Reparameterization-based methods):内在提示微调(Intrinsic Prompt Tuning)、LoRA(Low-Rank Adaptation,低秩适配)、

(1)低维空间中操作自然语言处理(NLP)的一种方法 :内在提示微调(Intrinsic Prompt Tuning)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)低维空间中操作自然语言处理(NLP)的一种方法 :LoRA(Low-Rank Adaptation,低秩适配)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于重参数化的方法之间的联系(Connections)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

小结:关于 Adapter、Prefix Tuning 和 LoRA 这三种方法的统一视图(A Unified View)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、delta tuning 与传统微调的比较

  • 参数更新量
    • 传统微调会更新预训练模型的大量甚至全部参数,这可能导致模型在新任务上过度拟合,并且需要大量的计算资源和时间来进行训练。
    • 而 delta tuning 仅更新少量的 delta 对象中的参数,大大减少了需要调整的参数数量,降低了计算成本和过拟合的风险。
  • 任务适配灵活性
    • 传统微调后的模型往往对特定任务的适配性较强,但在切换到其他任务时可能需要重新进行大规模的训练。
    • delta tuning 由于其轻量级的特点,可以更方便地在不同任务之间切换和调整。通过简单地更换或修改 delta 对象中的参数,模型可以相对快速地适应新的任务需求,提高了模型的通用性和灵活性。

4、delta tuning 的应用场景与优势

  • 低资源场景:在数据量有限或计算资源受限的情况下,delta tuning 表现出明显的优势。因为它不需要大量的标注数据来更新所有模型参数,只需要对少量的 delta 参数进行训练,就可以在一定程度上提升模型在特定任务上的性能。
  • 多任务学习:适用于多任务学习场景,通过为不同任务创建不同的 delta 对象,可以在一个预训练模型上同时实现多个任务的适配,而不会像传统微调那样导致模型参数的混乱和冲突。
  • 模型压缩与部署:在模型压缩和部署方面,delta tuning 可以减少模型的存储和计算需求。由于只需要存储和更新少量的 delta 参数,模型的大小可以得到有效控制,便于在资源受限的设备上进行部署和运行。

综上所述,delta tuning 是一种在自然语言处理领域具有重要意义的模型微调方法,通过其独特的实现方式和优势,为大规模预训练模型在各种场景下的应用提供了更高效、更灵活的解决方案。

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

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

相关文章

【深度学习入门_基础篇】概率论

开坑本部分主要为基础知识复习,新开坑中,学习记录自用。 学习目标: 随机事件与概率、随机变量及其分布、多维随机变量及其分布、大数定律与中心极限定理。 强烈推荐此视频: 概率论_麻省理工公开课 废话不多说,直接…

Vision Transformer (ViT)原理

Vision Transformer (ViT)原理 flyfish Transformer缺乏卷积神经网络(CNNs)的归纳偏差(inductive biases),比如平移不变性和局部受限的感受野。不变性意味着即使实体entity(即对象)的外观或位…

【云计算】OpenStack云计算平台

OpenStack云计算平台框架搭建 1.先换源 先换成阿里源: curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 2.安装框架 yum -y install centos-release-openstack-train 3.安装客户端 yum -y install python-openstackclient 但…

如何让QPS提升20倍

一、什么是QPS QPS,全称Queries Per Second,即每秒查询率,是用于衡量信息检索系统(例如搜索引擎或数据库)或请求-响应系统(如Web服务器)每秒能够处理的请求数或查询次数的一个性能指标。以下是…

Domain Adaptation(李宏毅)机器学习 2023 Spring HW11 (Boss Baseline)

1. 领域适配简介 领域适配是一种迁移学习方法,适用于源领域和目标领域数据分布不同但学习任务相同的情况。具体而言,我们在源领域(通常有大量标注数据)训练一个模型,并希望将其应用于目标领域(通常只有少量或没有标注数据)。然而,由于这两个领域的数据分布不同,模型在…

SQL从入门到实战-1

目录 学前须知 sqlzoo数据介绍 world nobel covid ge game、goal、eteam teacher、dept movie、casting、actor 基础语句 select&from 基础查询select单列&多列&所有列&别名应用 例题一 例题二 例题三 select使用distinct去重 例题四 例题五…

Python在Excel工作表中创建数据透视表

在数据处理和分析工作中,Excel作为一个广泛使用的工具,提供了强大的功能来管理和解析数据。当面对大量复杂的数据集时,为了更高效地总结、分析和展示数据,创建数据透视表成为一种不可或缺的方法。通过使用Python这样的编程语言与E…

16_Redis Lua脚本

Redis Lua脚本是Redis提供的一种强大的扩展机制。 1.Redis Lua脚本介绍 1.1 基本概念 Redis Lua脚本允许开发者将一段Lua语言编写的代码发送给Redis服务器执行。这项功能自Redis 2.6版本引入以来,为用户提供了强大的灵活性和扩展能力,使得可以在Redis内部直接处理复杂的业…

springboot整合h2

在 Spring Boot 中整合 H2 数据库非常简单。H2 是一个轻量级的嵌入式数据库&#xff0c;非常适合开发和测试环境。以下是整合 H2 数据库的步骤&#xff1a; 1. 添加依赖 首先&#xff0c;在你的 pom.xml 文件中添加 H2 数据库的依赖&#xff1a; <dependency><grou…

Web前端界面开发

前沿&#xff1a;介绍自适应和响应式布局 自适应布局&#xff1a;-----针对页面1个像素的变换而变化 就是我们上一个练习的效果 我们的页面效果&#xff0c;随着我们的屏幕大小而发生适配的效果&#xff08;类似等比例&#xff09; 如&#xff1a;rem适配 和 vw/vh适配 …

【01】AE特效开发制作特技-Adobe After Effects-AE特效制作快速入门-制作飞机,子弹,爆炸特效以及导出png序列图-优雅草央千澈

【01】AE特效开发制作特技-Adobe After Effects-AE特效制作快速入门-制作飞机&#xff0c;子弹&#xff0c;爆炸特效以及导出png序列图-优雅草央千澈 开发背景 优雅草央千澈所有的合集&#xff0c;系列文章可能是不太适合完全初学者的&#xff0c;因为课程不会非常细致的系统…

java项目之在线文档管理系统源码(springboot+mysql+vue+文档)

大家好我是风歌&#xff0c;曾担任某大厂java架构师&#xff0c;如今专注java毕设领域。今天要和大家聊的是一款基于springboot的在线文档管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 在线文档管理系统的主要使用者分为管…

可靠的人形探测,未完待续(III)

一不小心&#xff0c;此去经年啊。问大家新年快乐&#xff01; 那&#xff0c;最近在研究毫米波雷达模块嘛&#xff0c;期望用在后续的产品中&#xff0c;正好看到瑞萨的活动送板子&#xff0c;手一下没忍住。 拿了板子就得干活咯&#xff0c;我一路火花带闪电&#xff0c;开整…

【灵码助力安全3】——利用通义灵码辅助智能合约漏洞检测的尝试

前言 随着区块链技术的快速发展&#xff0c;智能合约作为去中心化应用&#xff08;DApps&#xff09;的核心组件&#xff0c;其重要性日益凸显。然而&#xff0c;智能合约的安全问题一直是制约区块链技术广泛应用的关键因素之一。由于智能合约代码一旦部署就难以更改&#xf…

[python3]Uvicorn库

Uvicorn 是一个用于运行 ASGI&#xff08;Asynchronous Server Gateway Interface&#xff09;应用程序的轻量级服务器。ASGI 是 Python Web 应用程序接口的一种扩展&#xff0c;它不仅支持传统的同步 Web 请求处理&#xff0c;还支持异步请求处理、WebSockets 以及 HTTP/2。 h…

Android实战经验篇-增加系统分区

系列文章转如下链接&#xff1a; Android Display Graphics系列文章-汇总 Android实战经验篇-系列文章汇总 本文主要包括部分&#xff1a; 一、Android分区说明 1.1 系统分区查看 1.2 分区表修改 1.3 验证新分区 二、源码修改 2.1 generate_extra_images 2.2 fstab 2…

金山WPS Android面试题及参考答案

说说你所知道的所有集合?并阐述其内部实现。 在 Android 开发(Java 语言基础上)中有多种集合。 首先是 List 集合,主要包括 ArrayList 和 LinkedList。 ArrayList 是基于数组实现的动态数组。它的内部有一个数组来存储元素,当添加元素时,如果数组容量不够,会进行扩容操作…

腾讯云下架印度云服务器节点,印度云服务器租用何去何从

近日&#xff0c;腾讯云下架印度云服务器节点的消息引起了业界的广泛关注。这一变动让许多依赖印度云服务器的用户开始担忧&#xff0c;印度云服务器租用的未来究竟在何方&#xff1f; 从印度市场本身来看&#xff0c;其云服务市场的潜力不容小觑。据 IDC 报告&#xff0c;到 2…

【RTSP】使用webrtc播放rtsp视频流

一、简介 rtsp流一般是监控、摄像机的实时视频流,现在的主流浏览器是不支持播放rtsp流文件的,所以需要借助其他方案来播放实时视频,下面介绍下我采用的webrtc方案,实测可行。 二、webrtc-streamer是什么? webrtc-streamer是一个使用简单机制通过 WebRTC 流式传输视频捕获…

多并发发短信处理(头条项目-07)

1 pipeline操作 Redis数据库 Redis 的 C/S 架构&#xff1a; 基于客户端-服务端模型以及请求/响应协议的 TCP服务。客户端向服务端发送⼀个查询请求&#xff0c;并监听Socket返回。通常是以 阻塞模式&#xff0c;等待服务端响应。服务端处理命令&#xff0c;并将结果返回给客…