ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

解密Prompt系列1. Tunning-Free Prompt:GPT2 GPT3 LAMA AutoPrompt

2026/8/11 3:48:05 拓冰建站 浏览量
解密Prompt系列1. Tunning-Free Prompt:GPT2  GPT3  LAMA  AutoPrompt 借着 ChatGPT 的东风我们来梳理下 prompt 范式的相关模型。本系列会以《A Systematic Survey of Prompting Methods in Natural Language Processing》这篇综述为基础分门别类地整理下这几年比较有代表性的 prompt 模型。或许你还以其他形式看到过 prompt 概念例如 demonstration、instruction、in-context learning、few-shot learning等等。开篇我们简单介绍下 prompt 范式并以其中的冻结参数 tuning-free prompt 为线索串联 GPT-2、GPT-3、LAMA 和 AutoPrompt 这四种冻结参数的基础模型。What is prompt?综述1.Pre-train, Prompt, and Predict: A Systematic Survey of Prompting MethodsinNatural Language Processing(五星好评)综述2. Paradigm ShiftinNatural Language Processing(四星推荐)综述3. Pre-Trained Models: Past, Present and FuturePrompt 即提示学习是继预训练微调范式后众望所归的第四范式。在预训练微调的范式中我们调整预训练模型来匹配下游任务数据本质是对预训练学到的众多信息进行重新排列和筛选。而 prompt 是通过引入“提示信息”让模型回忆起预训练中学过的语言知识也就是调整下游数据来适配预训练模型进而把所有 NLP 任务都统一成 LM 任务。举几个例子以下 [x] 为 prompt 提示词[z] 为模型预测。分类任务相比情绪分类对应的多分类0~N的输出Prompt会输出对应代表情绪的token抽取任务生成任务看着非常玄妙但其实部分原理就来自于于超大的预训练数据中包含的丰富文本知识。例如English2French的翻译任务在预训练文本中会自然出现一些英法的对应文本如下。而提示词的加入可以理解为尝试还原模型在以下场景中的上下文(Attention)那和预训练微调的范式相比Prompt有什么优势微调参数量更小这几年模型越来越大连微调都变成了一件很奢侈的事情而prompt出现提供了新的选择可以freeze模型只对提示词进行微调小样本场景: 不少Prompt模型是面向zero-shotfew-shot场景设计的多任务范式统一一切皆为LMPrompt模型的设计主要包含以下几个模块Pretrain Model ChoiceGPT等DecoderBERT等EncoderBART等Encoder-DecoderPrompt Engineering离散模板文本连续模板embedding)的设计。模型效果对模板的敏感性以及人工模板设计的不稳定的和难度是需要解决的问题Answer Engineering: 包括答案文本的搜索和预测文本到标签的映射。相比分类标签Prompt范式输出的答案多为文本因此多了一步文本到标签的解析Training Strategy主要有4种不同类型LM和Prompt都冻结的Tunning-free微调LM冻结Prompt冻结LM微调Prompt和LMPrompt微调我们先按照Training Strategy的不同来梳理下各个方向的基础模型再进阶的前沿模型哈哈所以得花点时间才能轮到ChatGPT。第一章介绍Tunning-Free Prompt在下游任务使用中LM和Prompt都是冻结的不需要针对下游任务进行微调可以用于Zero-shot和few-shot场景主要介绍下GPT2GPT3LAMA和AutoPrompt。GPT2GPT2:Language Models are Unsupervised Multitask Learners2019.2任务NLGPrompt: Discrete Hand crafted Prompt核心Language Model本身就是无监督的多任务学习在前BERT时代通用文本表征-GenSen就探索过通过多任务得到在不同下游任务中泛化能力更好的文本表征而后BERT时代MQPNMTDNN等模型也探索过如何通过多任务学习得到更加通用的大模型。GPT2更往前迈了一步它认为如果语言模型足够优秀则在拟合P(output|input)的过程中对p(output|input,task)也会进行学习因为NLP任务信息本身就会在丰富的预训练预料中出现例如上面我们举的翻译的case。和GPT相比GPT2的创新就是在“LM是无监督多任务”这个观点上所以GPT2的评测是基于无finetune的zero-shot场景进行的旨在证明足够优秀的语言模型是可以不经过微调直接用在不同的下游场景中的。那如何让模型针对不同的任务给出预测呢作者通过在原始Input上加入任务相关提示词的方式这不prompt就来了举个栗子TranslationEnglish 输入 French Summarization文章 TLDR这里TLDR是Too Long; Didn’t Read的缩写可类比咱的‘一言以蔽之‘会出现在大段文本的末尾作为总结升华或者对话中几年前看GPT2的论文只觉得模型更大了(评估是用的1542M的版本是Bert-large的5倍)样本更多了zero-shot的能力挺新奇但是效果差点意思。如今从Prompt的角度重读GPT2更像是在探索模型zero-shot能力的时候不小心推开了prompt的大门从最直观的视角构建了Prompt提示词也就是类似的任务在常规文本中是以什么形式关键词出现的就以该形式构建文本输入即可~除此之外GPT2对模型的微调以及构造了更大质量更高的数据集这里就不细说了~GPT3GPT3: Language Models are Few-Shot Learners 2020.5Making pre-trained language models better few-shot learners任务无所不能Prompt: Discrete Hand crafted Prompt Prompt Augmentation核心大力出奇迹175B大模型在few-shotzero-shot的模型表现甚至可以比肩微调GPT3是GPT2的延续一方面旨在进一步提高模型的zero-shot能力方法简单粗暴加参数就完事了175Billion的参数首次证明了规模的量变会带来质变[Ref8]详细论证了大模型会带来一些奇迹般的能力包括更强的复杂推理知识推理和样本外泛化能力另一方面GPT3在few-shot场景做了很多尝试提出了自带神秘光环的in-context learning可以被归类为multi-prompt中的prompt augmentation方案~175BillonGPT3的模型结构延续GPT系列但测试了不同模型参数量级的8个模型在不同下游任务上的效果从125M到175B模型效果在zero/one/few-shot的设定下都有稳步提升。在TriviaQA等任务上175B的GPT3甚至超越微调模型拿到了SOTA算是预训练模型超越微调模型的第一次。但在NLI(判断两个句子是相似对立中性)WiC判断一个单词是否在两个句子中含义相同两个任务上GPT3的表现非常差看起来似乎对涉及两个句子间逻辑推断的任务并不擅长。或许因为类似两个文本的逻辑推断在预训练文本中未出现过针对GPT3变态的模型大小咱不聊技术垄断OpenAI好有钱blabla我更好奇的是增长的参数究竟是如何提升模型能力是更多的参数可以记忆更多的知识还是更大的向量空间可以让模型学到更加线性可分的空间表征使得下游任务对信息的解码更加简单所以在few-shot场景有更好的表现还没看到较严谨的论证有知道的盆友求答疑解惑In-context learning论文在GPT2已有的zero-shot的基础上提出了In-Context learning的概念也称类比学习上下文学习或者语境学习。有one-shot和few-shot两种方案对应不同的增强Prompt的构建方式。随着模型参数量级的提升few-shotone-shot带来的效果提升更加显著。以英翻法任务为例zero-shot: Prompt为任务描述one-shot: Prompt Augmentation任务描述一个带答案的样本few-shot: Prompt Augmentation任务描述多个带答案的样本GPT3对其他NLP任务的prompt构建方案详见论文附录G~对于Prompt Augmentation带来的效果提升个人感觉in-context这个词的使用恰如其分就是带答案的样本输入其实做了和任务描述相似的事情也就是让待预测的输入处于和预训练文本中任务相关语料相似的上下文。带答案的样本比任务描述本身更接近自然的上下文语境。不过prompt增强的构建还有许多细节待研究例如抽取哪些样本更好不同样本模型预测结果是否稳健样本答案的构建方式样本的顺序是否有影响等等。针对素材生成的场景没啥所谓但是对抽取分类QA等任务如果不同的prompt会得到显著不同的结果就让人很头疼了~[Ref6]的论文更深入的探究了in-context具体提供了哪些信息作者定位到以下4类信息输入标签的对应关系: 把样本标签改成错误标签模型效果下降有限标签分布把标签改成随机单词模型效果有显著下降输入分布在prompt中加入领域外文本模型效果有显著下降输入输出格式改变双输入格式在prompt中只保留标签或者只保留输入模型效果都会有显著下降GPT3正式推开了in-context learning的大门模型参数也断层式的增长进入了Billon级别后面的FlanPaLMLaMDA皆是这个大小。不过就效果而言GPT3在部分任务上依旧会被小模型T5吊打以至于模型规模增长到底是否是正确的技术方向一度被质疑直到之后的Chain of Thought出现才被逆转这个放在后面章节再说~LAMALAMA: Language Models as Knowledge Bases? 2019.9Github: https://github.com/facebookresearch/LAMA任务NLU实事抽取prompt: cloze Hand Craft Prompt核心不经过微调的Bert在知识抽取和开放与问答上效果惊人的好可以比肩有监督的KG基准LAMA是在GPT2和GPT3之间提出的一个探测(probe)任务旨在研究预训练模型存储的知识信息这里只考虑实体关系三元组(Subject, Relation, Object)。LAMA设计的Probe方案就是人工设计的完形填空(cloze类型的prompt模板。例如把出生地实体识别转化成小明出生于[MASK]的完形填空任务如果模型预测MASK正确就认为模型掌握了这一知识。来具体说下LAMA针对不同关系构建的Prompt模板。论文使用以下4个评测数据Google-REWikipedia抽取的事实包括5种关系论文只保留了出生地死亡地出生日期3种关系因为剩余两种的预测结果为多token而LAMA的答案模板限制只预测1个token。每种关系作者手工构建了Prompt填空模板举个栗子出生时间Federico Falco is an Argentinian writer born in [MASK] .Steve Lindsey (born May, 6th [MASK]) is an American record producer出生地Lucy Toulmin Smith was born at [MASK], Massachusetts, USABorn in [MASK], New Jersey, Connor attended parochial schools as a child死亡地Uvedale Tomkins Price died at [MASK] in 1764Lewin died on December 18, 2010, at the age of 84 in [MASK]T-RExwikidata三元组比Google-RE范围更广作者选取了41种关系每种关系采样了1000条事实。每种关系作者手工构建了Prompt模板部分Prompt如下ConceptNet多语言词之间的常识关系作者只考虑object为英文单字的16种关系部分prompt如下SQuADQA数据集论文选取了305条上下文无关且回答为单字的问题。prompt模板通过人工把问题改造成MLM语句得到举个例子The Normans combine with the [MASK] culture in IrelandIsaac’s chains made out of [MASK].因为LAMA只检测实体三元组关系所以除Squad外的prompt模板可以抽象为’[X] relation [Y]的完形填空形式, 但是prompt构建本身还是依赖人工完整的LAMA数据集详见github~这类Hand Crafted Prompt的构建主要有2个问题一个是全靠人工另一个在论文中也有提到就是不同的prompt对结果有较大影响那如何找到最优的构建方案是个需要解决的问题在Answer模板上LAMA限定了答案只能是token这和它选择的预训练模型是BERT有关所以Answer的解析没啥好说的就判断预测token是否正确即可。其他探测任务相关的细节这里就不展开感兴趣的盆友可以去看论文~AutoPromptpaper: AutoPrompt Eliciting Knowledge from Language Models2020.10github: https://github.com/ucinlp/autoprompt任务NLUNLI实事抽取关系抽取prompt: Discrete Gradient Search PromptAutoPrompt是在LAMA上的改进针对LAMA需要人工构造Prompt的问题提出了一种基于梯度自动生成提示词的方案。论文针对分类任务作者设计了通用的prompt模板如下在原始文本输入的基础上拼接多个触发词[T]最后一个MASK token为模型预测[P]。下面分别针对Prompt和Answer Engineering来说下细节Gradient-Based Prompt SearchLAMA的一个核心问题就是人工构造Prompt的成本和效果的不确定性AutoPrompt借鉴了文本对抗AdvTrigger的梯度搜索方案给定样本和模型可以自动搜索任务相关触发词。AdvTrigger旨在找到和输入以及模型无关的通用Trigger把这个Trigger拼接在输入文本的开头或者结尾可以使得模型得到特定的结果可以是增加模型的误判率使得模型输出有种族歧视的文本或者让模型输出相同的错误结果等等。以下是AdvTrigger中给出的例子(注意以下案例只显示模型结果)AutoPrompt使用了相同的Trigger搜索方式首先把触发词用[MASK]初始化然后逐步迭代来最大化以下似然函数即加入触发词后MASK预测为正确标签的概率最大化p(y|x_{prompt}) \sum_wp([MASK]w|xprompt)每一步迭代通过用以下一阶泰勒展开来近似把触发词改成 j 后似然函数的变化梯度 * 词向量得到最大化似然函数的 top-K 个触发词。然后把触发词拼接输入重新计算上述似然函数。以上两步迭代多次得到最终的 Top-K 触发词这里 K 作为超参可以有 {3, 6} 个。Vcandtopkw∈V[wTin▽logp(y|xprompt)]所以AutoPrompt虽然省去了人工构建prompt但是需要下游标注任务样本来搜索触发词一定程度上不算是tuning-free范式更像是Fixed-LM Prompt-Tuning除非搜索得到的触发词能直接迁移到相同任务其他领域数据中不过这部分论文中并未评测。Auto Label Token SelectionAutoPrompt除了评估事实抽取任务还加入了对分类任务的评估所以需要对Answer部分进行额外处理把模型预测的token映射到分类标签。这里主要是多token到单label的映射例如哪些单词代表情感正向哪些是负向。依旧是基于下游人物样本的有监督方案top-k标签词的选择需要两步第一步是label表征作者使用了模型对[MASK]的模型输出作为x真实标签作为Y训练了一个logit classifier这时模型权重(hidden_size * label_size )其实就是标签的空间表征h Transformer([MASK])p(y|h) ∝ exp(h ⊙ y β)(1)(2)第二步是 token 打分作者把 [MASK] 替换为其他候选 tokenp(y|h_token) 概率值越高意味着 token 的输出向量和标签向量相似度越高因此选择概率值最高的 K 个 token 来作为标签的答案词。最后我们看下 AutoPrompt 搜索得到的触发词和答案长啥样可以说是完全出乎意料毫无逻辑可言触发词和答案候选词都很离谱哈哈哈。至于效果 AutoPrompt 超越 LAMA 嘛本身 AutoPrompt 就是使用下游任务样本搜索的 Prompt 和 label不好才奇怪不是~~~更多论文详见 DecryptPrompt。Reference苏神的必须要 GPT-3 吗不BERT 的 MLM 模型也能小样本学习MQPN: The Natural Language Decathlon: Multitask Learning as Question AnsweringMT-DNN: Multi-Task Deep Neural Networks for Natural Language UnderstandingWhy can GPT learn in-context? Language Model Secretly Perform Gradient Descent as Meta-OptimizersHow does in-context learning work? A framework for understanding the differences from traditional supervised learningRethinking the Role of Demonstrations: What Makes In-Context Learning Work?Universal Adversarial Triggers for Attacking and Analyzing NLPIn-Context-Learning_PaperListEmerging Ability of Large Language Models