LARGE LANGUAGE MODELS ARE HUMAN-LEVEL PROMPT ENGINEERS

题目

大型语言模型是人类级别的提示工程师

在这里插入图片描述

论文地址:https://arxiv.org/abs/2211.01910
项目地址:https://github.com/keirp/automatic_prompt_engineer

摘要

    通过对自然语言指令进行调节,大语言模型 (LLM) 显示了作为通用计算机的令人印象深刻的功能。然而,任务表现在很大程度上取决于用于引导模型的提示的质量,并且大多数有效的提示都是由人类手工制作的。受经典程序合成和提示工程的人类方法的启发,我们提出自动提示工程师(APE)用于自动指令生成和选择。在我们的方法中,我们将指令视为“程序”,通过搜索LLM提出的候选指令池进行优化,以最大化所选的分数函数。为了评估所选指令的质量,我们评估了所选指令之后的另一个 LLM 的零样本性能。大量实验表明,我们自动生成的指令大大优于之前的 LLM 基线,并且在 24/24 指令归纳任务和 17/21 策划的 BIG-Bench 任务上实现了与人类注释者生成的指令更好或相当的性能。我们进行广泛的定性和定量分析来探索 APE 的性能。我们证明,APE 设计的提示能够提高小样本学习性能(只需将它们添加到标准的上下文学习提示之前),找到更好的零样本思维链提示,以及引导模型走向真实性和/或信息性。

简介

    规模和基于注意力的架构的结合使得语言模型具有前所未有的通用性(Kaplan 等人,2020;Vaswani 等人,2017)。这些所谓的“大型语言模型”(LLM)在各种任务中表现出了非凡的、通常是超人的能力,包括零样本和少样本设置(Brown 等人,2020 年;Srivastava 等人,2022 年) 。然而,一般而言,存在一个控制问题:我们如何才能让LLM做我们希望他们做的事情?为了回答这个问题并引导LLM走向期望的行为,最近的工作考虑了微调(Ouyang et al, 2022; Ziegler et al, 2019)、上下文学习(Brown et al, 2020)以及几种形式的提示生成(Gao,2021),包括软提示的可微调整(Qin & Eisner,2021;Lester 等人,2021)和自然语言提示工程(Reynolds & McDonell,2021)。后者特别令人感兴趣,因为它为人类与机器通信提供了一个自然的界面,并且可能不仅与LLM,而且与提示图像合成器等其他通才模型都有很大的相关性(Rombach 等人,2022 年;Ramesh 等人, 2022),公众对即时设计和生成的兴趣也出现了(示例见附录 A)。

    这种兴趣背后的事实是,简单的语言提示并不总是产生所需的结果,即使这些结果可以通过替代指令产生。因此,人类用户必须尝试各种提示才能引发所需的行为,因为他们对指令与特定模型的兼容性知之甚少。我们可以通过将LLM视为执行由自然语言指令指定的程序的黑匣子计算机来理解这一点:虽然它们可以执行广泛的自然语言程序,这些程序的处理方式对于人类来说可能并不直观,并且指令的质量只能在下游任务上执行这些指令时才能衡量(Sanh 等人,2022;Wei 等人) ,2021)。

在这里插入图片描述
图 1:(a) 我们的方法自动提示工程师 (APE) 自动生成通过输出演示指定的任务的指令:它通过直接推理或基于语义相似性的递归过程生成多个候选指令,然后执行它们使用目标模型,并根据计算的评估分数选择最合适的指令。 (b) 根据 Honovich 等人 (2022) 引入的 24 个 NLP 任务的四分位数平均值来衡量,在使用 InstructGPT 模型时,APE 能够超越人类的表现 (Ouyang 等人,2022)。

    为了减少创建和验证有效指令所需的人力,我们提出了一种使用 LLM 来自动生成和选择指令的新颖算法。我们将此问题称为自然语言程序综合,并建议使用 LLM 生成和搜索启发式可行的候选解决方案,将其作为黑盒优化问题来解决。在此过程中,我们通过三种方式利用LLM的通才能力。

    首先,我们使用 LLM 作为推理模型(Ellis 等人,2021;Honovich 等人,2022),根据输入输出对形式的一小组演示生成候选指令。接下来,我们通过计算我们寻求控制的LLM下的每条指令的分数来指导搜索过程。最后,我们提出了一种迭代蒙特卡罗搜索方法,其中LLM通过提出语义相似的指令变体来改进最佳候选者。直观地说,我们的算法要求LLM根据演示生成一组候选指令,然后要求他们评估哪些指令更有前途。我们将我们的算法称为自动提示工程师(APE)。我们的主要贡献是:

  • 我们将指令生成构建为自然语言程序综合,将其表述为由LLM指导的黑盒优化问题,并提出朴素和迭代蒙特卡罗搜索方法来近似解决方案。
  • 我们提出的方法APE 通过模型生成的指令在24/24 指令归纳和17/21 Big-Bench 任务上实现了零样本学习的人类水平性能。
  • 我们提供广泛的定性和定量分析,探索 APE 的各个方面,并演示 APE 在改进小样本学习、寻找更好的零样本思维提示链以及引导LLM走向所需行为(如真实性和/或信息性)方面的应用。

相关工作

    大型语言模型在模型大小、训练数据和训练计算方面扩展基于 Transformer 的语言模型已被证明可以可预测地提高各种下游 NLP 任务的性能(Vaswani 等人,2017 年;Devlin 等人,2018;布朗等人,2020)。2022 年; Sanh 等人,2022;魏等人,2021;欧阳等人,2022;霍诺维奇等人,2022)。在本文中,我们将 LLM 视为执行由自然语言指令指定的程序的黑盒计算机,并研究如何使用模型生成的指令来控制 LLM 的行为。由于这种扩展,LLM的许多新兴能力(Wei et al, 2022a)被发现,包括少样本上下文学习、零样本问题解决、思维链推理、指令跟踪和指令归纳(Cobbe等人,2021;Wei 等人,2022b;Kojima 等人,

    Prompt Engineering Prompting 为人类提供了一个自然直观的界面,可以与LLM等通才模型进行交互并使用它。由于其灵活性,提示已被广泛用作 NLP 任务的通用方法(Schick & Schütze,2021;Brown 等人,2020;Sanh 等人,2022)。然而,LLM 需要仔细的提示工程,无论是手动(Reynolds & McDonell,2021)还是自动(Gao 等人,2021;Shin 等人,2020),因为模型似乎不像人类那样理解提示( Webson 和 Pavlick,2021;Lu 等人,2021)。尽管许多成功的即时调优方法使用基于梯度的方法在连续空间上执行优化(Liu et al, 2021;Qin & Eisner, 2021;Lester et al, 2021),但随着计算梯度变得越来越昂贵,这在规模上变得不太实用对模型的访问转向可能不提供梯度访问的 API。在我们的论文中,我们借用了离散提示搜索方法的组件,例如提示生成(Gao et al, 2021; Ben-David et al, 2021)、提示评分(Davison et al, 2019)和提示释义(Jiang et al, 2021)。 2020;Yuan 等人,2021)通过直接在自然语言假设空间中搜索来优化指令。与过去的工作相比,它对每个组件使用专门的模型并严重依赖人类模板,我们表明整个搜索可以由单个LLM进行。

    程序综合 程序综合涉及自动搜索“程序空间”以查找满足特定规范的程序(Gulwani 等人,2017)。现代程序综合允许多种规范,包括输入输出示例(Ellis 等人,2021;Wong 等人,2021)和自然语言(Jain 等人,2022)。可供搜索的可行程序空间的范围也在扩大,从历史上限制性的特定领域语言到通用编程语言(Austin 等人,2021)。与需要合适的结构化假设空间和组件库的先前方法相比(Liang et al, 2010; Ellis et al, 2018),我们利用LLM提供的结构来搜索自然语言程序的空间。使用推理模型是通过将搜索空间限制在可能表达式的有限空间来加速搜索的标准做法(Menon 等人,2013;Lee 等人,2018;Devlin 等人,2017;Ellis 等人,2021)。受此启发,我们使用LLM作为近似推理模型,根据一小组演示生成候选程序。与经典的程序综合不同,我们的推理模型不需要任何训练,并且可以很好地推广到各种任务。

