提示学习(Prompting)
、为什么需要提示学习(Prompting)?三、提示学习(Prompting)有什么优点? 二、什么是提示学习(Prompting)?四、提示学习(Promping)有哪些方法,能不能稍微介绍一下它们间?4.1前级微调(Prefix-tining)篇4.1.1为什么需要前微调(Prefix-ining)? 4.1.2前缀微调(Prefix-ining)思路是什么?4.1.3前缓微调(Prefix-ining)的优点是什么?4.1.4前缀微调(Prefix-tining)的缺点是什么?4.2指示微调(Prompt-tuning)算4.2.1为什么需要指示微调(Prompt-tuning)? 4.2.2指示微调(Prompt-tuning)思路是什么?4.2.3指示微调(Prompt-tuning)优点是什么?4.2.4指示微调(Prompt-tuning)缺点是什么?4.2.6指示微调(Prompt-tuning)与fine-tuning区别是什么? 4.2.5指示微调(Prompt-tuning)与Prefix-tuning区别是什么?4.3 P-tuning 篇4.3.1为什么需要P-tuning?4.3.2P-tuning思路是什么?4.3.3 P-tuning 优点是什么? 4.3.4P-tuning缺点是什么?4.3.5大模型微调p_tuning和传统fine tuning有什么区别?4.4 P-tuning v2篇4.4.1为什么需要P-tuning v2?4.4.3 P-tuning v2优点是什么? 4.4.2 P-tuning v2思路是什么?4.4.4P-tuningv2缺点是什么?
一、为什么需要提示学习(Prompting)?
在面对特定的下游任务时,如果进行FullFineTuning(即对预训练模型中的参数都进行微调),太过低效:而如果采用固定预训练模型的某些层,只微调接近下游任务的那几层参数,又难以达到较好的效果.
二、什么是提示学习(Prompting)?
Prompt提供上下文和任务相关信息,以帮助模型更好地理解要求,并生成正确的输出.实例一:间答任务中,prompt可能包含间题或话题的描述,以帮助模型生成正确的答案实例二:在情感分析任务中,让模型做情感分类任务的做法通常是在句子前面加入前缀
“该句子的情感是”即可,通过这种方式将情感分类任务转换为一个“填空”任务,在训练过程中,BERT可以学习到这个前缀与句子情感之间的关联.例如,它可以学习到“该
三、提示学习(Prompting)有什么优点?
提示学习(Prompting)旨在通过最小化微调参数的数量和计算复杂度,来提高预训练模型在新任务上的性能,从而缓解大型预训练模型的训练成本.这样一来,即使计算资源受限, 也可以利用预训练模型的知识来迅速适应新任务,实现高效的迁移学习.
四、提示学习(Prompting)有哪些方法,能不能稍微介绍一下?
4.1前缀微调(Prefix-tining)篇
4.1.1为什么需要前缀微调(Prefix-tining)?
人工设计离散的Prompts缺点:Prompts的变化对模型最终的性能特别敏感,加一个词、少一个词或者变动位置都会造成比较大的变化 自动化搜索离散的Prompts缺点:成本也比较高离散化的token搜索出来的结果可能并不是最优的:微调后的模型权重,一方面微调整个模型耗时长:另一方面也会占很多存储空间 传统的微调范式利用预训练模型去对不同的下游任务进行微调,对每个任务都要保存一份
4.1.2前缀微调(Prefix-tining)思略是什么?
step 1Prefix构建.在输入 token之前构造一段任务相关的virtual tokens作为 Prefix; step2训练时只更新Prefix部分的参数,面Transformer中的其他部分参数固定:step 3在Prefix层前面加了MLP结构(相当于将Prefix分解为更小维度的 Input 与 MLP的组合后输出的结果),训练完成后,只保留Prefix的参数:(用于防止直接更新Prefix的参数导致训练不稳定的情况)
4.1.3前缀微调(Prefix-tining)的优点是什么?
前级微调(Prefix-tining)vs人工设计离散的Prompts 无法更新参数:前缀微调(Prefix-基于前缀的架构可以在一个批次中处理来自多个用户/任务的样本,这是其他轻量级微调方vs full fine-tuning:fullfine-tuning 更新参数,Prefix Tuning 只更新 Prefix 部分的参数: 法所不能做到的:
4.1.4前缀微调(Prefix-tining)的缺点是什么?
在每层都加了prompt的参数,改动较大; 占用序列长度.有一定的额外计算开销:
4.2指示微调(Prompt-tuning)篇
4.2.1为什么需要指示微调(Prompt-tuning)?
模型全量微调对每个任务训练一个模型,开销和部署成本都比较高:离散的prompts(指人工设计prompts 提示语加入到模型)方法,成本比较高,并且效果不前缀微调(Prefix-ining)占用序列长度.有一定的额外计算开销; 太好:前缀微调(Prefix-tining)在每层都加了prompt的参数,改动较大;
4.2.2指示微调(Prompt-tuning)思路是什么?
将prompt扩展到连续空间,仅在输入层添加prompt连续向量,通过反向传播更新参数来 学习prompts.面不是人工设计prompts:冻结模型原始权重,只训练prompts参数,训练完成后,只用同一个模型可以做多任务推理:使用LSTM建模prompt 向量间关联性
4.2.3指示微调(Prompt-tuning)优点是什么?
只在输入层加入promptokens,并且不需要加入MLP进行调整来解决难训练的间题:随着预训练模型参数量的增加,PromptTuning的方法会逼近全参数微调的结果:提出了prompt ensembling:在一个批次(Batch)里同时训练同一个任务的不同prompt(即 采用多种不同方式询问同一个问题),这样相当于训练了不同模型,比模型集成的成本小多了:
4.2.4指示微调(Prompt-tuning)缺点是什么?
训练难度加大.不太好训练,省了显存,但不一定省时间.具体来讲,大部分prompt现在只是parameter efficient 并没有达到想要的 training efficient.也就是说只是省了空间(显存),多个prompt token之间相互独立,可能会影响效果 但不一定能加快训练,训练时间有可能更长在NLU上,prompt tuning对于正常大小的预训练模型表现不佳;现有的prompt tuning方法不能处理困难的序列标注任务
4.2.5指示微调(Prompt-tuning)与Prefix-tuning区别是什么?
可以看作是PrefixTuning的简化版本
适用任务不同
Prefix-tuning 仅针对NLG任务有效,服务于GPT架构:(-)添加方式不同Prefix-tuning限定在输入前面添加prompt连续向量添加方式不同 指示微调(Prompt-tuning)可以在任意位置添加Prefix-tuning每一层都添加,保证效果指示微调(Prompt-tuning)可以只在输入层添加
Fine-tuning需要改变预训练阶段模型参数,可能带量灾难性遗忘问题 指示微调(Prompt-tuning)不改变预训练阶段模型参数,面是通过微调寻找更好的连续prompt,来引导已学习到的知识使用
4.3P-tuning篇
4.3.1为什么需要P-tuning?
大模型的Prompt构造方式严重影响下游任务的效果.cg:GPT系列AR建模在自然语言理解NLU任务上效果不好,与BERT双向语言模型相比有明显差距:
注:GPT-3采用人工构造的模版来做上下文学习(incontextleaming),但人工设计的模版的变化特别敏感,加一个词或者少一个词,或者变动位置都会造成比较大的变化
之前的研究表明GPT3使用prompt训练方式可以显著提升few-shot和zero-shot的效果:是最优的,导致性能不稳定: 自动化搜索模版工作成本也比较高,以前这种离散化的token的搜索出来的结果可能并不
4.3.2P-tuning思路是什么?
可学习的Embedding层设计.将Prompt 转换为可学习Embedding层:prompt encoder设计.用prompt encoder(由一个双向的LSTM两层MLP组成)的方式来对Prompt Embedding进行一层处理,建模伪token的相互依赖,并且可以提供一个更好的初始化.
4.3.3P-tuning优点是什么?
引入prompt encoder(由一个双向的LSTM两层MLP组成)来建模伪token的相互依赖,并且可以提供一个更好的初始化;
4.3.4P-tuning缺点是什么?
复杂性增加,稍显复杂,看着不太像prompt了:伪 token编码时是连续的,但在与输入结合时可能是不连续的,中间可能会插入输入
-
4.4.1为什么需要P-tuningv2?
如何让Prompt Tuning能够在不同参数规模的预训练模型、针对不同下游任务的结果上都达到匹敌 Fine-tuning的结果:
4.4.2P-tuningv2思路是什么?
Dep Prompt Encoding:采用 Prefix-tuning 的做法,在输入前面的每层加入可微调的 Prompts tokens 作为输入:
移除了重参数化的编码器(prefix-tuning 中可选的 MLP、p-tuning 中的 LSTM):prefix-tuning和p-tuning,通过利用重参数化功能来提高训练速度和鲁棒性,但是该方法对于较小的模型,同时还会影响模型的表现:
针对不同任务采用不同的提示长度.提示长度在提示优化方法的超参数搜索中起着核心作 用.在实验中,发现不同的理解任务通常用不同的提示长度来实现其最佳性能,这与Prefix-Tuning中的发现一致,不同的文本生成任务可能有不同的最佳提示长度:
引入多任务学习,先在多任务的prompt上进行预训练,然后再适配下游任务:
连续提示的随机惯性给优化带来了困难,这可以通过更多的训练数据或与任务相关的无监督预训练来缓解:
连续提示是跨任务和数据集的特定任务知识的完美载体:
抛弃了prompt learing 中常用的 verbalizer,回归到传统的 CLS 和 token label分类范式.标签词映射器(LabelWordVerbalizer)一直是提示优化的核心组成部分,它将one-hot类标签变成有意义的词,以利用预训练语言模型头.尽管它在few-shot设置中具有潜在的必要性, 但在全数据监督设置中,Verbalizer并不是必须的.它阻碍了提示调优在我们需要无实际意义的标签和句子嵌入的场景中的应用.因此,P-TuningV2回归传统的CLS标签分类范式,采用随机初始化的分类头(Classification Head)应用于 tokens 之上,以增强通用性,可以适配到序列标注任务.
4.4.3P-tuningv2优点是什么?
在输入前面的每层加入可微调的Prompts tokens作为输入,优点:更多可学习的参数(从P-tuning和Prompt Tuning的0.01%增加到0.1%-3%),同时也足够参数高效: 加入到更深层结构中的Prompt能给模型预测带来更直接的影响:解决了PromptTuning无法在小模型上有效提升的问题:将PromptTuning拓展至NER等序列标注任务上
4.4.4P-tuningv2缺点是什么?
抛弃了prompt learing中常用的verbalizer,回归到传统的CLS和 token label分类范式,这其实某种程度上弱化了prompt的味道