博客

  • 探索Prompt工程:引导大型语言模型的行为


    在当今人工智能领域,大型语言模型(LLM)的发展已经成为引领技术潮流的关键因素之一。在这篇博文中,我们将深入探讨Prompt工程,也被称为上下文引导。Prompt工程旨在引导LLM的行为,从而实现期望的输出结果,而无需更新模型权重。这是一个实证科学,不同的Prompt工程方法对模型的影响可能会有很大差异,因此需要进行大量的实验和试错。

    基础Prompt工程

    在我们深入研究Prompt工程之前,让我们先来了解一些基础知识。Zero-shot和Few-shot学习是两种最基本的提示模型的方法,它们由许多LLM论文开创,并常用于评估LLM的性能。

    Zero-shot

    Zero-shot学习是将任务文本直接输入模型,并要求输出结果。例如,我们可以输入文本“我打赌视频游戏比电影更有趣。”并询问情感极性,从而进行Zero-shot学习。

    Few-shot

    Few-shot学习则会呈现一组高质量的示例,每个示例都包含输入和期望的输出。在模型首次接触到良好的示例后,它可以更好地理解人类意图和所需答案的标准。因此,Few-shot学习往往会带来比Zero-shot更好的性能。然而,这样做的代价是更多的标记消耗,并且在输入和输出文本较长时可能会触及上下文长度限制。

    示例选择的技巧

    很多研究都在探讨如何构建上下文示例以最大化性能,并观察到提示格式、训练示例以及示例顺序的选择可能会导致截然不同的性能,从随机猜测到接近最先进的水平。

    自一致抽样

    自一致抽样是指使用温度大于0的抽样多个输出,然后从这些候选者中选择最佳结果。选择最佳候选者的标准可能因任务而异。一般来说,选择多数票是一个通用的解决方案。

    连续思维(CoT)提示

    连续思维提示是指逐步生成一系列简短的句子,描述推理逻辑的步骤,最终得出最终答案。CoT的好处在于对于复杂的推理任务,特别是使用参数超过50亿的大型模型时,效果更加显著。而对于简单的任务,CoT的好处略有。

    CoT提示的两种主要类型:

    • Few-shot CoT:用少量示例提示模型,每个示例都包含手动编写(或模型生成的)高质量推理链。
    • Zero-shot CoT:使用自然语言陈述,如“让我们一步一步思考”,显式鼓励模型首先生成推理链,然后提示因此,答案是。

    自动提示设计

    提示是一系列前缀标记,它增加了在给定输入情况下获得期望输出的概率。因此,我们可以将它们视为可训练的参数,并直接在嵌入空间上进行优化。例如,AutoPrompt、Prefix-Tuning、P-tuning和Prompt-Tuning等方法,逐渐简化了设置过程。

    增强型语言模型

    一项对增强型语言模型的调查提到了多种类型的语言模型,这些模型具有推理能力和使用外部工具的能力。该调查提供了很好的覆盖。

    检索

    经常我们需要完成在模型预训练时间截止后或内部/私有知识库之外的最新知识的任务。在这种情况下,如果我们不在提示中提供上下文,模型将无法了解情境。许多开放领域问题回答的方法依赖于首先对知识库进行检索,然后将检索到的内容作为提示的一部分。这一过程的准确性取决于检索和生成步骤的质量。

    编程语言

    PAL(Program-aided language models)和PoT(Program of Thoughts prompting)要求LLM生成编程语言语句来解决自然语言推理问题,因此将复杂计算和推理步骤分离。它依赖于具有足够良好编码能力的LLM。

    外部API

    TALM(Tool Augmented Language Models)是一种使用文本到文本API调用的增强语言模型。LM被引导生成|工具调用和工具输入文本,条件是任务输入文本构建API调用请求。最终输出是在|输出标记之后生成的。

    有用资源

    本文提供了OpenAI Cookbook、LangChain和Prompt Engineering Guide等资源,它们都是使用LLM的优秀范例。

    通过这篇博文,我们深入了解了Prompt工程和相关的方法,以及它们在引导大型语言模型方面的作用。这些方法不仅是技术上的创新,也是对人工智能应用领域的重要贡献。希望这篇文章对您有所帮助!🚀📚


  • 提示工程:引领语言模型走向卓越 🤖

    大家好,我是语言模型领域的研究者,也是一位热衷于探索人工智能奥秘的博主。今天,我想和大家聊聊一个非常有趣且重要的概念——提示工程(Prompt Engineering)。

    什么是提示工程?

    提示工程是指通过精心设计输入给语言模型的提示语,来引导模型生成我们想要的结果。它就像是在和语言模型进行一场对话,通过巧妙地提问和引导,我们可以让模型发挥出更强大的能力。

    为什么提示工程如此重要?

    随着语言模型的不断发展,它们已经展现出了令人惊叹的文本生成能力。然而,要让语言模型真正发挥出它们的潜力,就需要我们掌握提示工程的技巧。通过精心设计的提示语,我们可以让语言模型完成各种各样的任务,从撰写文章、生成代码,到回答复杂的问题等等。

    提示工程的基本原则

    零样本学习与小样本学习

    零样本学习是指不提供任何示例的情况下,直接让语言模型完成任务。小样本学习则是提供少量示例,帮助模型理解任务要求。

    示例选择

    在小样本学习中,示例的选择至关重要。好的示例应该能够代表任务的整体分布,并且具有多样性。我们可以使用聚类、图论等方法来选择高质量的示例。

    示例排序

    示例的排序也会影响模型的性能。一般来说,我们可以将示例按相关性、多样性和随机性进行排序,以避免模型产生偏差。

    进阶提示工程技巧

    指令式提示

    指令式提示是指直接告诉语言模型我们要完成的任务,并给出明确的指令。这种方法可以提高模型的准确性,但需要我们对任务有深入的了解。

    链式推理

    链式推理是指将任务分解成一系列推理步骤,然后让语言模型一步一步地进行推理。这种方法可以帮助模型更好地理解复杂的任务,并生成更具逻辑性的输出。

    自动提示设计

    我们可以使用梯度下降等优化方法,直接优化提示语,以获得更好的性能。这是一种非常强大的技术,但需要一定的专业知识。

    增强型语言模型

    除了提示工程之外,我们还可以通过增强语言模型本身的能力来提高模型的性能。例如,我们可以使用检索技术来获取外部知识,或者使用编程语言来执行复杂的任务。

    总结

    提示工程是一门艺术,也是一门科学。通过掌握提示工程的技巧,我们可以让语言模型发挥出更强大的能力,完成各种各样的任务。希望这篇文章能够帮助大家更好地理解和使用提示工程。

    参考文献

    [1] Lilian Weng. Prompt Engineering. Lil’Log. https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/

    [2] OpenAI Cookbook. https://github.com/openai/openai-cookbook

    [3] LangChain. https://github.com/huggingface/langchain

    [4] Prompt Engineering Guide. https://github.com/NielsRogge/Prompt-Engineering-Guide

    [5] learnprompting.org. https://learnprompting.org/

    [6] PromptPerfect. https://github.com/minimaxir/promptperfect

    [7] Semantic Kernel. https://github.com/thunlp/Semantical-Kernel

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网 沪ICP备2024052574号-1