使用 LLMS 的自然语言程序合成

    我们考虑由从总体 X 采样的输入/输出演示的数据集 Dtrain = f(Q; A)g 和提示模型 M 指定的任务。自然语言程序合成的目标是找到单个指令 ρ 使得当 M 被提示时连接 [ρ;指令和给定输入的 Q],M 产生相应的输出 A。更正式地说,我们将其视为一个优化问题,其中我们寻求指令 ρ 最大化某些每个样本分数 f(ρ; Q; A) 的期望超过可能(Q;A):在这里插入图片描述

    请注意,一般来说,Q 可能是空字符串,因此我们将 ρ 优化为直接生成输出 fAg 的提示。虽然人类已经广泛尝试了这项任务,但我们对任何特定指令与模型 M 的兼容性知之甚少。因此,我们建议将这个人类难以解决的问题视为由LLM指导的黑盒优化过程。我们的算法 APE 在两个关键组成部分(提案和评分)中均使用了LLM。如图 1 所示,并在算法 1 中进行了总结,APE 首先提出一些候选提示,然后根据选定的评分函数过滤/细化候选集,最终选择得分最高的指令。接下来我们讨论提案和评分的选项。

初始提案分布

    由于搜索空间无限大,找到正确的指令可能极其困难,这使得自然语言程序合成历来难以处理。 NLP 的最新进展表明,语言模型非常擅长生成各种自然语言文本。因此,我们考虑利用预训练的LLM来提出一组好的候选解决方案来指导我们的搜索过程。虽然LLM的随机样本不太可能产生所需的(Q;A)对,但我们可以要求LLM在给定输入/输出演示的情况下大致推断出最有可能的高分指令;即,从 P(ρ j Dtrain;f(ρ) 较高)中近似采样。

在这里插入图片描述

    前向模式生成我们考虑两种从 P(ρ | Dtrain; f(ρ) 高) 生成高质量候选的方法。首先,我们采用基于“前向”模式生成的方法,将分布 P(ρ | Dtrain; f(ρ) is high) 翻译成单词。例如,在我们的教学归纳实验(第 4.1 小节)中,我们遵循 Honovich 等人(2022)并使用图 2(上)提示LLM。

    反向模式生成 虽然“正向”模型对于大多数预训练的 LLM 来说都是开箱即用的,但将 P(ρ | Dtrain; f(ρ) 很高)翻译成单词需要跨不同任务的定制工程。这是因为,虽然指令通常出现在段落的开头,但“向前”模型仅从左到右生成文本,这需要在提示的末尾预测指令。因此,我们希望有一种更灵活的方法,以便指令可以位于文本中的任何位置。为了解决这个问题,我们考虑“反向”模式生成,它使用具有填充功能的 LLM,例如 T5(Raffel 等人,2020)、GLM(Du 等人,2022)和 InsertGPT(Bavarian 等人,2022)——推断缺失的指令。我们的“反向”模型通过填充空白直接从 P(ρ j Dtrain; f(ρ) 很高)中采样。我们在图 2(中)中展示了此类模板的示例。

    自定义提示 ,请注意,根据所使用的评分函数,可能存在比上述示例更合适的提示。例如,在我们的 TruthfulQA 实验中,我们从原始数据集(Lin 等人,2022)中的人工设计指令开始,并要求“反向”模型提出适合缺失上下文的初始指令样本(图 2(底部))。

评分函数

    为了将我们的问题转化为黑盒优化,我们选择一个评分函数来准确测量数据集和模型生成的数据之间的对齐情况。在我们的教学归纳实验中,我们考虑了两个潜在的评分函数,如下所述。在 TruthfulQA 实验中,我们主要关注 Lin 等人(2022)提出的自动化指标,类似于执行准确性。在每种情况下,我们使用方程(1)评估生成指令的质量,并对保留的测试数据集 Dtest 进行期望。

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

    执行精度 首先,我们考虑使用 Honovich 等人 (2022) 提出的执行精度度量来评估指令 ρ 的质量,我们将其表示为 fexec。在多数情况下,执行精度简单地定义为 0-1 损失,f(ρ; Q; A) = 1 [M([ρ; Q]) = A]。在某些任务中,执行准确性会考虑不变量;例如,它可能是顺序不变的集合匹配损失,如 Honovich 等人(2022)的附录 A 中所述。

    对数概率 我们进一步考虑更软的概率评分函数,我们假设它可以通过在搜索低质量候选指令时提供更细粒度的信号来改进优化。特别是,我们考虑目标模型 M 下给定指令和问题的期望答案的对数概率,在每个样本的基础上,为 log P(A j [ρ; Q])。

    高效的分数估计 通过计算所有候选指令的整个训练数据集的分数来估计分数可能会很昂贵。为了降低计算成本,我们采用了一种过滤方案,其中有前途的候选者接收更多的计算资源,而低质量的候选者接收更少的计算。它可以通过在算法 1 第 2-9 行上使用多阶段计算策略来实现。我们首先使用训练数据集的一小部分来评估所有候选者。对于分数大于特定阈值的候选者,我们从训练数据集中采样并评估新的非重叠子集,以更新分数的移动平均值。然后,我们重复这个过程,直到剩下一小组候选者,这些候选者将在整个训练数据集上进行评估。这种自适应滤波方案通过保持高质量样本的精确计算成本并大幅降低低质量候选的计算成本,显着提高了计算效率。我们注意到,之前的工作中已经使用了类似的分数估计方案(Li et al, 2022;Maclaurin & Adams, 2015)。

