当前位置: 首页 > news >正文

蒙牛网站建设计算机多媒体辅助教学网站开发

蒙牛网站建设,计算机多媒体辅助教学网站开发,wordpress新手教程,如何建设网页制作的网站1 预训练语言模型概述 1.1 预训练语言模型的发展历程 截止23年3月底#xff0c;语言模型发展走过了三个阶段#xff1a; 第一阶段 #xff1a;设计一系列的自监督训练目标#xff08;MLM、NSP等#xff09;#xff0c;设计新颖的模型架构#xff08;Transformer#…1 预训练语言模型概述 1.1 预训练语言模型的发展历程 截止23年3月底语言模型发展走过了三个阶段 第一阶段 设计一系列的自监督训练目标MLM、NSP等设计新颖的模型架构Transformer遵循Pre-training和Fine-tuning范式。典型代表是BERT、GPT、XLNet等第二阶段 逐步扩大模型参数和训练语料规模探索不同类型的架构。典型代表是BART、T5、GPT-3等第三阶段 走向AIGCArtificial Intelligent Generated Content时代模型参数规模步入千万亿模型架构为自回归架构大模型走向对话式、生成式、多模态时代更加注重与人类交互进行对齐实现可靠、安全、无毒的模型。典型代表是InstructionGPT、ChatGPT、Bard、GPT-4等。 1.2 面向预训练语言模型的Prompt-Tuning技术发展历程 Prompt-Tuning自从GPT-3被提出以来从传统的离散、连续的Prompt的构建、走向面向超大规模模型的In-Context Learning、Instruction-tuning和Chain-of-Thought。 自从GPT、EMLO、BERT的相继提出以Pre-training Fine-tuning 的模式在诸多自然语言处理NLP任务中被广泛使用其先在Pre-training阶段通过一个模型在大规模无监督语料上预先训练一个 预训练语言模型Pre-trained Language ModelPLM 然后在Fine-tuning阶段基于训练好的语言模型在具体的下游任务上再次进行 微调Fine-tuning 以获得适应下游任务的模型。 这种模式在诸多任务的表现上超越了传统的监督学习方法不论在工业生产、科研创新还是竞赛中均作为新的主流方式。然而这套模式也存在着一些问题。例如在大多数的下游任务微调时 下游任务的目标与预训练的目标差距过大 导致提升效果不明显 微调过程中依赖大量的监督语料 等。 至此以GPT-3、PET为首提出一种基于预训练语言模型的新的微调范式——Prompt-Tuning 其旨在通过添加模板的方法来避免引入额外的参数从而让语言模型可以在小样本Few-shot或零样本Zero-shot场景下达到理想的效果。Prompt-Tuning又可以称为Prompt、Prompting、Prompt-based Fine-tuning等。 因此简单的来说Prompt-Tuning的动机旨在解决目前传统Fine-tuning的两个痛点问题 降低语义差异Bridge the gap between Pre-training and Fine-tuning 预训练任务主要以Masked Language ModelingMLM为主而下游任务则重新引入新的训练参数因此两个阶段的目标通常有较大差异。因此需要解决如何缩小Pre-training和Fine-tuning两个阶段目标差距过大的问题避免过拟合Overfitting of the head 由于在Fine-tuning阶段需要新引入额外的参数以适配相应的任务需要因此在样本数量有限的情况容易发生过拟合降低了模型的泛化能力。因此需要面对预训练语言模型的过拟合问题。 2 预训练语言模型 预训练语言模型想必大家已经不再陌生以GPT、ELMO和BERT为首的预训练语言模型在近两年内大放异彩。预训练语言模型主要分为单向和双向两种类型 单向 以GPT为首强调 从左向右 的编码顺序适用于Encoder-Decoder模式的自回归Auto-regressive模型双向 以ELMO为首强调从左向右和从右向左 双向编码 但ELMO的主体是LSTM由于其是串形地进行编码导致其运行速度较慢因此最近BERT则以Transformer为主体结构作为双向语言模型的基准。 现如今常用的语言模型大多数是BERT及其变体它的主体结构Transformer模型是由谷歌机器翻译团队在17年末提出的是一种完全利用attention机制构建的端到端模型具体算法详解可详情【预训练语言模型】Attention Is All You NeedTransformer。 之所以选择Transformer是因为 其完全以Attention作为计算推理技术 任意的两个token均可以两两交互使得推理完全可以由矩阵乘机来替代实现了 可并行化计算 因此Transformer也可以认为是一个全连接图 缓解了序列数据普遍存在的长距离依赖和梯度消失等缺陷 。 在NLP领域中Attention机制的目标是对具有强相关的token之间提高模型的关注度。例如在文本分类中部分词对分类产生的贡献更大则会分配较大的权重。 对句子的编码主要目标是为了让模型记住token的语义。传统的LSTM则只能通过长短期记忆的方法来捕捉token之间的关系容易导致梯度消失或记忆模糊问题而Transformer中任意的token之间都有显式的连接避免了长距离依赖性问题。当然Transformer也增加了position embedding以区分不同token的位置关系 2.1 经典的Pre-trained任务 本文的目标是介绍Prompt-Tuning的方法而Prompt-Tuning的动机则是进一步拉近微调与预训练阶段的任务目标因此本部分则以常用的BERT为主简单介绍Pre-training的经典方法更加详细的解读可参考【预训练语言模型】BERT: Pre-training of Deep Bidirectional Transformers for Language UnderstandingBERT。 2.1.1 Masked Language ModelingMLM 传统的语言模型是以word2vec、GloVe为代表的词向量模型他们主要是以词袋N-Gram为基础。例如在word2vec的CBOW方法中随机选取一个固定长度的词袋区间然后挖掉中心部分的词后让模型一个简单的深度神经网络预测该位置的词如下图所示 Masked Language ModelingMLM则采用了N-Gram的方法不同的是N-Gram喂入的是被截断的短文本而MLM则是完整的文本因此MLM更能够保留原始的语义 MLM是一种自监督的训练方法其先从大规模的无监督语料上通过固定的替换策略获得自监督语料设计预训练的目标来训练模型具体的可以描述为 替换策略在所有语料中随机抽取15%的文本。被选中的文本中则有80%的文本中随机挑选一个token并替换为 [mask]10%的文本中则随机挑选一个token替换为其他token10%的文本中保持不变。训练目标当模型遇见 [mask] token时则根据学习得到的上下文语义去预测该位置可能的词因此训练的目标是对整个词表上的分类任务可以使用交叉信息熵作为目标函数。 因此以BERT为例首先喂入一个文本It is very cold today, we need to wear more clothes. 然后随机mask掉一个token并结合一些特殊标记得到[cls] It is very cold today, we need to [mask] more clothes. [sep] 喂入到多层的Transformer结构中则可以得到最后一层每个token的隐状态向量。MLM则通过在[mask]头部添加一个MLP映射到词表上得到所有词预测的概率分布。 现如今有诸多针对MLM的改进版本我们挑选两个经典的改进进行介绍 Whole Word MaskingWWM 来源于RoBERTa等其认为BERT经过分词后得到的是word piece而BERT的MLM则是基于word piece进行随机替换操作的即Single-token Masking因此被mask的token语义并不完整。而WWM则表示被mask的必须是一个完整的单词。Entity Mention ReplacementEMR 来源于ERNIE-BAIDU等其通常是在知识增强的预训练场景中即给定已知的知识库实体对文本中的整个实体进行mask而不是单一的token或字符。 下面给出对比样例。以文本“Michael Jackson is one of the best-selling music artists of all time, with estimated sales of over 400 million records worldwide”为例 2.1.2 Next Sentence PredictionNSP 在BERT原文中还添加了NSP任务其主要目标是给定两个句子来判断他们之间的关系属于一种自然语言推理NLI任务。在NSP中则存在三种关系分别是 entailmentisNext存在蕴含关系NSP中则认为紧相邻的两个句子属于entailment即isNext关系contradictionisNotNext矛盾关系NSP中则认为这两个句子不存在前后关系例如两个句子来自于不同的文章Neutral中性关系NSP中认为当前的两个句子可能来自于同一篇文章但是不属于isNext关系的 而显然构建NSP语料也可以通过自监督的方法获得首先给定一个大规模无监督语料按照文章进行分类。在同一篇文章里随机挑选一个句子作为premise因此entailment类对应的则是其下一个句子另外再随机挑选同一篇文章中的其他句子作为Neutral类其他文章中的句子作为contradiction类。 在BERT中NSP任务则视为sentence-pair任务例如输入两个句子S1It is very cold today. 和 S2We need to wear more clothes.通过拼接特殊字符后得到[cls] It is very cold today. [sep] We need to wear more clothes. [sep]然后喂入到多层Transformer中可以得到[cls]token的隐状态向量同样通过MLP映射到一个3分类上获得各个类的概率分布 在以ALBETR、RoBERTa等系列的模型由于发现NSP对实验的效果并没有太多正向影响因此均删除了NSP的任务在后续的预训练语言模型中也纷纷提出其他的预训练目标本文不再过多赘述。在后续的Prompt-Tuning技术中大多数则以MLM作为切入点。 2.2 Task-specific Fine-tuning 获得了预训练的语言模型后在面对具体的下游任务时则需要进行微调。通常微调的任务目标取决于下游任务的性质。我们简单列举了几种NLP有关的下游任务 Single-text Classification单句分类 常见的单句分类任务有短文本分类、长文本分类、意图识别、情感分析、关系抽取等。给定一个文本喂入多层Transformer模型中获得最后一层的隐状态向量后再输入到新添加的分类器MLP中进行分类。在Fine-tuning阶段则通过交叉信息熵损失函数训练分类器 短/长文本分类直接对句子进行归类例如新闻归类、主题分类、场景识别等 意图识别根据给定的问句判断其意图常用于检索式问答、多轮对话、知识图谱问答等 情感分析对评论类型的文本进行情感取向分类或打分 关系抽取给定两个实体及对应的一个描述类句子判断这两个实体的关系类型 Sentence-pair Classification句子匹配/成对分类 常见的匹配类型任务有语义推理、语义蕴含、文本匹配与检索等。给定两个文本用于判断其是否存在匹配关系。此时将两个文本拼接后喂入模型中训练策略则与Single-text Classification一样 语义推理/蕴含判断两个句子是否存在推理关系例如entailment、contradictionneutral三种推理关系 文本匹配与检索输入一个文本并从数据库中检索与之高相似度匹配的其他句子 Span Text Prediction区间预测 常见的任务类型有抽取式阅读理解、实体抽取、抽取式摘要等。给定一个passage和query根据query寻找passage中可靠的字序列作为预测答案。通常该类任务需要模型预测区间的起始位置因此在Transformer头部添加两个分类器以预测两个位置。 抽取式阅读理解给定query和passage寻找passage中的一个文本区间作为答案 实体抽取对一段文本中寻找所有可能的实体 抽取式摘要给定一个长文本段落寻找一个或多个区间作为该段落的摘要 Single-token Classification字符分类 此类涵盖序列标注、完形填空、拼写检测等任务。获得给定文本的隐状态向量后喂入MLP中获得每个token对应的预测结果并采用交叉熵进行训练。 序列标注对给定的文本每个token进行标注通常有词性标注、槽位填充、句法分析、实体识别等 完形填空与MLM一致预测给定文本中空位处可能的词 拼写检测对给定的文本中寻找在语法或语义上的错误拼写并进行纠正 Text Generation文本生成 文本生成任务常用于生成式摘要、机器翻译、问答等。通常选择单向的预训练语言模型实现文本的自回归生成当然也有部分研究探索非自回归的双向Transformer进行文本生成任务。BART等模型则结合单向和双向实现生成任务。 生成式摘要在文本摘要中通过生成方法获得摘要 机器翻译给定原始语言的文本来生成目标语言的翻译句子 问答给定query直接生成答案 相关的任务类型、常见的Benchmark以及形式化定义如下图所示 这几类任务基本可以涵盖现有的自然语言处理场景中而这五类任务在Fine-tuning阶段几乎都涉及 在模型头部引入新参数 的情况且都存在 小样本场景过拟合 的问题因此Prompt-Tuning的引入非常关键。 3 Prompt-Tuning的定义 那么什么是Prompt呢在了解预训练语言模型的基础以及预训练语言模型在Pre-training和Fine-tuning之后我们已经可以预想到 Prompt的目的是将Fine-tuning的下游任务目标转换为Pre-training的任务 。那么具体如何工作呢 我们依然以二分类的情感分析作为例子描述Prompt-tuning的工作原理。给定一个句子[CLS] I like the Disney films very much. [SEP] 传统的Fine-tuning方法是将其通过BERT的Transformer获得 [CLS]表征之后再喂入新增加的MLP分类器进行二分类预测该句子是积极的positive还是消极的negative因此需要一定量的训练数据来训练。 而Prompt-Tuning则执行如下步骤 构建模板Template Construction 通过人工定义、自动搜索、文本生成等方法生成与给定句子相关的一个含有[MASK]标记的模板。例如It was [MASK].并拼接到原始的文本中获得Prompt-Tuning的输入[CLS] I like the Disney films very much. [SEP] It was [MASK]. [SEP]。将其喂入BERT模型中并复用预训练好的MLM分类器在huggingface中为BertForMaskedLM即可直接得到[MASK]预测的各个token的概率分布标签词映射Label Word Verbalizer 因为[MASK]部分我们只对部分词感兴趣因此需要建立一个映射关系。例如如果[MASK]预测的词是“great”则认为是positive类如果是“terrible”则认为是negative类。 此时会有读者思考不同的句子应该有不同的template和label word没错因为每个句子可能期望预测出来的label word都不同因此如何最大化的寻找当前任务更加合适的template和label word是Prompt-tuning非常重要的挑战。 训练 根据Verbalizer则可以获得指定label word的预测概率分布并采用交叉信息熵进行训练。此时因为只对预训练好的MLM head进行微调所以避免了过拟合问题 在hugging face上也可以直接进行测试 I like the Disney films very much. I dislike the Disney films very much. 其实我们可以理解引入的模板和标签词本质上也属于一种数据增强通过添加提示的方式引入先验知识。 4 Prompt-Tuning的研究进展 那么Prompt-Tuning具体如何实现其有什么挑战和困难呢本节将详细描述Prompt-Tuning在学术上的发展历程。由于Prompt-Tuning发展很迅猛因此很难保证完全涵盖所有论文和学术报告因此我们挑选一些具有代表性的工作进行介绍。 4.1 Prompt-Tuning的鼻祖——GPT-3与PET Prompt-Tuning起源于GPT-3的提出《Language Models are Few-Shot Learners》NIPS2020其认为超大规模的模型只要配合好合适的模板就可以极大化地发挥其推理和理解能力。 其开创性提出 in-context learning 概念即无须修改模型即可实现few-shot/zero-shot learning。同时引入了demonstrate learning即让模型知道与标签相似的语义描述提升推理能力。 In-context Learning 是Prompt的前身。其通过从训练集中挑选一些样本作为任务的提示提示Natural Language Prompt来实现免参数更新的模型预测Demonstration Learning 添加一些新的文本作为提示。例如在对“I like the Disney film. It was [MASK]”进行情感分析时可以拼接一些相似场景的ground-truth文本“I like the book, it was great.”、“The music is boring. It is terrible for me.”等。此时模型在根据新添加的两个样例句子就可以“照葫芦画瓢”式地预测结果了。 不过以GPT-3为首的这类方法有一个明显的缺陷是—— 其建立在超大规模的预训练语言模型上 此时的模型参数数量通常超过100亿 在真实场景中很难应用 因此众多研究者开始探索GPT-3的这套思路在小规模的语言模型BERT上还是否适用事实上这套方法在小规模的语言模型上是可行的但是需要注意几点 模型参数规模小了Prompt直接用在Zero-shot上效果会下降因此需要考虑将in-context learning和demonstrate learning应用在Fine-tuning阶段GPT-3中提供的提示Natural Language Prompt过于简单并不难使用在一些具体的任务场景因此需要单独设计一套组件实现。 因此大名鼎鼎的PET模型问世PETPattern-Exploiting Training出自《Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference》EACL2021根据论文题目则可以猜出Prompt-Tuning启发于文本分类任务并且试图将所有的分类任务转换为与MLM一致的完形填空。 PET详细地设计了Prompt-Tuning的重要组件——Pattern-Verbalizer-PairPVP并描述了Prompt-tuning如何实现Few-shot/Zero-shot Learning如何应用在全监督和半监督场景iPET。PET的详细讲解可参考PET的论文解读 PET设计了两个很重要的组件 PatternTemplate 记作 即上文提到的Template其为额外添加的带有[mask]标记的短文本通常一个样本只有一个Pattern因为我们希望只有1个让模型预测的[mask]标记。上文也提到不同的任务、不同的样本可能会有其更加合适的pattern因此 如何构建合适的pattern是Prompt-Tuning的研究点之一 Verbalizer 记作 即标签词的映射对于具体的分类任务需要选择指定的标签词label word。例如情感分析中我们期望Verbalizer可能是 positive和negative是类标签。同样不同的任务有其相应的label word但需要注意的是Verbalizer的构建需要取决于对应的Pattern。因此 如何构建Verbalizer是另一个研究挑战 。 上述两个组件被称为Pattern-Verbalizer-PairPVP一般记作 在后续的大多数研究中均采用这种PVP组件。 因此基于PVP的训练目标可以形式化描述 给定一个句子 以及对应的标签 给定定义的PVP组件 则有 那么会有读者一直会思考一般情况下一个句子只能有一个PVP因为我们只需要一个[mask]用来预测这可能并不是最优的是否可以为一个句子设计多个不同的PVP呢这是可以的这属于Prompt-Tuning的集成。PET提供了简单的集成思路 Patterns Ensembling 同一个句子设计多个不同的pattern例如It was [mask].I think it is [mask].This comment denotes as [mask]. 等此时原先只有一个句子却可以生成多个不同的样本也变相起到数据增强的作用。在训练时可以当作单独的样本进行训练推理时则可以对所有Pattern的结果进行投票或加权。如下图所示 Verbalizers Ensembling 同样在给定的某个Pattern下并非只有1个词可以作为label word。例如positive类则可以选择“great”、“nice”、“wonderful”。当模型预测出这三个词时均可以判定为positive类。在训练和推理时可以对所有label word的预测概率进行加权或投票处理并最后获得概率最大的类。如下图所示 PVPs EnsemblingPrompt Ensembling Pattern和Verbalizer均进行集成此时同一个句子有多个Pattern每个Pattern又对应多个label word。如下图所示以2个PVP集成为例在训练时可以采用加权在推理时可以采用加权或投票法 PET还提供了半监督的学习方法——iterative PETiPET如下图所示 iPET旨在先从预训练模型开始初始化多个不同的模型图中1步骤在有标注的少量样本上进行Prompt-Tuning然后通过多个不同的PVP训练得到多个不同的模型图中a步骤每个模型在无标注数据上进行推理打标并根据置信度筛选图中b步骤根据新标注的数据与原始标注数据融合后再重新进行Prompt-Tuning图中c步骤重复abc三个步骤多次后获得每个模型后在测试时进行集成投票图中2、3步骤。 因此可以说PET提供Prompt-Tuning比较成熟的框架——PVP基于这套框架目前的研究开始关注 如何选择或构建合适的Pattern和Verbalizer 。一种简单的方法是根据特定任务的性质和先验知识人工设计模板。例如上文例子中通常会选择It was [mask]. 作为情感分析类的模板。人工构建方法虽然直观简单但是致命问题也很突出。有相关工作在实验中发现在同样的数据集和训练条件下 选择不同的Pattern和Verbalizer会产生差异很大的结果 如下图所示一般情况下Template等同于PatternVerbalizer等同于Label word 可发现在相同Pattern时选择不同的label word对结果影响很大同理不同的Pattern对结果影响也很明显在真正应用中调参者需要尝试多个不同的模板和标签词以穷举出最好的结果并不能充分发挥Prompt简单快捷的优势。因此我们总结人工设计方法的缺陷 采用人工构建的方法成本高需要与领域任务相关的先验知识人工设计的Pattern和Verbalizer不能保证获得最优解训练不稳定不同的PVP对结果产生的差异明显方差大在预训练阶段MLM任务并非完全按照PVP的模式进行训练的比如MLM训练通常都是长文本mask的数量也并非只有1个预测的概率分布也并非是有限的因此人工构建的Pattern和Verbalizer使得Prompt-Tuning与MLM在语义和分布上依然存在差异。 因此如何能够自动地挑选合适的PVP 4.2 如何挑选合适的Pattern 自2020年底至今学术界已经涌现出一批基于Prompt-Tuning的方案试图探索如何自动构建PVP。本节主要总结几种成熟的PatternTemplate构建方法。可以罗列为如下几点 人工构建Manual Template 在前文已经描述过不再详细说明启发式法Heuristic-based Template 通过规则、启发式搜索等方法构建合适的模板生成Generation 根据给定的任务训练数据通常是小样本场景生成出合适的模板词向量微调Word Embedding 显式地定义离散字符的模板但在训练时这些模板字符的词向量参与梯度下降初始定义的离散字符用于作为向量的初始化伪标记Pseudo Token 不显式地定义离散的模板而是将模板作为可训练的参数 前面3种也被称为 离散的模板构建 法记作 Hard Template 、 Hard Prompt 、 Discrete Template 、 Discrete Prompt 其旨在直接与原始文本拼接显式离散的字符且在训练中 始终保持不变 。这里的保持不变是指 这些离散字符的词向量Word Embedding在训练过程中保持固定 。通常情况下 离散法不需要引入任何参数 。 后面2种则被称为 连续的模板构建 法记作 Soft Template 、 Soft Prompt 、 Continuous Template 、 Continuous Prompt 其旨在让模型在训练过程中根据具体的上下文语义和任务目标对模板参数进行连续可调。这套方案的动机则是认为离散不变的模板无法参与模型的训练环节容易陷入局部最优而如果将模板变为可训练的参数那么不同的样本都可以在连续的向量空间中寻找合适的伪标记同时也增加模型的泛化能力。因此 连续法需要引入少量的参数并让模型在训练时进行参数更新 。 下面简单介绍几个经典的方法 4.2.1 启发式法构建模板 启发式法一般是采用规则、正则化模板的方法自动构建出相应的Pattern或者直接通过启发式搜索的方法获得Pattern。这一类方法在程序设计时只需要编写规则和少量的模板即可快速的获得Pattern。 给定一个具体的任务例如分类任务可以实现定义若干个模板例如正则化工具然后根据具体的句子内容向模板中填充相关实体以贴合句子实际的描述。例如清华大学刘知远团队提出的 PTR PTR: Prompt Tuning with Rules for Text Classification利用启发式的规则定义若干子模板sub-prompt并通过若干子模板的组合来形成最终的Pattern。 例如在关系抽取任务中通常给定一个短文本两个实体记作subject和object假如给定句子“Mark Twain was the father of Langdon. ”以及两个实体“Mark Twain”和“Landon”。那么可以定义3个子模板 头实体subject entity the [mask] 对应于“the [mask] Mark Twain”可用于预测头实体的类型尾实体object entity the [mask] 对应于“the [mask] Landon”可用于尾实体的类型实体关系relation 对应于“Mark Twain [mask] Landon”可用于头尾实体关系 基于上述定义的3个规则则可以结合起来形成最终模板即 即“the [mask] Mark Twain [mask] the [mask] Landon”。如图所示 因此不论给定哪个句子模板不会完全固定不变而是根据不同的实体而相应改变模板的字符序列。 相比之下 AutoPrompt 则是另一种典型的方法其由加州大学提出《AutoPrompt: Eliciting Knowledge from Language Models with Automatically Generated PromptsEMNLP2021如下图所示给定原始的输入额外定义若干离散的字符作为trigger并组成Template喂入MLM中预测对应label word的概率。而这些trigger最终通过梯度搜索的方法进行挑选。 4.2.2 生成法构建模板 基于规则的方法构建的模板虽然简单但是这些模板都是“ 一个模子刻出来的 ”在语义上其实挺难做到与句子贴合。因此一种策略就是 直接让模型来生成合适的模板 因为文本生成本质上就是去理解原始文本的语义并获得在语义上较为相关的文本。这样不论给定什么句子我们可以得到在语义层面上更加贴合的模板。 陈丹琦团队提出 LM-BFF 则作为该类方法的典范其出自于《Making Pre-trained Language Models Better Few-shot Learners》ACL2021。LM-BFF提出了基于生成的方法来构建Pattern而给定相应的Pattern之后再通过搜索的方法得到相应的Verbalizer。如下图所示 首先定义一个Template的母版有点类似于PTR中的含有占位符的子模板将这些母版与原始文本拼接后喂入T5模型T5模型属于自回归式的生成模型后在X和Y占位符部分生成相应的字符最终形成对应的Template。然后再基于生成的Template和label word进行训练。 通过多个任务的小样本场景测试分类任务每个类只有16个样本整体观察可发现这种基于生成的方法明显比人工构建的效果更好如图所示 LM-BFF的详细内容请参考博主的论文解读论文解读Making Pre-trained Language Models Better Few-shot LearnersLM-BFF。 4.2.3 连续提示模板 不论是启发式方法还是通过生成的方法都需要为每一个任务单独设计对应的模板因为这些模板都是可读的离散的token这类模板我们称作Discrete Prompt或Hard Prompt。这导致很难寻找到最佳的模板。 另外即便是同一个任务不同的句子也会有其所谓最佳的模板而且有时候即便是人类理解的相似的模板也会对模型预测结果产生很大差异。例如下图以SNLI推断任务为例仅仅只是修改了模板测试结果差异很明显因此离散的模板存在方差大、不稳定等问题。 如何避免这种问题呢一种新的 “连续提示” 被提出称作Continuous Prompt或Soft Prompt其将模板转换为可以进行优化的连续向量换句话说我们不需要显式地指定这些模板中各个token具体是什么而只需要在语义空间中表示一个向量即可。 这样不同的任务、数据可以自适应地在语义空间中寻找若干合适的向量来代表模板中的每一个词相较于显式的token这类token称为 伪标记Pseudo Token 。下面给出基于连续提示的模板定义 假设针对分类任务给定一个输入句子 连续提示的模板可以定义为其中 则是伪标记其仅代表一个抽象的token并没有实际的含义本质上是一个向量。 基于连续提示的Prompt-Tuning的实现方法以下列三篇论文为代表分别作简要介绍 《The Power of Scale for Parameter-Efficient Prompt Tuning》代表方法为Prompt Tuning《GPT Understands, Too》代表方法为P-tuning《PPT: Pre-trained Prompt Tuning for Few-shot Learning》代表方法PPT Prompt Tuning 该方法率先提出了伪标记和连续提示的概念以让模型在能过动态地对模板在语义空间内进行调整使得模板是可约的differentiate。形式化的描述如下 给定 个tokens记作 一个预训练模型对应的embedding table通过这个table可以将每个token表示为一个embedding其中 是向量的维度其与预训练模型的配置有关例如BERT-base是768。连续模板中的每个伪标记 可以视为参数也可以视为一个token因此可以通过一个embedding table获得每个伪标记的向量 然后喂入一个MLP获得新的表征。最后对于预训练模型的输入则是同时包含 和 。 每个伪标记的初始化可以有下列几种情况 最简单的是随机初始化即随机初始化一个面向所有伪标记的embedding table可采用正态分布或者均匀分布等每个token使用预训练模型已有的embedding table进行初始化此时每一个伪标记先随机指定词表中的一个词并取对应词的embedding作为这个伪标记的初始化在分类任务上使用label wordverbalizer对应的embedding作为初始化可以有效限制模型输出的是预设的输出类对应的word。 因此在训练过程中每个伪标记以及对应的MLP参数都可以得到训练对于不同的输入句子 这些伪标记对应的embedding也各不相同达到了预期的目的。 P-tuning P-tuning的详细内容请参考博主的论文解读论文解读GPT Understands, Too。 P-tuning是另一个具有代表性的连续提示方法方法图如下所示图中的 等价于上文的 表示伪标记。 其在Prompt Tuning方法上主要做出三个改进 考虑到这些伪标记的相互依赖关系 认为 与 是有先后关系的而transformer无法显式地刻画这层关系因此引入Prompt Encoder实际过程中采用一层RNN指定上下文词 如果模板全部是伪标记在训练时无法很好地控制这些模板朝着与对应句子相似的语义上优化因此选定部分具有与当前句子语义代表性的一些词作为一些伪标记的初始化例如上图中“capital”、“Britain”等重参数Reparameterization 具体到代码实现上P-tuning先通过一个Prompt Encoder表征这些伪标记后直接将这些新的表征覆盖到对应的embedding table上换句话说Prompt Encoder只在训练时候会使用到而在推理阶段则不再使用。混合提示Hydride Prompt 将连续提示与离散token进行混合例如 PPTPre-trained Prompt Tuning Prompt-Tuning通常适用于低资源场景但是由于连续的模板是随机初始化的即其存在新的参数少量样本可能依然很难确保这些模板被很好地优化。因此简单的方法就是对这些连续的模板进行预训练。PPT旨在通过先让这些连续提示在大量无标注的预训练语料进行预训练然后将其加载到对应下游任务的PLM上进行训练如下图所示图中的 即连续的提示模板$$ 并表示为mask token 首先在大量无标注语料上进行预训练获得训练好的连续提示对下游任务是非问答、NLI、文本匹配等加载这些训练好的提示之后进行微调或者直接进行zero-shot预测。 下图对几种template优化进行的对比。 4.2.4 Template优化进阶 我们为任务设计的模板都是建立在一个假设上即模板都是尽可能是可读的即满足人类语言的语法形态。然而最近也有工作认为最优的模板可能是不符合语法的乱语 (Ungrammatical Gibberish Text)即人类可读的模板模型也许不可读。虽然这很反直觉但是我们不能否认这种情况的存在。论文《RLPROMPT: Optimizing Discrete Text Prompts with Reinforcement Learning》给出了相应的发现并提出了一种基于强化学习的方法RLPROMPT来寻找最优的模板。 上图为RLPROMPT框架左侧为策略网络右侧分别为双向预训练模型Masked LM和生成式预训练模型Left-to-Right LM分别对应于分类任务和生成任务。RLPROMPT的原理如下 Step1 给定一个句子例如“I have ...”一个 [mask] token以及一个用于待生成的模板占位符 [Prompt]。 Step2 如果是分类任务则将输入句子喂入一个双向语言模型中获得 [mask] 位置的预测token并通过verbalizer映射到对应类别的概率分布如果是在训练阶段真实标签是已知的其概率可以作为当前模板的反馈reward。如果是生成任务则喂入生成模型中获得生成token的预测概率或者其他文本生成的指标并作为反馈。 Step3 根据当前的反馈使用强化学习的policy gradient方法训练一个决策函数。基于这个决策函数可以对[Prompt]生成一个离散的模板词。决策函数本质上是一个预训练语言模型通过LM head来生成一个token。 Step4 生成一个模板词之后重复Step2Step3直到生成足够的模板词。 基于RLPROMPT最终可以得到一些离散的模板相比连续的提示更加有解释性。取几个常用的评测任务对比不同方法生成的模板的区别 4.3 如何挑选合适的Verbalizer 除了Template以外Verbalizer是直接关系到预测的结果是什么不同的Verbalizer会对最终预测效果产生较大的影响不同的任务会有不同的合适的label word。例如在电影评论任务中positive类别的label word比较合适的是wonderful而在美食点评任务中positive比较合适的是testy。因此label word的选择也是Prompt-Tuning中关键的部分。如下图所示以SST-2为例相同的模板条件下不同的label word对应的指标差异很大。 传统的方法是人工设计Manual Design即可以根据对每个任务的经验来人工指定这些label word。但是人工设计需要依赖大量的人力且对于一些具有专业性的任务还需要依赖于专家使得Prompt-Tuning的效率很低。 为了缓解这个问题一些工作开始研究如何根据不同的任务自动地选择合适的label word。受到Template的离散和连续两种类型优化的启示Verbalizer也可以分为离散和连续两种类型。本文分别介绍两个具有代表性的工作 领域知识指导搜索离散的label word《Knowledgeable Prompt-tuning: Incorporating Knowledge into Prompt Verbalizer for Text Classification》代表方法为KPT原型网络动态生成label representations《Prototypical Verbalizer for Prompt-based Few-shot Tuning》代表方法为ProtoVerb。 KPTKnowledgeable Prompt Tuning KPT的详细内容请参考博主的论文解读论文解读Knowledgeable Prompt-tuning: Incorporation Knowledge into Prompt Verbalizer for Text Classification。 针对不同的任务都有其相应的领域知识为了避免人工选择label word该方法提出基于知识图谱增强的方法如下图所示 具体思路如下 首先通过一些已有的字典工具从词表中获得与给定label相关的词。如何建模这种相关性呢该方法引入知识库依赖于知识库中的三元组来衡量。例如SCIENCE在知识库中是一个实体与该实体存在多挑关系的词可能有science、mathematics等等第一步可以获得大量的词但是也容易引入噪声因此需要进行提炼Refine可以设计一系列的启发式方法来度量每个词与label的相关度最后获得指定数量的若干个合适的label word对于选定的label word采用Verbalizaer集成的方法获得最终的预测结果。 ProtoVerb 回顾在Template的构建中离散的模板是无法在训练过程中被优化的从而引入了连续的模板。同理离散label word也是只能在训练之前被指定而在后续训练中无法被改变。因此为了让label word也可以自适应的变化提出连续的label word。 ProtoVerb巧妙的运用了原型网络Prototypical Network的思路将每个类别的所有样本的表征的期望作为该类的原型向量并使用该原型向量代替连续的label word。 如上图以新闻分类为例首先定义固定的模板“A [mask] news.”并拼接到原始的输入句子上。喂入BERT模型中获得 [mask] 位置的表征向量代表句子向量。在训练过程中的label是已知的所以可以求得同一label对应所有句子向量的均值来表示这个label的表征图中的五角星。 在测试阶段则只需要计算测试句子的表征与各个类别的原型向量的相似度并取最大相似度对应的label作为预测结果。 通过这种连续的label word基本避免了显式获取label word的过程使得模型的训练一气呵成。相似的做法也在《PromptBERT: Improving BERT Sentence Embeddings with Prompts》中被提及。 5 Prompt-Tuning的本质 前面章节介绍了大量与Prompt相关的内容我们可以发现最初的Prompt Tuning是旨在设计Template和Verbalizer即Pattern-Verbalizer Pair来解决基于预训练模型的小样本文本分类然而事实上NLP领域涉及到很多除了分类以外其他大量复杂的任务例如抽取、问答、生成、翻译等。这些任务都有独特的任务特性并不是简单的PVP就可以解决的因而 我们需要提炼出Prompt Tuning的本质将Prompt Tuning升华到一种更加通用的范式上 。 博主根据对Prompt-Tuning两年多的研究经验总结了三个关于Prompt的本质如下 Prompt的本质是一种对任务的指令Prompt的本质是一种对预训练任务的复用Prompt的本质是一种参数有效性学习 5.1 Prompt是一种针对任务的指令 Prompt本质上是对下游任务的指令可以作为一种信息增强 。 简单的来说就是告诉模型需要做什么任务输出什么内容。上文我们提及到的离散或连续的模板本质上就是一种对任务的提示。当数据集不同乃至样本不同的时候我们期望模型能够自适应的选择不同的模板这也相当于说不同的任务会有其对应的提示信息。 例如在对电影评论进行二分类的时候最简单的提示模板是“. It was [mask].”但是其并没有突出该任务的具体特性我们可以为其设计一个能够突出该任务特性的模板例如“The movie review is . It was [mask].”然后根据mask位置的输出结果通过Verbalizer映射到具体的标签上。这一类具备任务特性的模板可以称之为 指令Instruction 。 下面展示几个任务设计的指令模板 看似设计指令是一件容易的事情但是在真实使用过程中预训练模型很难“理解”这些指令根据最近研究工作发现主要总结如下几个原因 预训练模型不够大 我们常使用的BERT-base、BERT-large、RoBERTa-base和RoBERTa-large只有不到10亿参数相比于现如今GPT-3、OPT等只能算作小模型有工作发现小模型在进行Prompt Tuning的时候会比Fine-tuning效果差是因为小模型很容易受到模板的影响 对比一下传统的Fine-tuning每个样本的输入几乎都是不同的然而基于Prompt的方法中所有的样本输入都会包含相同的指令这就导致小模型很容易受到这些指令带来的干扰。 缺乏指令相关的训练 这些小模型在预训练阶段没有专门学习过如何理解一些特殊的指令。 我们回顾一下上面章节不论是生成离散的模板还是连续的模板都是在向现有的预训练语言模型进行“妥协”即找到能够让当前预训练语言模型在小样本上效果最好的模板或者说是站在已有预训练模型的基础上寻找模板。然而这种寻找到的模板不可读也不可解释或者过于通用不具备任务特性无法很好地在真实场景下使用。因此我们需要的是先设计好任务相关的指令使得这些指令是可读的可在真实场景下使用的。不过由于预训练模型没见过这些指令所以很难在小样本上快速理解它们。 也许读者想到了前面所讲到的Pre-trained Prompt TuningPPT即再次对预训练语言模型进行一次Continual Pre-training。然而我们忽略了一点即 我们期望预训练模型不止是在我们已经设计好的指令上进行学习还应该在未知的指令上具备一定的泛化性能 也就是说在一个完全新的任务上只需要少量样本甚至是零样本也能过很好地理解这个指令。 为了达到这个目的最常用的方法是 元学习Meta Learning 我们介绍几个代表性的工作 《TransPrompt: Towards an Automatic Transferable Prompting Framework for Few-shot Text Classification》代表方法TransPrompt利用迁移学习提升预训练语言模型在不同类型任务上的泛化性能《Adapting Language Models for Zero-shot Learning by Meta-tuning on Dataset and Prompt Collections》代表方法MPT统一分类任务范式并采用元学习进行训练 TransPrompt 该方法是面向连续提示模板的其对P-tuning做了如下几个改进 引入Cross-task Learning 原来P-tuning只对单一任务进行Prompt Tuning而TransPrompt则对同一类别多个任务进行Cross-task Learning。例如情感分析有SST-2、MR和CR三个任务则为每一个任务设计一个Task-specific Prompt Encoder。为了捕捉任务之间的共同知识也额外设计以恶搞Universal Prompt Encoder。 在训练过程中所有任务的数据集样本直接混合起来每一个样本都会对应一个任务的标记。在喂入模型时一个batch内会有来自多个任务的样本根据任务类型的标记分别使用对应的Task-specific Prompt Encoder来表征连续的模板所有的样本都喂入Universal Prompt Encoder以获得通用的连续模板。 引入去偏De-basing技术 不论是小样本还是全量数据即便是统计分布上完全一致不同的任务的难易程度是不一样的因此模型在训练的时候可能极易偏向于一些简单任务。为了确保任务之间训练的平衡性引入两个去偏技术分别是Prototypical-based Debiasing和Entropy-based Debiasing具体的做法详见原文。 Meta Prompt TuningMPT 该方法是面向离散的提示其主要关注于文本分类任务但是不同的是其对分类的范式进行了一些转换将所有分类任务定义为“Yes/No”问题下面对比一下两种不同的范式 传统的多类分类范式 假设一个分类任务有 个类别一般情况下一个句子 将会对应一个样本 其中 是 类中的一个 Yes/No分类范式 假设一个分类任务有 个类别将每一个句子和类别作为一个整体来判断它们之间是否匹配即得到一个新的样本 。这样的话一个句子 将会对应 个样本。基于Yes/No范式不论类别有多少都可以转换为统一的Yes/No分类从而不同类别的分类任务也可以混合起来进行训练。 在转换范式的时候会发现输入的句子需要融合标签因此需要涉及到为不同标签设计对应的指令。如下图所示对于情感分析任务输入的句子是“A total waste of time”给定一个标签“Positive”对应的指令则是“Is the review positive?”。整体的输入是 “. Is the review positive? Answer: [mask].”。此时我们只需要约束mask位置的输出是Yes和No即可例如概例子中No的概率最大 由于进行了范式转换不论是情感分析还是问题分类、主题分类所有分类任务都可以“一视同仁”。因此可以采用元学习的方法如上图让模型在四个任务上进行Multi-task Training然后利用元学习技术例如MAML将知识迁移到新的任务上最后在这个新的任务上进行验证。 MPT的优点是可以实现范式统一这对后续基于Prompt的超大规模多任务训练奠定基础但是其缺点也很突出即需要为不同任务不同类别设计对应的指令。 5.2 复用预训练目标——实现基于Prompt的统一范式 我们需要思考上述所讲的内容为什么要设计Template和Verbalizer为什么都要包含mask token 回顾第一节我们介绍的几个预训练语言模型我们发现目前绝大多数的双向预训练语言模型都包含Masked Language ModelingMLM单向预训练语言模型都包含Autoregressive Language ModelingALM这些任务是预训练目标本质上是预测被mask的位置的词在训练时让模型理解语言的上下文信息。之所以设计Template和指令就是希望在下游任务时能够复用这些预训练的目标避免引入新的参数而导致过拟合。因此我们可以将Prompt升华到一个新的高度即 Prompt Tuning的本质是复用预训练语言模型在预训练阶段所使用的目标和参数 。 基于Huggingface的预训练模型仓库中我们一般称之为LMhead本质上就是一个MLP输入为一个大小为[batch_size, sequence_length, hidden_size]的张量输出为[batch_size, sequence_length, vocab_size]的概率分布。 由于绝大多数的语言模型都采用MLM或ALM进行训练所以我们现如今所看到的大多数基于Prompt的分类都要设计Template和Verbalizer。那么我们是否可以极大化地利用MLM和ALM的先验知识在不同的下游任务上获得更好的表现是否可以设计一个全新的预训练任务来满足一些下游任务的需求呢 我们介绍两个充分利用这个思想的方法 万物皆可生成 将所有任务统一为文本生成极大化利用单向语言模型目标万物皆可抽取 将所有任务统一为抽取式阅读理解并设计抽取式预训练目标万物皆可推理 将所有任务建模为自然语言推断Natural Language Inference或相似度匹配任务。 5.2.1 万物皆可生成——基于生成的Prompt范式统一 在含有单向Transformer的语言模型中例如GPT、BART都包含自回归训练目标即基于上一个token来预测当前的token而双向语言模型中的MLM可以视为只生成一个token的自回归模型。 为此我们则可以将分类任务视为一种特殊的文本生成并配上Verbalizer这样所有的NLP任务都可以统一为生成任务。针对不同的任务只需要提供对应的指令和模板即可由于是使用单向语言模型因此没有mask token需要生成的部分置于文本末尾。下面给出几个示例 利用此思想有很多工作致力于通过Prompt与生成的思想将各类任务进行统一。以问答领域为例问答包括生成式问答、抽取式问答、多项选择等我们可以将各种类型的问答建模为生成任务。 典型的方法例如《UNIFIEDQA: Crossing format boundaries with a single QA system》、《ProQA- Structural Prompt-based Pre-training for Unified Question Answering》其采用端到端的预训练语言模型例如BART、T5并复用预训练阶段的训练目标。 最近大火的ChatGPT则是基于“万物皆可生成”的思想将单向语言模型的ALM发挥到极致实现对所有任务的大一统与之为代表的还有In-Context Learning、Instruction-Tuning和Chain-of-Thought将在第5章节介绍。 5.2.1 万物皆可抽取——基于抽取式阅读理解的Prompt范式统一 基于生成的方法存在两个缺点 必须让待生成的部分置于文本末尾此时会约束指令和模板的设计不利于灵活运用由于是开放式生成生成的内容无法控制且依赖于文本的长度等对于一些具有条件限制的任务例如多项选择、信息抽取等生成的内容或许不符合这些条件。例如在做实体抽取的时候需要确保生成的实体是在文本中出现的。 为此“万物皆可抽取”的思想可以解决此类问题其思想指将所有自然语言理解任务转换为抽取式阅读理解的形式下面给出形式化的定义 抽取式阅读理解Extractive MRC 给定一个问题Question 一篇文章或文本Passage 其中 分别表示Question和Passage的token 分别表示Question和Passage的长度。任务的目标是根据Question在Passage中寻找一个区间 作为答案 。 除了抽取式阅读理解任务外其他NLP任务如何转换为这个形式呢本质上还是在如何设计模板和指令。下面给出几个事例 可以发现如果是分类型的任务只需要通过指令和模板的形式将所有类别罗列起来即可。在训练时可以采用两种方法 设计抽取式预训练目标在无标注语料上进行自监督训练按照阅读理解的形式统一所有任务范式并混合所有任务进行Cross-task Learning再在新的任务上进行测试。 经典的方法比如《Unifying Question Answering, Text Classification, and Regression via Span Extraction》苏剑林提出的Global Pointer。博主也运用该思想在2022年AIWIN春季赛“中文保险小样本”中获得第二名成绩。 基于MRC的范式统一方法则是提出新的预训练目标——区间抽取并巧妙的集成了一些比较复杂的任务例如实体识别同时抽取式方法也可以很好地运用在多标签分类问题上同理实体识别和多区间抽取QA也属于类似多标签问题即需要抽取出数量不等的区间。但是缺点是无法运用到生成问题上且依赖于候选项。 5.2.3 万物皆可推理——基于NLI的Prompt范式统一 另外一个方法则是将所有任务建模为NLI形式其与上文介绍的MPT比较类似除了MPT以外《Entailment as Few-Shot Learner》EFL和NSP-BERT也是类似的方法其思想是复用BERT中的Next Sentence PredictionNSP的预训练目标。下面给出几个事例 通常可以直接使用NSP对应的LMhead进行微调在训练过程中还需要考虑如何进行负采样一般方法是直接选择其他类别作为负样本。 例如一个分类问题中有 个类别。给定一个句子有对应 个正确的类别ground truth当 时就是单标签的分类 则是多标签分类。那么每个句子就可以得到 个正样本即输入句子与对应标签是蕴含关系的和 个负样本。在训练的时候则可以构建一个句子-类别矩阵 其中 表示第 个句子与第 个类别是否存在蕴含关系。 下图给出传统Fine-tuning图a、基于MLM的Prompt-Tuning图b和基于NLI的Prompt-Tuning图c的对比 可以发现两种Prompt-Tuning方法的共同点是都是复用了预训练阶段所使用的目标和参数不同点是对任务建模的方式和指令模板的设计有所不同。在复用NSP时则需要罗列所有的类别并与输入样本做拼接从而将多类分类问题转换为判断输入与标签是否存在蕴含关系Entailment。 另外该思想也在最近大火的多模态模型CLIP模型中应用通过设计Prompt的形式对文本和图像进行匹配并设计对比学习目标进行预训练。 5.3 Prompt的本质是参数有效性学习 根据前文的讲解我们可以发现实现Prompt-Tuning只需要考虑如何设计模板或指令而模型和训练目标则都是复用预训练阶段的即在整个训练过程中无须添加任何参数或只需要添加非常少量的与模板有关的参数而其他参数都是训练好的。基于这个思想我们再一次将Prompt升华到更高的层面—— Prompt的本质是参数有效性学习Parameter-Efficient LearningPEL 。 参数有效性学习的背景 在一般的计算资源条件下大规模的模型例如GPT-3很难再进行微调因为所有的参数都需要计算梯度并进行更新消耗时间和空间资源。为了解决这个问题参数有效性学习被提出其旨在确保模型效果不受太大影响的条件下尽可能地提高训练的时间和空间效率。 参数有效性训练 在参数有效性学习过程中大模型中只需要指定或额外添加少量的可训练参数而其余的参数全部冻结这样可以大大提高模型的训练效率的同时确保指标不会受到太大影响。 常见经典的参数有效性学习有Adapter-Tuning、Prefix-Tuning、BitFit。下面进行简单的介绍。 5.3.1 Adapter-Tuning Adapter-Tuning在2019年提出其面向预训练语言模型的参数有效性学习。在多层Transformer模型中在微调过程中所有的参数都需要更新显然并不是有效的。为了提高效率该方法提出固定Transformer的全部参数然后在Transformer的每一个Block里嵌入一些新初始化的Adapter Network。如下图所示 Adapter位于Feed-Forward Layer之后、残差连接之前。Adapter本质上就是两层MLP分别负责将Transformer的表征降维和升维右图。基于Adapter的方法 只需要添加不到5%的可训练参数即可以几乎达到全参数训练的效果 在训练过程中大大节省了训练时间做到时间有效性。因此在真实场景应用时 不同的任务我们不需要重新对整个预训练模型进行微调我们只需要保存Adapter即可 而预训练模型的其他参数都是原始预训练的这样就做到了空间的有效性。 5.3.2 Prefix-Tuning Prefix-Tuning也是很经典的参数有效性学习其是受到Prompt-Tuning的启发。我们说Prompt-Tuning的本质是参数有效性学习是因为整个预训练模型参数可以全部固定只需要对Template对应的少量参数例如连续模板的Prompt Encoder、伪标记对应的Embedding等进行训练。在Prefix-Tuning中则是除了对输入层添加模板外还对Transformer的每一层添加“模板”。Prefix-Tuning与传统Fine-tuning的对比图如下所示 可以看到Transformer的参数完全固定而我们只需要对Prefix部分进行训练即可对于不同的任务训练不同的Prefix在实际使用时挑选任务相关的Prefix和Transformer进行组装实现可插拔式的应用。 与Prefix-Tuning类似的方法还有P-tuning V2不同之处在于Prefix-Tuning是面向文本生成领域的P-tuning V2面向自然语言理解。但本质上完全相同。下图针对Prefix-tuningP-tuning V2与Prompt-Tuning对比黄色部分表示可训练的参数蓝色表示被冻结的参数 左图表示的是基于连续提示的Prompt-Tuning例如P-tuning我们可以发现只有输入层对应模板部分的Embedding和MLP参数是可训练的右图部分表示Prefix-TuningP-tuning V2Transformer的每一层的前缀部分也是可训练的可以抽象的认为是在每一层添加了连续的模板。但是实际上Prefix-TuningP-tuning V2并不是真正的在每一层添加模板而是通过HuggingFace框架内置的past_key_value参数控制。其本质上与Adapter类似是在Transformer内部对Key和Value插入可训练的两个MLP。 有相关工作对Adapter、Prefix-Tuning、LoRA等参数有效性学习进行了集成因为 这些参数有效性学习方法本质上都是插入少量的新的参数这些新的参数可以对预训练模型起到提示作用只不过并不是以人类可读的离散的模板形式体现而已 。 下图是《UniPELT: A Unified Framework for Parameter-Efficient Language Model Tuning》提出将这些参数有效性方法进行统一提出UniPELT框架 5.3.3 BitFit BitFit的思想更简单其不需要对预训练模型做任何改动只需要指定神经网络中的偏向Bias为可训练参数即可BitFit的参数量只有不到2%但是实验效果可以接近全量参数。 介绍了上述的一些参数有效性方法我们发现Prompt-Tuning也符合其主旨。基于参数有效性的思想也有许多工作致力于Prompt与参数有效性的结合例如《Delta Tuning: A Comprehensive Study of Parameter Efficient Methods for Pre-trained Language Models》、《LiST: Lite Prompted Self-training Makes Parameter-efficient Few-shot Learners》、《Making Parameter-efficient Tuning More Efficient: A Unified Framework for Classification Tasks》、《P-Adapters- Robustly Extracting Factual Information from Language Models with Diverse Prompts》、《Context-Tuning: Learning Contextualized Prompts for Natural Language Generation》由于相关工作非常多而且更新频繁这里不一一介绍。 6 面向超大规模模型的Prompt-Tuning Prompt-Tuning发展的两年来有诸多工作发现对于超过10亿参数量的模型来说Prompt-Tuning所带来的增益远远高于标准的Fine-tuning小样本甚至是零样本的性能也能够极大地被激发出来得益于这些模型的 参数量足够大 训练过程中使用了 足够多的语料 同时设计的 预训练任务足够有效 。最为经典的大规模语言模型则是2020年提出的GPT-3其拥有大约1750亿的参数且发现只需要设计合适的模板或指令即可以 实现免参数训练的零样本学习 。 2022年底到2023年初国内外也掀起了AIGC的浪潮典型代表是OpenAI发布的ChatGPT、GPT-4大模型Google发布的Bard以及百度公司发布的文心一言等。超大规模模型进入新的纪元而这些轰动世界的产物离不开强大的Prompt-Tuning技术。本文默认以GPT-3为例介绍几个面向超大规模的Prompt-Tuning方法分别为 上下文学习 In-Context LearningICL 直接挑选少量的训练样本作为该任务的提示指令学习 Instruction-tuning 构建任务指令集促使模型根据任务指令做出反馈思维链 Chain-of-ThoughtCoT 给予或激发模型具有推理和解释的信息通过线性链式的模式指导模型生成合理的结果。 6.1 In-Context Learning上下文学习 In-Context learningICL最早在GPT-3中提出 旨在从训练集中挑选少量的标注样本设计任务相关的指令形成提示模板用于指导测试样本生成相应的结果 。ICT的工作原理如下所示 In-Context Learning形式化定义 给定一个训练集 和一个测试集 因为ICT不涉及参数更新所以一般情况下无需验证集给定该任务的指令模板 给定一个预训练模型记作 。任务的目标是从训练集 中采样 个训练样本 称作 In-Context Examples 根据指令模板 将这 个训练样本进行线性拼接得到一个上下文模板 称作Demonstration 记作 。给定的一个测试样本 将其与模板拼接喂入模型中进行预测。 ICT的生成模式 因为GPT-3是自回归模型因此通常情况下生成的结果在序列的最末位处。当执行分类时此时需要对生成的结果进行映射例如通过Verbalizer的方法获得Label Word生成的概率。 ICT工作原理 下图给了ICT的工作原理挑选了 个训练样本作为Demonstration黄色部分指令模板则是换行符“\n”旨在区分样本的句子和标签。在预测时不断地更换测试样本绿色部分并在末尾留出空间让模型生成。 不过我们发现ICT在预测过程中存在 方差大 、 不稳定 的问题根据ICT的定义和性质我们罗列了几处潜在的因素和问题 如何挑选训练样本即这 个样本的指定有什么道理标注样本自身的正确与否是否重要模板指令对预测有什么影响样本数量 对预测有什么影响个被选中的样本的排序有什么影响训练样本的分布是否会对预测结果产生影响 根据最近的研究工作我们进行一些讨论。 6.1.1 样本的Input-Output Mapping的正确性是否对ICL有何影响 In-Context Example主要是由训练样本组成的通常包含Input和Output两个部分。其中InputInput Text表示输入的文本Output表示输出的文本或者标签Label。那么Input-Output的形式是否会对ICL产生影响呢下面介绍两个来自EMNLP2022针对样本挑选的分析型工作 《Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?》简称 Rethinking 《Ground-Truth Labels Matter: A Deeper Look into Input-Label Demonstrations》简称 Ground-Truth Rethinking 该工作使用GPT-3和GPT-J等大模型根据API的多次调用进行实验。 首先探索了 这些挑选样本的输入句子与标签Input-Output Mapping是否正确对预测存在影响 其定义三个Baseline所有样本均为随机采样 No Demonstration 没有任何训练样本相当于零样本场景Demonstration w/ glod labels 标准的in-context learning每个标注样本和标签是正确对应的Demonstration w/ random labels In-context Example的标签被随机替换为错误的标签 通过实验发现 使用Demonstration比不使用的效果好 说明demonstration example确实可以提升性能random label对模型性能的破坏并不是很大 说明in-context learning更多的是去学习Task-specific的Format而不是Input-Output MappingMetaICL是包含对ICL进行meta-training的方法但实验结果也表明random label对效果影响很小。说明在meta-training时模型也不会过多关注Demonstration example的Input-Output Mapping而是关注其他方面。 MetaICL是一种通过任务统一范式并使用元学习进行训练的方法其重要增加了多任务的训练来改进ICL在下游任务零样本推理时的泛化性能该算法将在下文讲解。 另外进一步探索被挑选的 个训练样本中 正确的Input-Output Mapping的比例 是否也有影响。实验结果发现影响较小如下图 下面探索 修改Demonstration的模式是否会有影响 包括 只有Input Text没有label此时所有input text进行拼接只有Label没有Input Text此时所有label进行拼接 实验结果如下所示 当去掉Input Text或Label后发现与No Demonstrate的结果相比没有明显的提升说明Demonstration的指令形式是很重要的即Label和Input Text 缺一不可对比之前的结论可以推论出宁愿Label是错误的也不能没有。 紧接着 探索输入句子Input Text与任务的分布差异是否有影响 即如果将输入句子换成其他任务的句子是否会影响模型做出决策。 给定 个句子这 个句子是从其他任务的训练集不同于当前任务 随机采样得到的。Label依然来自于当前任务空间Demonstration的指令模式保持不变。因此输入句子的分布是与当前task不同的。 从实验结果来看部分情况下影响还是有的说明输入样本在语义空间内的分布是会影响ICL的结果。 更多分析可阅读博主的博文【In-Context Learning】Rethinking the Role of Demonstrations: What Makes In-Context Learning Work? Ground-Truth 该工作是对Rethinking工作的进一步讨论其在部分层面上对Rethinking工作进行了改进主要认为Input-Output Mapping是有影响的。具体地说其提出了一个新的指标来度量Input-Output Mapping的影响。首先给出几个变量 假设所有的In-Context Example中有 的标签是正确的此时对应的模型效果记作 。因此如果所有In-Context Example的标签都是错误的则记作 。Pseudo-Random-Correct表示对应替换的Label是来自于同一个Label Space即替换其他的标签Zero-shot or No-demo表示没有Label只有输入的Input Text 作者提出了一个新的量化指标 Ground-turth Label Effect RatioGLER 定义为 表面意思是指 所有Label都是正确时对应的模型效果与随机Random Label的差与所有Label都是正确时对应的模型效果与没有Label的差 值的比值 。 分子表示Demo-gain即没有Label时模型效果的下降程度一般对于一个特定的数据集来说可以假设为定值因此 GLER这个指标如果越大则说明 下降的很多 。因此换句话说 如果GLER值越大则说明Random Label对模型的影响很大 。 作者遵循与Rethinking相同的实验设置进行了更为详细的实验并获得了GLER指标如下图所示 作者认为不同的实验设置例如Template的不同、数据集的不同等Random Label与No Label所产生的效果差异是不同的因此不能直接做出“In-context example mapping does not affect in-context learning performance much”片面的判定。 综合Rethinking和Ground-Truth两个工作我们可以得出结论对后续ICL的研究和应用都具有一定的启发作用 Input-Output Mapping对ICL是有影响的 主要体现在Input Text的分布、Label的准确性等不论是缺少Input Text还是缺少Label都会对ICL的效果产生影响 说明ICL会得到Demonstration的形式的指导对后面的预测起到引导作用 6.1.2 In-Context Example的选择与顺序对ICL有什么影响 In-Context Example的选择方法最简单的便是随机采样即将每个样本视为独立且等概率的因此每个训练样本都有一定概率被选中。同时被选中的这些样本如何排序也会对ICL的预测产生一些影响因为Demonstration的构建是将这些Input-Output Pair按照一定顺序线性拼接而成。然而有工作发现随机采样的方法会面临方差大的风险。先通过一个简单的预实验来说明这一点。 预实验 选择SST-2斯坦福情感分析数据集任务从训练集中采样 个训练样本作为In-Context Example集合重复采样10次得到10个不同的集合。因为4个样本的排列组合一共有 种所以我们可以穷举所有的顺序。因此我们一共需要完成240次实验。实验结果如下所示 横坐标Training Set ID表示10个不同的In-Context Example集合用来观察不同的样本挑选对ICL的影响情况对于每一个集合4个样本可以有24种排列每一个排列进行一次实验对应图中的一个点因此每一个集合都对应一共有24个点采用箱式图来观察不同的排列对ICL的影响情况。纵坐标为准确率。 实验结果表明 挑选不同的样本对ICL的性能影响不同而同样的样本不同的排列也会产生很大的差异 最大准确率的差异超过了40%验证了ICL的性能对样本的选择和排列很敏感完全随机的样本挑选和排列使得ICL性能不稳定、方差大。所以在真实应用时如果使用完全随机的方法对预测的结果是无法保证的。那么如何弥补这一点呢下面介绍来自ACL2022的两个经典工作 《What Makes Good In-Context Examples for GPT-3?》代表方法KATE《Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity》简称Fantastically KATE 该工作也在SST-2的预实验中发现不同的In-Context Example会得到不同的准确率说明样本的挑选很重要。另外作者在Natural Question数据集上进行测试发现当挑选的In-Context Example如果在Embedding空间中与Test Example更近将会带来更好的效果。因此提出KATEKnn-Augmented in-conText Example selection即基于近邻原则挑选In-Context Example。 关于KATE更详细的解读可参考博主的博文【In-Context Learning】What Makes Good In-Context Examples for GPT-3? 首先给出定义基于GPT-3的ICL可以视为条件生成问题给定 个样本并将其拼接起来作为Context 任务目标是根据Context和新的测试样本输入 预测对应的标签 其中 表示当前第 个预测的token 表示前 个生成的token。 提出的方法框架图如下所示 首先对训练集 和测试集上所有样本使用Encoder 进行表征获得句子Embedding 给定一个测试样本 及其对应的Embedding 从训练集中根据欧氏距离或相似度进行排序获得Top 训练样本作为In-context Example。算法如下图 Encoder的选择可以是预训练的BERT、RoBERTa也可以是在目标任务数据上进行自监督的模型例如Sentence-BERT、SimCSE等。 实验发现基于KATE的样本挑选算法可以提升ICL的性能并且降低方差。 Fantastically 该工作发现样本的排列对ICL影响很大而且模型越小方差越大。如下图所示 因此该工作提出旨在从众多的排列中挑选合适的排列提出三阶段的方法 第一阶段随机采样若干训练样本 给定一个训练集 对于每一个样本 通过映射 添加Template形成输入文本 。最终通过线性拼接方法形成一个输入序列第二阶段全排列 定义一个全排列列出所有可能的排列。例如如下图当只有 个样本时则有 个排列。 对于每一个排列 让预训练语言模型生成符合当前排列分布的样本Probing Sequence 。因此 个排列会生成 个Probing Sequence。将这 个Probing Sequence拼接起来作为Probing Set 这些Probing Sequence都是让GPT模型生成的所以既可以生成Input Text也会生成Label 经过测试GPT系列的模型如果前面给定固定的模式例如InputxxxOutputxxx模型可以自动按照这个模式生成一些新的样本。 第三阶段打分 得到的 个Probing Sequence需要从中挑选最优的序列作为Prompt作者定义了两个基于信息熵的打分方法分别为Global Entropy (GlobalE)和Local EntropyLocalIE并挑选得分最高的这里不做详细介绍。 ICL的影响因素很多上述工作对其做了一些比较全面的探索除了探索ICL的影响因素外也有工作尝试进一步改进和提升ICL的实际效果下面介绍三个方面的提升方法。 6.1.3 ICL的提升——引入自监督Self-supervised ICL 不论是大模型还是小模型如果直接用ICL的目标来训练模型会怎么样下面这一篇工作尝试讲ICL加入到自监督训练过程中。 《Improving In-Context Few-Shot Learning via Self-Supervised Training》 首先引入两个定义 example定义 表示一个input-output pair。input和output text前面分别添加“Input”和“Output”标记每个example之间通过newline分隔。 instance定义 表示若干example的线性拼接如下图所示 按照ICL的模式拼接若干个样本。对于每个样本添加模板例如Input、Output。红色部分则为Label。 按照这一模式定义不同的预训练任务 Next Sentence GenerationNSG 给定一个original text划分为两个子句。前面的句子作为input输入模型后面的句子作为output旨在模型根据input来生成output。 Masked Word PredictionMWP 类似于MLM对输入的文本随机挑选120个词并分别随机替换如下几个之一的special token___, 〈〈〉〉, , (()), $$$, %%%, ###, ***, and .。任务旨在预测被覆盖的词。 Last Phrase PredictionLPP 给定一个文本缺乏末尾词以及若干passage text任务旨在生成/分类末尾词。该任务可以建模为生成式任务或分类任务 生成任务让模型生成last phrase分类任务给定一个答案让模型判断答案是否正确生成True/False Classification 与Next sentence prediction和Sentence orddering prediction类似考虑四种类型的输入如下图 Original Sentence原始文本不做改动此时为TrueMultiple Documents随机对50%的句子从其他document中挑选并替换此时每个句子之间语义不同为FalseShuffled Sentence打乱句子顺序但不改变整个文档语义为True。 训练阶段使用MOE进行预训练。预训练语料BOOK-CORPUS plus Wikipedia, CC-NEWS, OPENWEB- TEXT, and STORIES。分别对每个语料抽取100k句子STORIES只抽取10k。最终大约有100w个句子每个类型的self-supervised task平均25w个样本。 作者在很多任务上进行了实验这里只展示SuperGLUE上的效果可以发现引入ICL自监督训练是可以大大提升效果的。 6.1.4 ICL的提升——统一范式元学习MetaICL 除了将ICL的模板与自监督训练结合外是否可以直接使用ICL来训练一个具体的任务呢答案是可以的下面两篇工作将ICL的模板与下游任务相结合并提出基于元学习的ICL训练方法 《Meta-learning via Language Model In-context Tuning》提出In-Context Tuning方法《MetaICL: Learning to Learn In Context》提出MetaICL方法。 In-Context Tuning 目前向语言模型通过prompting可以在小样本场景下得到很大的成功例如GPT-3。然而原始的语言模型在预训练时并没有针对in-context进行优化。先前工作发现prompting会过度受到oversensitive样本选取以及instruction本身影响。因此该工作提出In-Context Tuning旨在通过多任务训练的方式直接对预训练模型微调ICL任务目标。 在训练fine-tuning阶段给定一系列的训练task每一个task都有相应的instruction以及该task对应的少量样本输入/输出对。在测试阶段给定一个新的unseen task以及该task对应的instruction和少量样本输入/输出对旨在让模型能够对测试样本预测其类别。 如下图给定一个情感分析task 在训练时直接对instruction 、若干少量标注数据 以及target样本 进行拼接并基于in-context learning训练目标进行优化预测对应类别 MetaICL 大规模的语言模型可以被用于in-context learning例如GPT-3。只需要给定目标任务的少量标注样本作为提示即可实现无参数训练地对其他样本进行预测。然而目前in-context learning依然与普通的fine-tuning有一定差距且预测的结果方差很大同时也需要花费时间考虑template的构建。传统的In-context learning可能效果并不理想可能因为target task与预训练的阶段的训练目标差异太大或模型太小。为了改进上述问题该工作提出MetaICL方法先在若干task的训练集上进行训练试图让模型学习到如何根据in-context的语义来预测。 方法很简单如下所示 与GPT-3一样在训练时模型的输入包含当前task的 个样本以及第 个样本输入使用交叉熵更新模型。在测试阶段给定unseen target task无需再次更新模型只需要将对应的 个样本拼接输入模型即可对其他样本预测。 6.1.5 ICL的提升——对预测进行矫正Calibrate Before Use 除了直接对ICL训练目标进行训练来拉近下游任务与预训练存在的Gap外也可以直接对预测的部分进行 校准Calibration 这种思想的使用在许多任务中都很广泛。 我们尝试将模型输出的概率分布进行校准。对于原始的输出概率分布向量可以使用一个affine transformation进行转换 其中 和 分别为变换的参数矩阵和偏置。由于ICL在推理过程中是不涉及到参数训练的因此 和 如何进行更新呢该工作提出一个很巧妙的策略即引入一个新的样本叫做Context-free。如下图所示 In-Context Example与其余的测试样本都是一样的只是添加了一个Content-free测试的样本例如“N/A”也可以设置为空格、“[MASK]”等明显无极向的文本。 例如SST-2正常来说我们希望“N/A”对应的数据概率应该为[0.5%0.5%]因为对于情感分析任务来说“N/A”肯定没有任何极向。但是实际大模型预测的结果可能并非是这个值因此我们可以尝试更新W和b参数来纠正这个概率分布使其变得更加均匀iniform。 更新参数时通过启发式的方法完成。首先获得Content-free样本的预测概率 那么参数 设置为 设置为零向量。 一个比较直观的例子如下所示。所挑选的样本可能存在bias导致预测的置信度只有超过0.7的时候才是Positive类。然而默认的阈值一般设置为0.5所以导致一部分样本由于这种bias而预测错误。Calibration则旨在矫正这种bias通过一个Content-free样本发现正确的阈值应该是0.7。因此实现了分布的校准大大提高预测的准确性。 6.2 Instruction-tuning指令学习 面向超大规模模型第二个Prompt技术是指令学习。在上文我们介绍过Prompt的本质之一是任务的一种指令因此在对大规模模型进行微调时可以为各种类型的任务定义指令并进行训练来提高模型对不同任务的泛化能力。 什么是指令呢如下图所示 假设是一个Question Generation任务那么可以为这个任务定义一些指令例如 Title任务的名称Definition任务的定义说明这个任务的本质和目的Things to avoid说明这个任务的注意事项例如需要避免什么等等Positive / Negative Examples给出正确和错误的例子作为提示Prompt当前任务的提示信息 当许多任务都按照这种模式定义好模板让模型在指令化后的数据上进行微调模型将可以学会如何看到指令做预测。 下面介绍一些典型的基于Instruction的方法包括FLAN、LaMDA和InstructionGPT它们都是遵循Instruction-tuning实现统一范式。 6.2.1 FLAN 例如基于Instruction-Tuning训练的 FLAN模型 其在62个任务上进行多任务训练每个任务都设计了Instruction最后得到137B的大模型如下图所示 6.2.2 LaMDA 谷歌提出的LaMDA模型其完全采用自回归生成式模型并在大量的对话语料上进行预训练得到137B的大模型。为了提高模型的安全性和事实性LaMDA涉及到两个微调策略一个是通过人工标注形式标注一些存在安全隐患的数据。期望模型生成过程中考虑四种因素 另一种微调策略则是引入互联网搜索机制提高模型生成结果的事实性 最近与ChatGPT类似的Bard大模型则是基于LaMDA微调的模型。 6.2.3 InstructionGPT 另外一个典型的例子是OpenAI的InstructionGPT其主要流程如下 Step1 先采样一些demonstration数据其包括prompt和labeled answer。基于这些标注的数据对GPT-3进行fine-tuning得到SFTSupervised Fine-tuning 雇佣40名标注人员完成prompt的标注。 此时的SFT模型在遵循指令/对话方面已经优于 GPT-3但不一定符合人类偏好。 Step2 Fine-tuning完之后再给一个prompt让SFT模型生成出若干结果可以通过beam search等方法例如生成ABCD四种结果通过人工为其排序例如DCAB可以得到标注的排序pair基于标注的排序结果训练一个Reward Model 对多个排序结果两两组合形成多个训练数据对。RM模型接受一个输入给出评价回答质量的分数。这样对于一对训练数据调节参数使得高质量回答的打分比低质量的打分要高。 Step3 继续用生成出来的结果训练SFT并通过强化学习的PPO方法最大化SFT生成出排序靠前的answer。 训练目标如下 初始化时 PPO算法在训练过程中环境会发生变换。 首先根据自动标注的数据下面的来源3喂入 中得到输出结果 其会根据 得到一个得分期望在训练 时能够最大化reward的得分 第二项loss表示KL散度在迭代训练过程中避免RL模型 与原始的监督训练的SFT模型差的太远 第三项则是一个预训练目标可以理解为避免灾难遗忘。当 时则为标准的PPO模型否则为PPO-ptx模型1.3B 参数 InstructGPT 模型的输出优于 175B GPT-3 的输出尽管参数少了 100 多倍。 6.3 Chain-of-Thought思维链 思维链在2022年初由谷歌团队提出其旨在进一步提高超大规模模型在一些复杂任务上的推理能力。其认为现有的超大规模语言模型可能存在下面潜在的问题 增大模型参数规模对于一些具有挑战的任务例如算术、常识推理和符号推理的效果并未证明有效 Scaling up model size alone has not proved sufficient for achieving high performance on challenging tasks such as arithmetic, commonsense, and symbolic reasoning. 期望探索如何对大模型进行推理的简单方法 对于算术类推理任务期望生成自然语言逻辑依据来指导并生成最终答案但是获得逻辑依据是比较复杂昂贵的。 It is costly to create a large set of high quality rationales, which is much more complicated than simple input–output pairs used in normal machine learning 对某个task为大模型提供一些上下文in-context example作为prompt简单的示例可能并非能够提升推理能力。It works poorly on tasks that require reasoning abilities, and often does not improve substantially with increasing language model scale 因此提出 思维链Chain-of-Thought 。思维链的定义如下 A chain of thought is a series of intermediate natural language reasoning steps that lead to the final output, and we refer to this approach as chain-of-thought prompting. 直观理解很简单思维链是一种特殊的In-Context Learning对于每个挑选的In-Context Example除了给出Input-Output Mapping外还需要给出一个推理过程称为Relationale或Reasoning Path其是一个具有逻辑推理过程的短文本如下图蓝色部分。 通过引入推理路径作为提示可以激发大模型按照这种推理的模式生成出合理的结果引导大模型如何思考、如何推理。 下面介绍几个经典的CoT方法 6.3.1 Self-consistency Improves Chain Of Thought Reasoning in Language Models Self-consistency自我一致性 建立在一个直觉基础上即 一个复杂的推理任务其可以有多种推理路径即解题思路最终都能够得到正确的答案 。即所谓 条条大路通罗马 。一个问题越需要深思熟虑的思考和分析那么七可以得出答案的推理路径就越多样化。 具体方法如下图所示。先从大模型的decoder中采样出一系列个reasoning path每一个path都能够对应一个最终的答案我们 可以挑选那些能够得到一致答案的较多的path 作为我们的采样得到的reasoning path。基于这种直接投票策略比较符合人类的直觉即如果很多reasoning path都能得到对应的一个答案那么这个答案的置信度会比较大。 作者也探索了一些其他的投票策略例如根据logit进行加权等发现直接投票更合适 6.3.2 Large Language Models are Zero-Shot Reasoners CoT需要涉及到人工标注prompt。该工作则发现只需要添加一个固定的prompt“Lets think step by step” 即可以促使大模型一步步推理来生成结果。 主要包括两个核心步骤 1st promptreasoning extraction 先构建模板得到 然后喂入大模型中生存结果 2nd promptanswer extraction 将 拼接起来再次喂入大模型中直接生成结果。 6.3.3 Automatic Chain of Thought Prompting in Large Language Models 先前的chain-of-thought包括两种一种是Zero-shot CoTlets think step by step另一种是Manual-CoT拼接若干样本作为demonstration。我们发现不论是何种prompt模式大模型都会生成错误的chains。为了避免这个问题我们考虑提出一种自动化构建demonstration的方法——Auto-CoT。 主要包括两个步骤1Queston Clustering 使用sentence-BERT对每个question获得表征然后通过K-means获得若干簇。对于每个簇按照其距离簇中心距离的大小升序排列。算法如下所示 2Demonstration Sampling 根据Cluster的结果采样得到合适的prompt。对于每个簇采样一个question并与Lets think step-by-step拼接起来喂入大模型中生存relationale。最后将 个relationale与对应的question、answer拼接并拼接目标测试样本促使大模型生成测试样本的relationale。 Auto-CoT旨在自动选择样本然后让大模型依次生成出relationale然后最后拼接所有relationale作为测试样本的提示。 6.3.4 Least-to-Most Prompting Enables Complex Reasoning in Large Language Models 最近CoT的提出进一步拉近了人类与机器智能的距离通过natural language rationales和self-consistency来提升大模型在推理任务上的性能。然而CoT依然存在一些不足即其很难对超出demonstration example难度程度的问题进行解答。为此该工作尝试将一个复杂的任务分解为若干简单的子任务。 在对每个子问题进行预测时是一个渐近的过程。 第一个子问题是最简单的解决第二个子问题时会将上一个子问题以及答案附加在当前子问题的前面而且第二个子问题会比第一个子问题难最后一个子问题就是原始的问题此时其会有前面所有子问题的解答作为提示。 最简单的情况就是将一个问题分解为两个子问题前面所有的子问题可以作为后面子问题的in-context demonstration。
http://www.zqtcl.cn/news/932136/

