提示学习(Prompting)篇

提示学习(Prompting)篇

一、为什么需要 提示学习(Prompting)?

在面对特定的下游任务时,如果进行Full FineTuning(即对预训练模型中的所有参数都进行微调),太过低效;而如果采用固定预训练模型的某些层,只微调接近下游任务的那几层参数,又难以达到较好的效果

二、什么是 提示学习(Prompting)?

Prompt提供上下文和任务相关信息,以帮助模型更好地理解要求,并生成正确的输出

实例一:问答任务中,prompt可能包含问题或话题的描述,以帮助模型生成正确的答案。

实例二:在情感分析任务中,让模型做情感分类任务的做法通常是在句子前面加入前缀"该句子的情感是"即可,通过这种方式将情感分类任务转换为一个"填空"任务,在训练过程中,BERT可以学习到这个前缀与句子情感之间的关联。例如,它可以学习到"该句子的情感是积极的"和"该句子的情感是消极的"之间的差异。

三、提示学习(Prompting) 有什么优点?

提示学习(Prompting)旨在通过最小化微调参数的数量和计算复杂度,来提高预训练模型在新任务上的性能,从而缓解大型预训练模型的训练成本。这样一来,即使计算资源受限,也可以利用预训练模型的知识来迅速适应新任务,实现高效的迁移学习。

四、提示学习(Prompting)有哪些方法,能不能稍微介绍一下它们间?

前缀微调(Prefix-tining)篇

为什么需要 前缀微调(Prefix-tining)?
  1. 人工设计离散的 Prompts 缺点:
    • Prompts 的变化对模型最终的性能特别敏感,加一个词、少一个词或者变动位置都会造成比较大的变化。
  2. 自动化搜索离散的 Prompts 缺点:
    • 成本也比较高。
    • 离散化的token搜索出来的结果可能并不是最优的。
    • 传统的微调范式利用预训练模型去对不同的下游任务进行微调,对每个任务都要保存一份微调后的模型权重,一方面微调整个模型耗时长;另一方面也会占很多存储空间。
前缀微调(Prefix-tining)思路是什么?
  • Prefix构建:在输入token之前构造一段任务相关的virtual tokens作为Prefix。
  • 训练时只更新Prefix部分的参数,而Transformer中的其他部分参数固定。
  • 在Prefix层前面加了MLP结构(相当于将Prefix分解为更小维度的Input与MLP的组合后输出的结果),训练完成后,只保留Prefix的参数;(用于防止直接更新Prefix的参数导致训练不稳定的情况)
前缀微调(Prefix-tining)的优点是什么?
  1. 前缀微调(Prefix-tining) vs 人工设计离散的 Prompts:无法更新参数。前缀微调(Prefix-tining) 可以学习的"隐式"的 Prompts
  2. 基于前缀的架构可以在一个批次中处理来自多个用户/任务的样本,这是其他轻量级微调方法所不能做到的。
  3. vs full fine-tuning:full fine-tuning 更新所有参数,Prefix Tuning 只更新Prefix部分的参数
前缀微调(Prefix-tining)的缺点是什么?
  1. 占用序列长度。有一定的额外计算开销。
  2. 在每层都加了prompt的参数,改动较大。

指示微调(Prompt-tuning)篇

为什么需要 指示微调(Prompt-tuning)?
  1. 模型全量微调对每个任务训练一个模型,开销和部署成本都比较高
  2. 离散的prompts(指人工设计prompts 提示语加入到模型)方法,成本比较高,并且效果不太好。
  3. 前缀微调(Prefix-tining)占用序列长度。有一定的额外计算开销。
  4. 前缀微调(Prefix-tining)在每层都加了prompt的参数,改动较大。
指示微调(Prompt-tuning)思路是什么?
  1. 将 prompt 扩展到连续空间,仅在 输入层 添加 prompt连续向量,通过反向传播更新参数来学习prompts,而不是人工设计prompts。
  2. 冻结模型原始权重,只训练prompts参数,训练完成后,只用同一个模型可以做多任务推理。
  3. 使用 LSTM 建模 prompt 向量间 关联性