迭代提案分布

    尽管我们尝试直接对高质量的初始指令候选进行抽样,但第 3.1 节中描述的方法可能无法产生良好的提案集 U,因为它缺乏多样性或不包含任何候选具有适当的高分。为了应对此类挑战,我们探索了对 U 进行重采样的迭代过程。

    迭代蒙特卡罗搜索,我们考虑探索当前最佳候选者周围的本地搜索空间,而不是仅从初始提案中采样。这使我们能够生成更有可能成功的新指令。我们将此变体称为迭代 APE。在每个阶段,我们都会评估一组指令并过滤掉得分较低的候选人。然后,LLM被要求生成与高分相似的新指令。我们在图 3 中提供了用于重采样的提示。图 6(右)表明,尽管这种方法提高了建议集 U 的整体质量,但最高得分的指令往往在更多阶段中保持不变。我们的结论是,迭代生成相对于第 3.1 小节中描述的生成过程的相对简单性和有效性提供了边际改进。因此,除非另有说明,我们默认使用不进行迭代搜索的 APE。

大型语言模型是人类水平的提示工程师

    本节研究 APE 如何指导 LLM 实现所需的行为。我们从四个角度进行研究:零样本性能、少样本上下文学习性能、零样本思维链推理和真实性。我们的实验表明,APE 可以找到提高任务表现的提示,其表现与人类编写的提示相同甚至更好。 APE 还经常提供一些富有洞察力的技巧,指导如何最好地提示可以成功转移到新任务的语言模型(参见第 4.3 节)。

指令归纳

    我们评估了 Honovich 等人(2022)提出的 24 个指令归纳任务中零样本和少样本上下文学习的有效性。这些任务涵盖语言理解的许多方面,从简单的短语结构到相似性和因果关系识别。我们在附录 B 中提供了每个任务的详细描述。对于每个任务,我们从训练数据中采样五个输入输出对,并使用算法 1 选择最佳指令。然后,我们评估指令的质量通过执行 InstructGPT 3 上的指令。我们使用不同的随机种子重复实验五次,以报告平均值和标准差。我们实验的确切模板可以在附录(表 5)中找到。

在这里插入图片描述

图 4:24 条指令归纳任务的零样本测试精度。 APE 在 24 项任务中的所有 24 项上都达到了人类水平或更好的表现。

    零样本学习,我们将我们的方法与两个基线进行比较:人类提示工程师 (Human)4 和 Honovich 等人 (2022) 提出的模型生成指令算法。该算法可以被认为是 APE 的贪婪版本,没有搜索和选择过程;因此,我们将其称为“贪婪”。图 4 显示了 InstructGPT 使用人类指令和模型生成指令的零样本性能。我们的算法在每项任务上都优于“贪婪”,并且在 24 项任务中的 24 项上达到了与人类相同或更好的表现。此外,图 1 中所有 24 项任务的四分位均值 (IQM)(Agarwal 等人,2021)表明,带有 InstructGPT 的 APE 的表现优于人类设计的提示,获得的 IQM 为 0.810,而人类为 0.749。我们在附录中总结了 APE 为每项任务选择的指令(表 12)。

    少样本上下文学习,我们在少样本上下文学习中评估了 APE 生成的指令,我们在上下文演示之前插入了指令。这些指令是根据零样本执行精度来选择的,我们将此设置表示为图 8 中的“指令 + 上下文”。如图 8 所示,添加指令可实现与标准上下文相当或更好的测试性能。 24 项任务中的 21 项的情境学习表现。与直觉相反,添加押韵、大动物和第二个字母的上下文示例会损害模型性能。我们推测这可能是因为所选指令过度适合零样本学习场景,因此在少样本情况下表现不佳。因此,我们尝试使用少样本执行精度作为选择指标。图 14 显示,除了 Rhymes 之外,少数样本指标的效果与零样本指标相当或略好。为了直观地了解正在发生的情况,我们在附录 C.1 中提供了定性分析。

BIGBENCH

    为了了解 APE 是否可以应用于更具挑战性的任务,我们提出并策划了 BIG-Bench 指令归纳(BBII),这是 21 个任务的干净且易于处理的子集,具有清晰的人工编写指令,可以应用于所有任务数据集中的示例。所选任务涵盖了语言理解的许多方面,包括 BigBench-Hard 子集中的所有九个此类问题(Suzgun 等人,2022)。特别是,它包括情感理解、上下文无关问答、阅读理解、总结、算法和各种推理任务(例如算术、常识、符号和其他逻辑推理任务)。我们在附录 B 中提供了任务的详细描述和我们的选择标准。对于每个任务,我们使用 InstructGPT 的反向模式生成来生成一组候选指令,并根据执行精度对指令进行排名。然后,我们在 InstructGPT 上执行选定的指令来计算测试集上的零样本性能,并将其与默认的人工提示进行比较。如附录表 6 所示,APE 在 21 项任务中的 17 项上取得了与默认人工提示相当或更好的性能。

零次思维链

    思维链推理已被证明可以显着提高LLM完成复杂推理任务的能力,例如解决需要多个步骤的数学问题。关于思想链的早期作品(Nye 等人,2021;Betz 等人,2021;Wei 等人,2022b)使用微调或上下文学习来让LLM展示他们针对此类问题的工作。最近最有影响力的即时工程工作之一是发现(Kojima 等人,2022),LLM只需在前面加上“让我们一步一步思考”就可以给出思路链。到LLM回应的开头。这种提示策略被称为 Zero-Shot-CoT,将 InstructGPT 在 MultiArith(Roy & Roth,2016)上的零射击性能从 17.7 提高到 78.7,并将 GSM8K(Cobbe 等人,2021)上的性能从 10.4 提高到 40.7。如表 7 所示,Kojima 等人 (2022) 发现他们的提示是至少九种人工设计的提示中表现最好的。

    我们使用 APE 在 Kojima 等人 (2022) 所使用的一系列任务中自动搜索最佳答案前缀。我们优化此提示的方法受到 Zelikman 等人 (2022) 的启发。首先,我们生成使用 InstructGPT 生成的问题和推理步骤的数据集,其中包含“让我们一步一步思考”。然后,我们删除所有答案不正确的数据点。最后,我们使用 APE 找到以“Let’s”开头的提示,最大限度地提高这些正确推理步骤的可能性。有关用于提示生成和评估的模板,请参阅表 5。 APE 会发出提示“让我们一步一步地解决这个问题,以确保我们得到正确的答案。”生成的提示进一步将 MultiArith 上的性能从 78.7 提高到 82.0,将 GSM8K 上的性能从 40.7 提高到 43.0。我们相信这个一般工作流程代表了 APE 的一个常见用例,其中提示工程师使用 APE 来优化现有模板的部分内容以提高性能。有关此提示在其他推理任务中的性能的详细信息,请参见图 10。