相关文章:

  • 网站内容和备案不一3d建模师容易找工作吗
  • 深圳装饰公司网站怎么做正规网站
  • 福建省建设行业企业资质查询网站跨境电商网络营销是什么
  • 做科技汽车的视频网站有哪些内容wordpress长文分页
  • 哪里有建设好的网站自助建站管理平台
  • 优秀网站建设公司电话建站公司用的服务器
  • 湖南网站推广公司上海公司买车上牌规定
  • 一个企业做网站的目的高端网站设计 上海
  • 教做布艺的网站网页传奇游戏排行榜前十
  • 做一个公司网站大概要多少钱做一个wordpress模板下载地址
  • 时代强个人网站网络营销的特点举例
  • 专门做诺丽果的网站北京百度seo点击器
  • 佛山制作网站开发公司wordpress历史记录
  • 有没有什么专业做美业的网站安卓免费翻外墙的app
  • ppt网站建设教育网站的建设
  • 文化馆网站建设情况网站建设建站公司
  • 自己怎么做dj 视频网站网站推广 济南
  • 2014网站怎么备案怎样建置换平台网站
  • 惠州网站建设信息嘉兴做网站软件
  • 如何做发表文章的网站淮安市建设工程质量监督站网站
  • 做洁净的网站太原便宜做网站的公司
  • 网站设计评级检索标准的网站
  • 做个网站每年都要交域名费吗html静态网页首页模板
  • 网站资源整合与建设wordpress固定链接设置后404
  • 网站历史快照seo推广方法
  • 做淘宝客的的网站有什么要求北京专业网站制作公司
  • 建设网站 知乎个人可以开发app软件吗
  • 网站如何后台管理北京正规网站建设有几种
  • 临沂网站排名高质量的中山网站建设
  • 响应式网站定制开发网络教育全程托管