指示微调(Prompt-tuning)优点是什么?
  1. 只在输入层加入prompt tokens,并且不需要加入 MLP 进行调整来解决难训练的问题
  2. 随着预训练模型参数量的增加,Prompt Tuning的方法会逼近全参数微调的结果。
  3. 提出了prompt ensembling:在一个批次(Batch)里同时训练同一个任务的不同 prompt(即采用多种不同方式询问同一个问题),这样相当于训练了不同模型,比模型集成的成本小多了。
指示微调(Prompt-tuning)缺点是什么?
  1. 训练难度加大。不太好训练,省了显存,但不一定省时间。具体来讲,大部分prompt现在只是parameter efficient并没有达到想要的training efficient。也就是说只是省了空间(显存),但不一定能加快训练,训练时间有可能更长。
  2. 多个 prompt token 之间相互独立,可能会影响效果。
  3. 在NLU上,prompt tuning对于正常大小的预训练模型表现不佳。
  4. 现有的prompt tuning方法不能处理困难的序列标注任务。
指示微调(Prompt-tuning)与 Prefix-tuning 区别 是什么?
  1. 适用任务不同:
    • Prefix-tuning 仅针对 NLG 任务有效,服务于 GPT 架构。
    • 指示微调(Prompt-tuning) 考虑所有类型的语言模型。
  2. 添加方式不同:
    • Prefix-tuning 限定在输入前面添加。
    • 指示微调(Prompt-tuning) 可以在任意位置添加。
  3. prompt连续向量添加方式不同:
    • Prefix-tuning 每一层都添加,保证效果。
    • 指示微调(Prompt-tuning) 可以只在 输入层 添加。
指示微调(Prompt-tuning)与 fine-tuning 区别 是什么?
  1. Fine-tuning 需要改变预训练阶段模型参数,可能带量灾难性遗忘问题。
  2. 指示微调(Prompt-tuning) 不改变预训练阶段模型参数,而是通过微调寻找更好的连续 prompt,来引导已学习到的知识使用。

P-tuning 篇

为什么需要 P-tuning?
  1. 大模型的Prompt构造方式严重影响下游任务的效果。
    • 例如:GPT系列AR建模在自然语言理解NLU任务上效果不好,与BERT双向语言模型相比有明显差距。
    • 注:GPT-3采用人工构造的模版来做上下文学习(in context learning),但人工设计的模版的变化特别敏感,加一个词或者少一个词,或者变动位置都会造成比较大的变化。
  2. 之前的研究表明GPT3使用prompt训练方式可以显著提升few-shot 和 zero-shot的效果。
  3. 自动化搜索模版工作成本也比较高,以前这种离散化的token的搜索出来的结果可能并不是最优的,导致性能不稳定。
P-tuning 思路是什么?
  1. 可学习的 Embedding层 设计:将 Prompt 转换为 可学习 Embedding层。
  2. prompt encoder设计:用 prompt encoder(由一个双向的LSTM+两层MLP组成) 的方式来对Prompt Embedding进行一层处理,建模伪token的相互依赖,并且可以提供一个更好的初始化。
P-tuning 优点是什么?

引入prompt encoder(由一个双向的LSTM+两层MLP组成)来建模伪token的相互依赖,并且可以提供一个更好的初始化。

P-tuning 缺点是什么?
  1. 复杂性增加。稍显复杂,看着不太像prompt了。
  2. 伪token编码时是连续的,但在与输入结合时可能是不连续的,中间可能会插入输入。

P-tuning v2 篇

为什么需要 P-tuning v2?

如何让Prompt Tuning能够在不同参数规模的预训练模型、针对不同下游任务的结果上都达到匹敌Fine-tuning的结果。