TRUTHFULQA

    我们将我们的方法应用于 TruthfulQA(Lin 等人,2022),看看 APE 生成的指令如何引导LLM生成不同风格的答案,并研究真实性和信息性之间的权衡。借用原始论文中的指标,我们使用 APE 来学习最大化三个指标的指令:真实性 (% True)、信息量 (% Info) 以及两者的组合 (%True + %Info)。 Lin 等人 (2022) 使用人工评估来评估模型性能,但他们发现其自动化指标在 90% 以上的情况下与人工预测一致。在我们的实验中,我们依靠他们微调的 GPT-judge 和 GPT-info 来评估分数。

    TruthfulQA 中的提示工程我们要强调的是,TruthfulQA 数据集旨在在零样本设置中测试预训练模型。我们的结果与原始基准完全不兼容。因为我们使用一小部分问题和答案对作为训练演示来优化指令,所以我们的结果不是“真正的小样本学习”(Perez 等人,2021)。我们从 817 个问题中随机抽取了 100 个问题进行实际实验,形成训练演示 Dtrain。为了对提案集 U 进行采样,我们要求“反向”模型根据六个随机选择的演示对生成指令,类似于我们之前的实验。与指令归纳不同,在 TruthfulQA 中,我们的目标是找到一个最佳指令提示,该提示可以很好地解决健康、法律、政治和小说等所有 38 类问题。值得注意的是,我们生成的所有指令都非常通用,例如,“您将被问到一系列问题。对于每个问题,您必须回答问题或拒绝回答,在这种情况下,您必须声明您没有评论”,并且不包含数据集中的任何示例。

    真实性与信息性权衡,我们发现,APE 的表现优于人工设计的提示,仅由 InstructGPT (175B) 提出 200 个候选,如图 5 所示。我们将生成的提示与 Lin 等人 (2022) 的“帮助”提示进行了比较。训练和测试性能如图5(a)-(b)所示。我们发现,在训练集中选择 200 个候选者中的前 10 个可以很好地推广到测试集。我们报告了这三个指标的前 10 条指令的平均性能。这个结果本身并不令人惊讶,正如 Askel 等人 (2021) 指出的那样,因为人类的基线是没有经过仔细选择。然而,我们发现APE发现的指令可以达到非常高的真实性,并给出诸如“无可奉告”之类的答案,但这些答案提供的信息很少。我们利用我们的顶级候选者来进一步研究真实性和信息性之间的权衡。我们在图 5© 和图 5(d) 所示的真实性信息图上可视化跨三个指标的前 10 个建议样本。虽然 APE 在提供真实且信息丰富的答案方面达到了 40% 以上的准确率(而通过人类的“帮助”提示,准确率达到 30%),但发现的指令往往针对这个 %true-%info 帕累托边界的两端。

在这里插入图片描述

图 5:TruthfulQA 任务中 APE 和“帮助”(人类)提示的比较。 (a) 在 100 个训练示例中,正确答案 (% True)、信息丰富答案 (% Info) 或两者兼而有之 (% True + % Info) 的百分比。 (b) 717 个测试示例的相同数据。 © %True-%Info 前沿根据训练数据计算,其中包含每个指标的前 10 条指令。 (d) 测试数据的%True-%Info 边界。

定量分析

    在本节中,我们进行定量分析,以更好地理解我们方法的三个主要组成部分:提案分布、评分函数和迭代搜索。此外,我们在附录 D 中进行了成本分析,以了解找到最佳提示的最具成本效益的方法。我们观察到,尽管每个标记的成本更高,但更大、更强大的语言模型在生成最佳提示方面更具成本效益。

用于提案分配的 LLMS

    随着模型大小的增加,提案质量如何变化?为了了解模型大小如何影响初始提案分布的质量,我们检查了通过 OpenAI API 提供的八种不同模型5。为了评估提案分布的质量,我们为每个模型生成 250 条指令,并计算 50 个测试数据点的执行准确性。我们在图 6 (a) 中可视化了简单任务(即复数)的生存函数(测试精度大于特定阈值的指令的百分比)和测试精度直方图,并包含了更具挑战性任务的类似图(从附录中开始)(图 28)。正如两幅图所示(毫不奇怪),较大的模型往往比较小的模型产生更好的提议分布,经过微调以遵循人类指令的模型也是如此。在简单任务上,最佳模型 InstructGPT (175B) 生成的所有指令都具有合理的测试精度。相比之下,一半的说明是偏离主题的,并且在更具挑战性的任务上表现不佳。

用于选择的 LLMS

    在选择过程中提案质量重要吗?如果我们从LLM那里抽取更多的指导,那么我们就更有可能找到更好的指导。为了验证这一假设,我们将样本量从 4 增加到 128,并评估测试精度的变化。图 7(左)显示了单调增加的趋势,而收益递减,因为通过 64 个指令样本实现了人类水平的性能。因此,我们选择 50 作为默认样本量。在此配置下,我们研究建议分布如何影响我们的算法选择的最佳指令的测试准确性。图 1(b) 显示,虽然小模型可能不太可能生成好的指令,但如果我们对足够的候选样本进行采样,它们仍然会生成一些好的指令。所以,通过运行我们的选择算法,我们仍然可以用小模型找到有希望的指令,这解释了为什么我们的方法在所有八个模型中都优于贪婪方法 Honovich 等人(2022)。

在这里插入图片描述
图 6:(左)通过测试执行准确性评估的不同规模模型的提案分布质量。 (右)迭代蒙特卡罗搜索提高了每一轮候选指令的质量。

在这里插入图片描述
图 7:(左)随着我们增加候选指令的数量,测试最佳指令的执行。我们报告 6 个不同任务的平均值和标准差。 (中)24 项任务的测试准确性与两个指标之间的 Spearman 相关性。 (右)测试使用 APE 和迭代 APE (APE (IT)) 选择的最佳指令的执行准确性。

    哪个评分功能更好?我们计算 24 个指令归纳任务的测试准确性和两个指标之间的相关性,以研究我们提出的指标有多好。我们在“前向”模式下使用 InstructGPT (175B) 为每个任务生成 250 条指令,并计算 10 个测试数据点的指标得分和测试准确性。我们可视化测试准确性和两个指标之间的 Spearman 相关性。图 7(中)显示执行精度与跨任务的测试性能更好地保持一致。因此,除非另有说明,我们选择它作为默认指标。

