前言
前几天在翻资料的时候,发现了亚马逊的这个课程,于是就兴致冲冲的找到地址开始学习,就是下面这个地址大家感兴趣的话也可以看看,下面就分享这个课程中关于提示词的部分,我觉得还是挺全面的,希望大家喜欢也给自己一个学习记录。
技术开发技能-生成式AI精英速成计划 (amazoncloud.cn)
提示工程基础知识
简介
提示工程是一个新兴的重要领域,旨在优化我们应用、开发和理解语言模型(特别是大模型)的方式。它的核心是设计提示和交互,以提升语言技术的能力、解决其弱点,以及深入了解其运作情况。提示工程为我们提供了策略和技术,助力我们突破语言模型及其应用的可能性边界。
基础模型
生成式 AI 作为一种人工智能,可以生成新的内容和想法,例如对话、故事、图像、视频和音乐。与所有其他人工智能 (AI, artificial intelligence) 一样,生成式 AI 由机器学习 (ML, machine learning) 模型提供支持。然而,为生成式 AI 提供支持的模型非常庞大,通常称为基础模型 (FM, foundation model)。FM 通常通过自监督学习基于大量数据进行预训练。FM 使用深度神经网络来模拟人脑功能并处理复杂的任务。
基础模型要经过不同阶段的训练才能达到最佳效果。主要就是以下三个阶段
- 预训练:
在训练阶段,FM 使用自监督学习或基于人类反馈的强化学习 (RLHF, reinforcement learning from human feedback) 从大量数据集中捕获数据。FM 的算法可以学习数据集中单词的含义、上下文和关系。例如,在训练阶段,模型可能会学习 drink 是指饮料(名词),还是饮用(动词)。此外,在预训练期间可以使用基于人类反馈的强化学习 (RLHF, reinforcement learning from human feedback) 技术来使模型更好地适应人类偏好。在这种方法中,人类提供关于模型结果的反馈,然后模型又使用这些信息来改变其行为。
- 微调:
虽然 FM 是通过自监督学习进行预训练的,并且具有理解信息的内在能力,但是微调 FM 基础模型可以提高性能。微调是有监督学习过程,涉及采用经过预训练的模型并添加特定的较小数据集。添加这些较小的数据集将修改数据的权重,以更好地适应任务。
有以下两种微调模型的方法:
- 指令微调,该方法使用关于模型应如何响应特定指令的示例。提示调整是指令微调的一种。
- RLHF,该方法提供人类反馈数据,从而产生更符合人类偏好的模型。
下面我们来探讨一个微调的使用案例。如果您正在处理一项需要行业知识的任务,您可以采用一个经过预训练的模型,然后使用行业数据对该模型进行微调。例如,如果这项任务涉及医学研究,则可以使用医学期刊上的文章对经过预训练的该模型进行微调,以获得更符合背景的结果。
- 提示工程:
提示充当基础模型的指令。提示类似于微调,但您不需要提供对模型进行微调时所提供的标注样本数据。您可以使用各种提示技术来实现更好的性能。与需要标注数据和训练基础设施的微调相比,提示工程是一种调整 LLM 响应的更有效方法。
FM的类型:文本到文本模型和文本到图像模型
- 文本到文本模型:文本到文本模型是大语言模型 (LLM, large language model),这种模型经过预训练,用于处理大量文本数据和人类语言。这些大型基础模型可以总结文本、提取信息、回答问题、创建内容(例如博客或产品描述)等。
NLP 是一种机器学习技术,赋予机器解释和操纵人类语言的能力。NLP 通过分析信息中的数据、意图或情绪并对人类交流做出反应,来实现这一点。通常,要实现 NLP,首先要收集和准备不同来源的非结构化文本或语音数据并处理这些数据。它使用标记化、词干提取、词形还原、停用词删除、词性标注、命名实体识别、语音识别、情感分析等技术。然而,现代 LLM 不需要使用这些中间步骤。
RNN 使用记忆机制来存储和应用来自先前输入的数据。借助这种机制,RNN 能够有效地处理序列数据和任务,例如自然语言处理、语音识别或机器翻译。然而,RNN 也有局限性。它们训练起来缓慢且复杂,并且不能用于训练并行化。
Transformer 是一种深度学习架构,具有将输入文本转换为嵌入的编码器组件。它还具有使用嵌入来发出一些输出文本的解码器组件。与 RNN 不同,Transformer 具有极高的并行性,这意味着在学习周期内 Transformer 不是一次处理一个文本单词,而是同时处理所有输入。这样一来,Transformer 可以显著缩短训练时间,但需要更多的计算能力来加快训练速度。Transformer 架构是 LLM 开发的关键。
- 文本到图像模型:文本到图像模型接受自然语言输入,并生成与输入文本描述相匹配的高质量图像。文本到图像模型的一些示例包括 OpenAI 推出的 DALL-E 2、谷歌研究大脑团队推出的 Imagen、Stability AI 推出的 Diffusion 以及 Midjourney。
扩散模型是一种深度学习架构系统,它通过两步过程进行学习。第一步称为前向扩散。利用前向扩散,系统逐渐向输入图像引入少量噪声,直到只剩下噪声。有一个 U-Net 模型可以跟踪和预测噪声水平。随后,第二步是逆向扩散,对噪声图像逐步进行去噪,直到生成新图像。在训练过程中,模型获得文本馈送,并将其添加到图像向量中。
大语言模型
大语言模型 (LLM, Large language model) 是基础模型的子集。LLM 在许多自然语言任务中基于数万亿个单词进行训练。LLM 可以理解、学习和生成与人类产生的文本几乎没有区别的文本。LLM 还可以进行交互式对话、回答问题、总结对话和文档以及提供建议。
由于其庞大的规模和 AI 加速,LLM 可以处理大量的文本数据。LLM 具有广泛的能力,例如营销创意写作、总结法律文件、为金融团队准备市场研究、为医疗保健行业模拟临床试验,以及为软件开发编写代码。
Transformer
Transformer 模型对于自然语言处理非常有效,因为它们使用神经网络来理解人类语言的细微差别。神经网络是模仿人脑的计算系统。单个 LLM 包含多个神经网络层,这些神经网络层协同工作来处理输入并生成输出。
嵌入层用于将输入文本转换为称为嵌入的向量表示。这一层可以捕获嵌入之间的复杂关系,从而使模型可以理解输入文本的上下文。
前 馈层由多个互联的层组成,这些层将嵌入转换为其自身更高权重的版本。从本质上讲,这一层继续将语言置于上下文中,并帮助模型更好地理解输入文本的意图。
使用注意力机制,模型可以关注输入文本中最相关的部分。该机制是 Transformer 模型的核心部分,可帮助模型获得最准确的输出结果。
提示工程基础
提示工程是一个新兴的领域,专注于开发、设计和优化提示,以增强 LLM 的输出,从而满足您的需求。它为您提供了一种引导模型的行为从而达到您想要实现的结果的方法。
- 提示的要素:
提示的形式取决于您给模型指定的任务。当您探索提示工程示例时,您会注意到提示包含以下部分或全部要素:
-
- 指令:这是大语言模型要执行的任务。它提供模型应如何执行任务的描述或说明。
-
- 上下文:这是用于引导模型的外部信息。
-
- 输入数据:这是需要响应的输入。
-
- 输出指示:这是输出类型或格式。
-
设计有效提示
-
- 简明扼要:提示应该简单明了,避免含糊不清。清晰的提示会产生更有条理的响应。用自然流畅的语言和连贯的句子结构撰写提示。避免使用孤立的关键字和短语。
-
- 上下文:提供各种附加上下文,帮助模型准确做出响应。例如,如果您要求模型分析一个企业,可包含有关企业类型的信息。该公司是做什么的?在输入中提供这种类型的详细信息会生成更相关的输出。您提供的上下文可以在多个输入之间通用,也可以特定于每个输入。
-
- 适当的响应指令:如果您需要获得特定的输出形式,例如摘要、问题或诗歌,请直接指定响应类型。您还可以按长度、格式、包含的信息、排除的信息等限制响应。
-
- 考虑输出:在提示末尾提及请求获得的输出,以使模型专注于输出适当的内容。
-
- 以疑问句提问:将您的输入表述为问题,以谁、什么、哪里、何时、为什么和如何等词语开头。
-
- 提供示例响应:在提示中使用预期的输出格式作为示例响应。用括号把它括起来,以表明它是一个示例。
-
-
分解复杂任务:当被要求执行复杂的任务时,基础模型可能会感到困惑。使用以下技术分解复杂的任务:
- 将任务划分为多个子任务。如果您不能得到可靠的结果,请尝试将任务拆分为多个提示。
- 询问模型是否理解您的指令。根据模型的回应提供澄清。
- 如果您不知道如何将任务分解为子任务,请让模型一步一步地思考。本课程稍后部分将详细介绍这种类型的提示技术。此方法可能不适用于所有模型,但您可以尝试重新表述指令,使任务更容易理解。例如,您可以要求模型将任务划分为子任务,系统地处理问题,或者一次一步地对问题进行推理。(思维链)
-
-
- 反复尝试发挥创意:尝试使用不同的提示来优化模型的响应。确定哪些提示可以获得有效的结果,哪些提示获得的结果不准确。相应地调整您的提示。新颖且发人深省的提示可以带来创新性的结果。
提示类型和技术
基础技巧
- 零样本提示:用户向 LLM 提出任务,而不给模型提供进一步示例。
- 小样本提示:为模型提供有关所请求执行的任务的上下文信息。在这种技术中,您同时提供任务和所需输出的示例。在提示条件中提供此上下文或少量样本,可以使模型严格遵循任务指导。
- 思维链提示:思维链 (CoT, chain-of-thought) 提示通过中间推理步骤分解复杂的推理任务。您可以将零样本提示技术和小样本提示技术与 CoT 提示结合使用。 思维链提示特定于问题类型。您可以使用短语“一步一步地思考”在机器学习模型中调用 CoT 推理。
高级技巧
- 自洽性:自洽性是一种类似于思维链提示的提示技术。首先对一组不同的推理路径进行采样,而不是只采用贪婪的推理路径,然后通过边缘化采样的推理路径来选择最一致的答案。根据王学志等人撰写的文章“利用自洽性提高语言模型中的思维链推理效果”(Self-Consistency Improves Chain of Thought Reasoning in Language Models),当用于一系列常见算术和常识推理基准时,自洽性可以改进 CoT 推理提示。
- 思维树:思维树 (ToT, Tree of thoughts) 是另一种基于 CoT 提示技术的技术。CoT 提示按顺序对思维进行采样,但 ToT 提示遵循树分支技术。通过 ToT 技术,LLM 可以采用细致入微的方式学习,考虑多条路径而不是一条顺序路径。
-
检索增强生成:检索增强生成 (RAG, Retrieval Augmented Generation) 是一种提示技术,它提供领域相关的数据作为上下文,以基于这些数据和提示生成响应。该技术类似于微调。然而,RAG 不必使用一小组标注示例对 FM 进行微调,而是从大型语料库中检索一小组相关文档,并使用这些文档提供上下文来回答问题。RAG 不会改变基础模型的权重,而微调会改变模型权重。
-
ReAct 提示(构建agent):在 ReAct 提示中,LLM 可以将推理和动作结合起来。根据 Shunyu Yao 的文章“ReAct:语言模型中推理和动作的协同作用”(ReAct: Synergizing Reasoning and Acting in Language Models),模型通常用于推理或动作,但并不总是能同时有效地用于这两者。
CoT 提示表明 LLM 有望为简单的任务(例如数学)进行推理和生成动作。但是,无法在 CoT 提示下更新信息或访问外部上下文,可能会导致输出发生事实幻觉等错误。借助 ReAct 框架,LLM 可以生成基于外部工具(例如维基百科页面或 SQL 数据库)的推理跟踪和特定于任务的动作。这种外部上下文可产生更准确可靠的输出。
大模型参数
- temperature 控制随机性。较低的值侧重于可能的令牌,较高的值会增加随机性和多样性。对事实性响应使用较低的值,对创造性响应使用较高的值。
- top_p 通过“核心采样”来调整确定性。较低的值会给出准确响应,而较高的值会给出多样性响应。此值控制模型响应的多样性。
- top_k 是要保留用于 top-k 过滤的最高概率词汇表令牌的数量。与 top_p 参数类似,top_k 定义了模型不再选择单词的截止值。
- minTokens 是为每个响应生成的最小令牌数。
- maxTokenCount 是在停止之前要生成的最大令牌数。
- stopSequences 是将导致模型停止生成响应的字符串列表。
- numResults 是要为给定提示生成的响应数。
- frequencyPenalty 是应用于频繁生成的令牌的惩罚。
- presencePenalty 是应用于提示中已存在的令牌的惩罚。
- countPenalty 是基于令牌在生成的响应中出现的频率而应用于令牌的惩罚。
对抗性提示
- 提示注入
提示注入是一种通过使用提示中的指令来影响模型输出的技术。
例如,黑客可能会向文本生成模型提供包含有害、不道德或有偏差的内容的提示,以生成类似的有害、不道德或有偏差的文本。然后,黑客可以使用此文本大规模生成假新闻、教义宣传或其他恶意内容。
提示注入还可用于非恶意活动,例如覆盖模型的响应、自定义翻译以保留产品名称等。
为避免提示注入,请尝试在提示中添加防护机制。请查看以下示例,该示例在提示指令中提供了防护机制。
- 提示泄露
提示泄露是指生成式 AI 系统可能通过其生成的提示或示例泄露敏感或私人信息的风险。
例如,如果系统使用私人客户数据进行训练以生成产品建议,则可能会泄露有关客户购物的详细信息。该系统还可能通过为新客户生成的建议泄露有关客户浏览历史记录的详细信息。这可能会侵犯客户的隐私,影响客户对系统的信任。
总结
当然这个课程不止这一部分,有两节必学,还有三选二,我学了前两个,提示词工程就是三选二中的第一个。不管未来如何,对AI的热情不变,继续前行。AI的道路上你我同行,共勉。