P-tuning v2 思路是什么?
  1. Deep Prompt Encoding:采用 Prefix-tuning 的做法,在输入前面的每层加入可微调的 Prompts tokens作为输入。
  2. 移除了重参数化的编码器(prefix-tuning中可选的MLP、p-tuning中的LSTM):prefix-tuning 和 p-tuning,通过利用重参数化功能来提高训练速度和鲁棒性,但是该方法对于较小的模型,同时还会影响模型的表现。
  3. 针对不同任务采用不同的提示长度:提示长度在提示优化方法的超参数搜索中起着核心作用。在实验中发现不同的理解任务通常用不同的提示长度来实现其最佳性能,这与Prefix-Tuning中的发现一致,不同的文本生成任务可能有不同的最佳提示长度。
  4. 引入多任务学习,先在多任务的prompt上进行预训练,然后再适配下游任务。
    • 连续提示的随机惯性给优化带来了困难,这可以通过更多的训练数据或与任务相关的无监督预训练来缓解。
    • 连续提示是跨任务和数据集的特定任务知识的完美载体。
  5. 抛弃了prompt learing中常用的verbalizer,回归到传统的CLS和token label分类范式。标签词映射器(Label Word Verbalizer)一直是提示优化的核心组成部分,它将one-hot类标签变成有意义的词,以利用预训练语言模型头。尽管它在few-shot设置中具有潜在的必要性,但在全数据监督设置中,Verbalizer并不是必须的。它阻碍了提示调优在我们需要无实际意义的标签和句子嵌入的场景中的应用。因此,P-Tuning v2回归传统的CLS标签分类范式,采用随机初始化的分类头(Classification Head)应用于tokens之上,以增强通用性,可以适配到序列标注任务。
P-tuning v2 优点是什么?
  1. 在输入前面的每层加入可微调的 Prompts tokens作为输入,优点:
    • 更多可学习的参数(从P-tuning和Prompt Tuning的0.01%增加到0.1%-3%),同时也足够参数高效。
    • 加入到更深层结构中的Prompt能给模型预测带来更直接的影响。
  2. 解决了Prompt Tuning无法在小模型上有效提升的问题。
  3. 将Prompt Tuning拓展至NER等序列标注任务上。
P-tuning v2 缺点是什么?

抛弃了prompt learing中常用的verbalizer,回归到传统的CLS和token label分类范式,这其实某种程度上弱化了prompt的味道。

总结

本文详细介绍了提示学习(Prompting)的各个方法,包括前缀微调(Prefix-tining)、指示微调(Prompt-tuning)、P-tuning和P-tuning v2。每种方法都有其独特的思路和实现方式,展示了提示学习在不同任务和模型中的应用和优化策略。通过这些方法,提示学习在提高预训练模型在新任务上的性能方面展示了巨大的潜力。

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

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

相关文章

英语知识网站开发:Spring Boot框架应用

3系统分析 3.1可行性分析 通过对本英语知识应用网站实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本英语知识应用网站采用SSM框架,JAVA作为开发语…

非协议默认端口的:NAT alg需配置port-mapping

参考解释文章: https://zhiliao.h3c.com/Theme/details/167990 https://zhiliao.h3c.com/Theme/details/44359 nat的alg和port-mapping - 知了社区 NAT alg的功能 NAT ALG(Application Level Gateway,应用层网关)主要完成对应用…

三六零[601360]行情数据接口

1、三六零:实时行情 Restful API # 测试接口:可以复制到浏览器打开 https://tsanghi.com/api/fin/stock/XSHG/realtime?tokendemo&ticker601360获取股票实时行情(开、高、低、收、量)。 请求方式:GET。 Python示例…

Xilinx Blockset Gateway In 和Gateway out模块使用及参数配置

目录 一、Gateway InSimulink数据到System Generator数据的转换Gateway BlocksBlock Parameters(模块参数)Basic选项卡参数Implementation选项卡参数 二、Gateway OutGateway BlocksBlock Parameters(模块参数)Basic选项卡参数Imp…

三格电子—EtherNet IP转Modbus RTU网关

EtherNet/IP转Modbus RTU网关 SG-EIP-MOD-210 产品用途 SG-EIP-MOD-210网关可以实现将Modbus接口设备连接到 EtherNet/IP网络中。用户不需要了解具体的Modbus和 EtherNet/IP协议即可实现将Modbus设备挂载到 EtherNet/IP接口的PLC上,并和Modbus设备进行数据交互。拓…

使用 Jina Embeddings v2 在 Elasticsearch 中进行后期分块

作者:来自 Elastic Gustavo Llermaly 在 Elasticsearch 中使用 Jina Embeddings v2 模型并探索长上下文嵌入模型的优缺点。 在本文中,我们将配置和使用 jina-embeddings-v2,这是第一个开源 8K 上下文长度嵌入模型,首先使用 semant…

【西瓜书】剪枝与样本值处理——预剪枝、后剪枝、连续值、缺失值