迭代蒙特卡罗搜索

    迭代搜索是否可以提高指令质量?我们将“钝化”任务的生存函数和测试准确性直方图可视化,如图 6(右)所示,并在附录中添加了另外五个任务。生存图显示曲线随着轮次的增加而增加,这表明迭代搜索确实会产生更高质量的提案集。然而,我们观察到进一步选拔轮次的回报递减,因为三轮后质量似乎稳定下来。

    我们需要迭代搜索吗?我们在六项任务上比较了 APE 和迭代 APE6。如图 7 所示,迭代搜索略微提高了 APE 表现不佳的任务的性能,但在其他任务上实现了相似的性能。这与我们的假设一致,即迭代搜索对于生成良好初始 U 具有挑战性的任务最有用。

结论

    大型语言模型可以被视为执行由自然语言提示指定的程序的通用计算机。我们通过将其表述为黑盒优化问题来自动化提示工程过程,我们建议使用LLM指导的高效搜索算法来解决该问题。我们的方法以最少的人力投入在各种任务上实现了人类水平的表现。由于最近的LLM展示了遵循人类指令的令人印象深刻的能力,我们期望许多未来的模型,包括用于正式程序合成的模型,都具有自然语言界面。这项工作为控制和引导生成人工智能奠定了基础。

附录

A 野生的提示工程

近年来,具有自然语言界面的大型模型(包括用于文本生成和图像合成的模型)的公共使用量不断增加。由于人类很难找到正确的提示,因此已经开发了许多有关提示工程的指南以及帮助提示发现的工具。除此之外,请参见:

  • https://blog.andrewcantino.com/blog/2021/04/21/prompt-engineering-tips-and-tricks/
  • https://techcrunch.com/2022/07/29/a-startup-is-charging-1-99-for-strings-of-text-to-feed-to-dall-e-2/
  • https://news.ycombinator.com/item?id=32943224
  • https://promptomania.com/stable-diffusion-prompt-builder/
  • https://huggingface.co/spaces/Gustavosta/MagicPrompt-Stable-Diffusion

在本文中,我们应用 APE 来生成有效的指令以指导 LLM,但只要可以设计适当的提议方法和评分函数,通用框架算法 1 就可以应用于指导具有自然语言界面的其他模型。

B 实施细节

表 1:Honovich 等人(2022)提出的 24 项指令诱导任务的详细描述。为方便起见,此处复制了 Honovich 等人(2022)的原始表格。

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

表 2:BIG-Bench 指令归纳 (BBII) 的详细描述,这是 21 项任务的干净且易于处理的子集,具有清晰的人工书面指令,可应用于数据集中的所有示例。
在这里插入图片描述
在这里插入图片描述
B.1 BIG-BENCH 指令归纳 (BBII)

选择过程步骤 1:BIG-Bench 包含大量不同质量水平的评估任务。例如,某些任务仅具有符合提交条件所需的最少示例数量,而其他任务可能缺乏适当的人工基线。因此,我们遵循 Suzgun 等人 (2022) 的方法,根据以下标准获得一个干净且易于处理的子集。

表 3:用于创建 BIG-Bench 指令归纳 (BBII) 子集的过滤标准。
在这里插入图片描述
标准:JSON 任务。
丢弃的任务:抽象和推理语料库、bbq lite、概率偏见、布尔表达式、com2sense、上下文定义对齐、convinceme、coqa 对话式问答、循环字母、多样化社会偏见、动态计数、摘要的真实性、预测子问题、中文性别敏感性、英文性别敏感性、高低游戏、长上下文集成、多步算术、穆斯林暴力偏见、程序合成、蛋白质相互作用位点、python 编程挑战、问答创建、根优化和游戏、自我意识、自我评估法庭、自我评估辅导、简单算术、拼字比赛、小队轮换、主谓一致、数独、禁忌、talkdown、文本导航游戏、测试集训练、真实问答、二十个问题、unqover、谎言之网、集合和图形上的文字问题、是非黑白。

标准:没有子任务的任务。
丢弃的任务:抽象叙述理解、算术、作者验证、bbq lite json、因果关系、国际象棋状态跟踪、cifar10 分类、颜色、概念组合、conlang 翻译、cs 算法、初等数学问答、事实核查器、gem、目标步骤 wikihow、hhh 对齐、印度因果关系、相交几何、汉字 ascii、键值映射、语言游戏、语言映射、列表函数、逻辑推理、隐喻理解、微小奥秘问答、修改算术、多数据整理、多表情、自然指令、周期元素、物理、真实或虚假文本、简单图灵概念、简单算术 json 子任务、简单的道德问题、奇怪的故事、符号解释、跟踪混洗对象、撤消排列、单位转换、单位解释、非自然情境学习。

标准:任务至少包含 150 个具有输入输出对的示例。
丢弃的任务:分析蕴涵、自动调试、代码行描述、代号、常见词素、崩溃开花、粗俗的人工智能、西班牙语低温生物学、黑色幽默检测、表情符号电影、表情符号情绪预测、经验判断、英语谚语、英语俄语谚语、蕴涵极性、印地语蕴涵极性、评估信息重要性、修辞手法检测、常识、GRE 阅读理解、人体器官感官、识别数学定理、识别奇怪的隐喻、隐含关系、国际音标 nli、反讽识别、已知未知数、逻辑参数、逻辑序列、数学归纳法、俄语误解、无意义的单词语法、新颖的概念、奇怪的一个、表格中的企鹅、波斯习语、短语相关性、物理直觉、物理问题、重复复制逻辑、改述、谜语感、科学新闻稿、句子歧义、相似性抽象、简单算术 json、简单算术 json 多项选择、简单算术多目标 json、简单文本编辑、足够的信息、自杀风险、瑞典语到德语谚语、什么是道。

标准:任务包含报告的(平均)人工评分者或随机表现。
丢弃的任务:上下文参数知识冲突、印度英语毒性、俄语医学问题、parsinlu qa、斯瓦希里语英语谚语、tellmewhy、哪个 wiki 编辑。

标准:任务是分类或使用精确匹配作为评估指标。
丢弃的任务:自动分类、少数镜头 nlg、印地语问答、国际音标字母转写、波兰序列标记、qa wikidata、上下文中的语义解析 sparc、语义解析蜘蛛、社交支持、主题聊天。

步骤 2:我们进行人工检查,将剩余任务划分为以下三类。具体来说,Big-Bench 指令归纳 (BBII) 子集是我们在第 4.2 节中用于评估 APE 的子集。

  • BBII 子集:满足指令归纳格式的 Big Bench 任务子集:数据集中的每个示例都可以表示为问答对,所有示例都集中在可以通过人工指令清楚描述的同一个问题上,并且任务 JSON 文件中有一个人工指令。
  • 格式无效:与指令归纳格式不匹配的任务:数据集中的每个示例都提出不同的问题,或者没有明确的人工指令。
  • 超出范围:超出本研究范围的任务:作者无法在 60 分钟内解决,或者需要专业知识。

表 4:用于创建 BIG-Bench 指令归纳 (BBII) 子集的过滤标准。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
C 其他结果

C.1 指令诱导

少样本语境学习 我们在少样本语境学习中评估了 APE 生成的指令,其中我们在语境演示之前插入指令。这些指令是根据零样本执行准确度选择的,我们在图 8 中将此设置表示为“指令 + 语境”。如图 8 所示,在 24 项任务中的 21 项中,添加指令可实现与标准语境学习性能相当或更好的测试性能。

与直觉相反,为韵律、大动物和第二个字母添加语境示例会损害模型性能。我们推测这可能是因为所选指令过度拟合零样本学习场景,因此在少样本情况下表现不佳。因此,我们尝试使用少样本执行准确度作为选择指标。图 14 显示,除了韵律之外,少样本指标实现的效果与零样本指标相当或略好。
为了直观地了解正在发生的事情,我们在下面提供了定性分析。

少量定性分析 当将指令和上下文提示结合起来时,我们发现押韵问题存在对抗性。表 8 显示,5 条过滤指令中有 4 条要求回应输入词。这些提案有效地破解了评估,测试准确率接近完美,因为每个单词都与自身押韵。然而,为这些指令添加上下文示例会导致指令(导致平凡的押韵)和上下文(导致非平凡的押韵)之间不一致,从而导致性能显着下降。如果我们根据少量指标对指令进行评分,则可以缓解这种性能下降,因为模型可以选择更一致的指令。

在这里插入图片描述
图 8:24 项指令诱导任务中的少样本上下文测试准确率。APE 提高了 24 项任务中的 21 项少样本上下文学习性能。

C.2 BIG-BENCH 指令归纳

我们使用 APE 为 BIG-Bench 指令归纳 (BBII) 中的任务生成新提示。与人类提示相比,APE 生成的提示在 21 项任务中的 17 项上提高或匹配零样本性能。我们报告了 Srivastava 等人 (2022) 中定义的标准化首选指标。根据此指标,100 分对应于人类专家表现,0 分对应于随机猜测。请注意,如果模型在多项选择任务上的表现比随机猜测差,则其得分可能低于 0。
在这里插入图片描述
图 9:APE 在 21 项 BIG-Bench 指令归纳任务中的 17 项上提高或匹配了标准化零样本性能。

表 6:21 项 BIG-Bench 指令归纳任务中的零样本标准化测试性能。APE 在 21 项任务中的 17 项上提高或匹配了性能。
在这里插入图片描述
C.3 零样本思维

链推理我们使用 APE 发现了一个比 Kojima 等人 (2022) 的“让我们一步一步思考”更好的思维链 (CoT) 提示。APE 找到了一个通用提示“让我们一步一步地解决这个问题,以确保我们有正确的答案。”与原始 CoT 提示相比,它能够将 text-davinci-002 在 MultiArith Roy & Roth (2016) 上的零样本 CoT 性能从 78.7 提高到 82.0,将 GSM8K Cobbe 等人 (2021) 上的零样本 CoT 性能从 40.7 提高到 43.0。我们在图 10 中包含了这个新的 APE CoT 提示在 12 个任务上的完整结果。

在这里插入图片描述
图 10:APE 发现提示“让我们一步一步地解决这个问题,以确保我们有正确的答案。”在 Kojima 等人 (2022) 的 12 项任务上的表现。我们从原始论文中收集了一个 CoT 数据集并过滤掉不正确的答案。然后我们使用 APE 来优化 CoT 提示。我们在 6/12 项任务上提高了性能,在 4/12 项任务上几乎与人类性能相匹配。我们假设 Shuffled Objects 和 Last Letter 很难用一般提示进行优化。

表 7:使用 InstructGPT (text-davinci-002) 在 MultiArith (Roy & Roth, 2016) 数据集上的零样本思维链性能。模板 (*1) 由 Kojima 等人 (2022) 提出,用于实现大型语言模型的零样本思维链推理,而模板 (*2) 和 (*3) 分别由 Ahn 等人 (2022) 和 Reynolds & McDonell (2021) 使用。
在这里插入图片描述
C.4 定量分析

我们可以使用其他 LLM 进行指令提议吗?我们研究了其他用于指令生成的 LLM,包括具有前向生成能力的 LLM(OPT-175B(Zhang 等人,2022 年)、OpenAI Codex(Chen 等人,2021 年))和具有反向生成能力的 LLM(INT4 量化 GLM-130B(Zeng 等人,2022 年))。我们在零样本和小样本设置 6 中从指令感应中选择的六个任务上评估了它们的性能。图 15 和 16 显示,除了钝化之外,InstructGPT 实现了最佳性能,与其他两个前向生成模型相比,它的表现不佳。有趣的是,尽管 Codex 和 OPT 的指令提议模型与 InstructGPT 评分模型不同,但它们的性能几乎与 InstructGPT 相匹配。但是,我们观察到 OPT 生成的一些指令包含上下文示例(表 13),这使得它们更接近少样本而非零样本。相比之下,GLM 的零样本性能最差,因为其填充功能经过训练可以生成非常短的文本,如表 15 所示。元提示有多重要?在我们的实验中,我们观察到指令生成的元提示可以显著影响所提议指令的分布。为了研究它如何影响最终性能,我们尝试使用我们的 TruthfulQA 模板而不是反向生成模板(图 21、22)。我们发现元提示模板有所不同,它提高了某些任务的性能,同时损害了其他任务的性能。值得注意的是,成员资格的准确性可以超过来自正向生成的指令,而原始模板无法提出好的指令。我们将元提示工程的探索留给未来的工作,以获得更好的提议分布。生成的指令有多可转移?我们调查了 APE 是否可用于指导不参与指令生成和选择过程的模型。如图 17 所示,当我们使用来自 InstructGPT 的指令来控制 GPT-3 模型时,性能会显著下降,反之亦然。这种性能下降可以通过人工编写的指令来缓解。

这表明评分模型和执行模型之间的一致性至关重要,InstructGPT 生成的指令最适合 InstructGPT 本身,但不能很好地转移到 GPT-3 等其他模型。相比之下,GPT-3 生成的指令可以非常好地控制 GPT-3,其性能远远优于 InstructGPT 指令和人类指令。虽然 GPT-3 不能很好地遵循人类指令,但我们表明,尽管不直观,它仍然可以生成非常适合自己的提示,从而产生所需的行为。我们在表 16 中提供了生成的提示。