目录 预剪枝 后剪枝 处理连续值 处理缺失值 剪枝(pruning)是决策树学习算法对付“过拟合”的主要手段。 在决策树学习过程中,有时会造成决策树分枝过多,就可能造成过拟合,可通过主动去掉一些分支来降低过离合的风…

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化? 重要性:★★ NLP Github 项目: NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用&am…

H3C OSPF 多区域实验

目录 前言 实验拓扑 实验需求 实验解析 路由器配置 测试 前言 此篇文章为 OSPF多区域试验,建议先食用OSPF单区域实验,理解实验原理 学习基本配置,再来使用此篇,效果更佳!(当然如果你已经了解原理与基…

基于Spring Boot的装饰工程管理系统论文

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统装饰工程项目信息管理难度大,容错率低&#x…

DNS高速缓存污染

DNS高速缓存污染,也称为DNS缓存投毒,是一种网络攻击手段,攻击者通过篡改DNS服务器中的缓存记录,使得用户访问的域名被错误地解析到攻击者控制的IP地址,从而将用户重定向到恶意网站或阻止用户访问目标网站。这种攻击破坏…

一文详解“分治—快排“在算法中的应用

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: 优选算法专题 分治算法是利用分而治之的思想来实现的。典型代表,递归,将一个大问题转换为多个与其类似的小问题&#…

【三维生成】Edify 3D:可扩展的高质量的3D资产生成(英伟达)

标题:Edify 3D: Scalable High-Quality 3D Asset Generation 项目:https://research.nvidia.com/labs/dir/edify-3d demo:https://build.nvidia.com/Shutterstock/edify-3d 文章目录 摘要一、前言二、多视图扩散模型2.1.消融研究 三、重建模型…

基于机器视觉的表面缺陷检测

基于机器视觉的表面缺陷检测存在的问题与难点 - AVT相机|AVT红外相机|万兆网相机EVT|VIEWORKS线扫相|映美精相机|Specim多光谱相机|Adimec相机|Basler相机|富士能FUJINON镜头|理光RICOH镜头|OPTO远心镜头|SPO远心镜头|Navtar镜头|VST镜头|CCS光源|3D视觉引导机床上下料系统 (完…

SpringBoot整合MQTT利用EMQX完成消息的发布与接收+Python模拟硬件测试通信

教程说明 本教程主要内容为使用SpringBoot整合MQTT利用EMQX代理服务完成MQTT的消息发送与接收,然后用Python模拟硬件与SpringBoot应用进行了MQTT消息的通信,教程详细,并在最后讲解了开发中的注意事项,本教程适用于物联网领域、Ja…

IntelliJ IDEA 中,自动删除无用导包

在 IntelliJ IDEA 中,自动删除无用导包是一个提升代码整洁性和开发效率的重要功能。以下是实现这一功能的详细步骤: 一、通过快捷键手动删除无用导包 打开Java文件:在IDEA中打开你需要操作的Java文件。 使用快捷键: 在Windows系…

表格数据处理中大语言模型的微调优化策略研究

论文地址 Research on Fine-Tuning Optimization Strategies for Large Language Models in Tabular Data Processing 论文主要内容 这篇论文的主要内容是研究大型语言模型(LLMs)在处理表格数据时的微调优化策略。具体来说,论文探讨了以下…

如何编写一个 Vue 3 应用:模板插值示例

Vue.js 是一个渐进式的 JavaScript 框架,用于构建用户界面。在本篇博客中,我们将通过一个简单的示例来学习如何使用 Vue 3 创建一个基本的应用。这个示例将展示如何使用 Vue 的模板插值和事件处理来构建一个简单的点击计数器。 步骤 1: 准备工作 首先&…

基于混合ABC和A*算法复现

基于混合ABC和A*算法复现 一、背景介绍二、算法原理(一)A*算法原理(二)人工蜂群算法原理(三)混合ABC和A*算法策略 三、代码实现(一)数据准备(二)关键函数实现…

2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略(详细解题思路)

在当下, 日益发展的时代,宠物的数量应该均为稳步上升,在美国出现了下降的趋势, 中国 2019-2020 年也下降,这部分变化可能与疫情相关。需要对该部分进行必要的解释说明。 问题 1: 基于附件 1 中的数据及您的团队收集的额…