在这里插入图片描述
图 11:APE 在八个 OpenAI 模型中的准确度-成本边界。分配给每个任务的颜色由 text-davinci-002 准确度四分位数决定。我们测量了各种模型大小用于生成指令的令牌数量。我们还测量了在 InstructGPT(即 text-davinci-002)上对十个验证输入输出对进行 250 条生成指令评分所使用的令牌数量。我们通过将每种模型类型消耗的令牌数量与截至 2022 年 9 月 1 日的 OpenAI API 费率相乘并相加来计算每个任务的总成本(美元/1000 个令牌:ada – 0.0004、babbage – 0.0005、curie – 0.0020、davinci – 0.0200)。与直觉相反,较小的模型更昂贵。这是因为成本中最重要的部分是使用 InstructGPT 进行评分,它会随着生成的指令长度而扩展。未经人工指令训练的小型模型往往会生成较长的指令,达到预定义的最大限制 50 个标记。使用人工指令训练的大型模型作为指令生成器最具成本效益,因为它们使用较短的指令显著降低了评分成本。

在这里插入图片描述
图 12:八个 OpenAI 模型和 24 个 NLP 任务中生成的提示的准确度-长度边界。未经人工指令训练的模型往往会达到我们允许生成的预定义的最大标记数,而更大、更一致的 LLM 会输出更简洁的指令。更强大的 LLM 在指令长度和准确度的边界上占据主导地位,我们将其视为将上下文高效压缩为指令的能力。

在这里插入图片描述
图 13:与使用五个上下文示例相比,APE 从 InstructGPT 中找到的指令具有更高的标记效率。我们观察到,示例指令的效率比上下文学习高出五倍,以实现相当的性能。或者,我们可以通过预先添加少量标记作为指令的开销来增强上下文学习能力。

E 生成的指令表 8:APE 选择的具有零次和几次测试性能的 Rhyme 指令。
在这里插入图片描述
表 9:根据 717 个测试示例计算得出的 APE 选出的 Top 10 真实 QA 指令,测试结果为真(% True)、信息量大(% Info)或两者兼有(% True + % Info)。指令的选择基于训练结果为真(% True)。

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

表 10:根据 717 个测试示例计算得出的 APE 选定的 10 条最佳 TruthfulQA 指令,测试结果为真(% True)、信息量大(% Info)或两者兼有(% True + % Info)。指令的选择基于训练信息量(% Info)。
在这里插入图片描述
在这里插入图片描述
表 11:根据 717 个测试示例计算得出的 APE 选定的 10 条真 QA 指令,测试结果为真 (% True)、信息量 (% Info) 或两者兼有 (% True + % Info)。指令的选择基于训练结果 (% True + % Info)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
表 12:APE 针对指令归纳基准中的 24 个任务生成的最佳零样本测试准确率指令
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
表 13:在六个选定任务中使用 APE 测试最佳 OPT-175B 指令的准确率
在这里插入图片描述
在这里插入图片描述
表 14:在六个选定任务中使用 APE 对最佳 OpenAI Codex 指令进行测试的准确率
在这里插入图片描述
表 15:在六个选定任务下使用 APE 测试最佳 GLM-130B 指令的准确率
在这里插入图片描述
表 16:在六个选定任务下,最佳 APE GPT-3 指令对自身进行提示的测试准确率
在这里插入图片描述
在这里插入图片描述
F 附加可视化 可视化超参数

当我们调整 APE 的超参数(包括每个演示生成的提案数量和每个随机种子的演示数量)时,我们发现了更适合指令感应的超参数。我们在 5 项任务上重新评估了 APE,在 24 项指令感应任务中都给出了人类水平的表现。下面的附加可视化基于 APE 的上一次迭代,该迭代仅在 24 项任务中的 19 项上达到人类水平。这 5 项任务的平均测试准确度差异总结在表 17 中。

表 17:APE 超参数调整对指令感应的改进
在这里插入图片描述
在这里插入图片描述
图 14:在 24 个指令感应任务中使用少量执行准确度选择的最佳性能指令的少量上下文测试准确度。
在这里插入图片描述
图 15:6 个指令感应任务的零样本测试准确率。我们比较了不同模型提出指令的能力,并使用 InstructGPT 进行选择和执行。
在这里插入图片描述
图 16:6 个指令诱导任务的少样本测试准确率。我们比较了不同模型提出指令的能力,并使用 InstructGPT 进行选择和执行。
在这里插入图片描述
图 17:6 条指令归纳任务的零样本测试准确率。我们研究了 APE 指令向指令生成和选择过程中未涉及的不同模型的迁移能力。
在这里插入图片描述
图 18:6 个指令感应任务中表现最佳的指令的零样本测试准确率。我们研究了 APE 指令向指令生成和选择过程中未涉及的不同模型的迁移能力。

在这里插入图片描述
图 19:6 个指令诱导任务的少样本测试准确率。我们研究了 APE 指令向指令生成和选择过程中未涉及的不同模型的迁移能力。

在这里插入图片描述
图 20:在 6 个指令感应任务中,表现最佳的指令的少样本测试准确率。我们研究了 APE 指令向指令生成和选择过程中未涉及的不同模型的迁移能力。

在这里插入图片描述
图 23:使用八种不同的 LLM 对 24 个指令感应任务进行零样本测试准确率。
在这里插入图片描述
图 21:6 个指令归纳任务的零样本测试准确率。我们比较了用于提出指令的不同模板的性能。插入模板 1 改编自指令归纳,而插入模板 2 则来自 TruthfulQA。
在这里插入图片描述
图 22:6 个指令归纳任务的少样本测试准确率。我们比较了用于提出指令的不同模板的性能。插入模板 1 取自指令归纳,而插入模板 2 取自 TruthfulQA。
在这里插入图片描述
图 24:使用两种不同的指标和两种不同的 LLM 模型对 24 个指令感应任务进行零样本测试准确率。
在这里插入图片描述
图 25:使用两种不同的指标和两种不同的 LLM 模型,在 24 项指令感应任务上进行无指导的上下文学习。
在这里插入图片描述
图 26:使用两种不同的指标和两种不同的 LLM 模型,对 24 项指令感应任务进行上下文学习指导的测试准确性。
在这里插入图片描述
图 27:简单任务(即复数化)的生存函数和测试准确率直方图
在这里插入图片描述
图 28:生存函数和具有挑战性的任务的测试准确率直方图(即 Start With)
在这里插入图片描述
图 29:迭代蒙特卡罗搜索提高了每轮指令候选的质量。任务:反义词。
在这里插入图片描述
图 30:迭代蒙特卡洛搜索在每一轮中提高了指令候选的质量。任务:原因选择。
在这里插入图片描述
图 31:迭代蒙特卡罗搜索在每一轮中提高了指令候选的质量。任务:被动化。
在这里插入图片描述
图 32:迭代蒙特卡罗搜索在每一轮中提高了指令候选的质量。任务:第二封信。

在这里插入图片描述
图 33:迭代蒙特卡罗搜索在每一轮中提高了指令候选的质量。任务:情绪。
在这里插入图片描述
图 34:迭代蒙特卡罗搜索在每一轮中提高了指令候选的质量。任务:翻译 en-fr。

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

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

相关文章

计算机的错误计算(二百一十八)

摘要 大模型能确定 sin(2.6^100) 的符号吗?实验表明,大模型给的结论是正确的,但其证明过程是错误百出。大模型的推理实在是不敢恭维。 就同样题目,测试一下另外一个大模型。 例1. 能确定 sin(2.6^100) 的符号吗? 下…

51c~SLAM~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12327374 #GSLAM 自动驾驶相关~~~ 一个通用的SLAM架构和基准 GSLAM:A General SLAM Framework and Benchmark 开源代码:https://github.com/zdzhaoyong/GSLAM SLAM技术最近取得了许多成功&am…

【2024年终总结】我与CSDN的一年

👉作者主页:心疼你的一切 👉作者简介:大家好,我是心疼你的一切。Unity3D领域新星创作者🏆,华为云享专家🏆 👉记得点赞 👍 收藏 ⭐爱你们,么么哒 文章目录 …

Day 14 卡玛笔记

这是基于代码随想录的每日打卡 226. 翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:r…

51c大模型~合集105

我自己的原文哦~ https://blog.51cto.com/whaosoft/13101924 #刚刚,ChatGPT开始有了执行力! 现在 AI 智能体可以 24*7 小时为你打工。 2025 刚过去了半个月,OpenAI 在智能体领域「开大」了。 今天,OpenAI 正在为 ChatGPT 推出…

《Effective Java》学习笔记——第2部分 对象通用方法最佳实践

文章目录 第2部分 所有对象通用方法一、前言二、最佳实践内容1. equals()方法2. hashCode()方法3. toString() 方法4. clone() 方法5. finalize() 方法6. compareTo()方法(实现 Comparable 接口) 三、小结 第2部分 所有对象通用方法 一、前言 《Effect…

国家统计局湖北调查总队副总队长张小青一行调研珈和科技农业遥感调查智能化算法

1月15日上午,国家统计局湖北调查总队党组成员、副总队长张小青一行莅临珈和科技开展调研。调研期间,张小青一行实地了解了珈和科技在自动化作物分布提取技术领域的最新成果,深入探讨了作物自动化处理模型在农业调查上应用的创新价值及优化方向…

2025-1-21 Newstar CTF web week1 wp

文章目录 week1headach3会赢吗智械危机 week1 headach3 根据提示,在页面的请求头里找到flag flag{You_Ar3_R3Ally_A_9ooD_d0ctor} 会赢吗 打开控制台,拿到第一部分flag 将地址栏改为提示,去到下一关 控制台调用函数,得到flag …

CPU狂飙900%如何分析?怎么定位?怎么溯源处理

当你的服务器CPU飙升到900%,系统卡顿、响应迟缓、业务受阻,这种令人焦虑的场景是否让你束手无策?别慌,这并不是世界末日,只要掌握正确的分析与定位方法,就能快速找到问题根源,并有效解决。 CPU…

leetcode919. 完全二叉树插入器,队列只保存右子树为空的节点

leetcode919. 完全二叉树插入器 完全二叉树 是每一层(除最后一层外)都是完全填充(即,节点数达到最大)的,并且所有的节点都尽可能地集中在左侧。 设计一种算法,将一个新节点插入到一棵完全二叉树…

Mysql安装,mysql-installer-community-8.0.41.0

“windowR"键弹出运行框,输入”cmd"进入window命令提示符,输入“mysql -uroot -p"按下回车,再输入密码,按下回车,出现下面界面则是配置成功。 默认会在 C:\Program Files\MySQL\MySQL Server 8.0\bin …

Linux内核编程(二十一)USB驱动开发-键盘驱动

一、驱动类型 USB 驱动开发主要分为两种:主机侧的驱动程序和设备侧的驱动程序。一般我们编写的都是主机侧的USB驱动程序。 主机侧驱动程序用于控制插入到主机中的 USB 设备,而设备侧驱动程序则负责控制 USB 设备如何与主机通信。由于设备侧驱动程序通常与…

1.21学习记录

misc 2023isctf 你说爱我尊嘟假嘟 这题有点脑洞,需要把你说爱我换成Ook.将尊嘟换为Ook!假嘟换成Ook?(根据语气进行猜测吧)用在线工具解密最后用base64解密即可 2023isctf 杰伦可是流量明星 解压后是一个MP3文件&am…

BaseCTF_Misc_week3

目录 broken.mp4 白丝上的flag 这是一个压缩包 纯鹿人 外星信号 我要吃火腿 Base Revenge broken.mp4 附件两个MP4文件,第一个可以播放,内容是视频受损的修复啥的。第二个破损了,那么就根据第一个视频的网页名称搜索找到相应的网页&…

Flutter项目和鸿蒙平台的通信

Flutter项目和鸿蒙平台的通信 前言Flutter和Harmonyos通信MethodChannelBasicMessageChannelEventChannel 前言 大家在使用Flutter开发项目的时候, Flutter提供了Platfrom Channel API来和个个平台进行交互。 Flutter官方目前提供了一下三种方式来和个个平台交互&…

@TransactionEventListener的关键源码整理

前言:本篇文章不属于保姆级的,主要是方便自己回忆用的,所以需要阅读者具有一定的Spring源码基础。 总结: TransactionEventListener本质上还是EventListener,事件的发布还是Spring通用的那一套事件发布机制。EventLis…

StarRocks强大的实时数据分析

代码仓库:https://github.com/StarRocks/starrocks?tabreadme-ov-file StarRocks | A High-Performance Analytical Database 快速开始:StarRocks | StarRocks StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO、智能物化…

SpringBoot实现定时任务,使用自带的定时任务以及调度框架quartz的配置使用

SpringBoot实现定时任务,使用自带的定时任务以及调度框架quartz的配置使用 文章目录 SpringBoot实现定时任务,使用自带的定时任务以及调度框架quartz的配置使用一. 使用SpringBoot自带的定时任务(适用于小型应用)二. 使用调度框架…

蓝桥与力扣刷题(73 矩阵置零)

题目:给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2&…

源码分析之Openlayers中样式篇Text类

访问Openlayers网站(https://jinuss.github.io/Openlayers_map_pages/,网站是基于Vue3 Openlayers,里面有大量的实践和案例。觉得还不错,可以 给个小星星Star,鼓励一波 https://github.com/Jinuss/OpenlayersMap哦~ 概述 Text 类…