从大模型的原理到提示词优化

简介: 本文介绍了大语言模型(LLM)的基本概念及其工作原理,重点探讨了AI提示词(Prompt)的重要性和几种有效技巧,包括角色设定、One-shot/Few-shot、任务拆解和思维链。通过实例解析,展示了如何利用这些技巧提升LLM的输出质量和准确性,强调了提供高质量上下文信息对优化LLM表现的关键作用。

@[toc]
  大语言模型(后文简称LLM)已经火热了近两年,相信大家或多或少都学习过一些Prompt技巧。但你有没有思考过:为什么使用这些Prompt能得到更好的输出结果?为什么有时你怎么试都得不到想要的结果?为什么有些任务LLM根本无法完成?接下来,我们通过一个简单示例来了解LLM的运行过程。理解这个过程后,你自然就能回答上述问题了。

什么是AI提示词(Prompt)

  谈到AI应用,大家首个浮现在脑海中的词汇往往是AI提示词(Prompt)。用一句话概括:AI提示词是我们向AI系统(如ChatGPT)输入的指令或问题,用于引导AI生成特定输出或完成特定任务。 这些提示词可以是简单的问题,也可以是复杂的指令集。

例如:

  • 简单问题:"谁发明了电话?"
  • 复杂指令:"请以营销专家的角度,为一款新上市的智能手表撰写一篇300字的产品介绍。"
  • 创意要求:"写一首关于人工智能的七言绝句。"

  这些例子展示了AI提示词的多样性和适应性。从简单的查询到复杂的创意任务,提示词能满足各种需求。掌握如何有效构建这些提示词对获得理想的AI输出至关重要。

接下来,我们将深入探讨提示词为何对AI结果影响如此之大,以及它们如何影响LLM的工作过程。

为什么提示词对AI结果的影响很大

  要回答这个问题,我们首先需要大致了解LLM的运作过程。用一句话概括:LLM始终在预测下一个最可能出现的词(Token)
让我们通过一个给小孩子启蒙用的句子补全练习,来了解LLM是如何工作的。

  • 请补全这句话:我午饭吃了(_) 。
    可以填入的候选词有 披萨、垃圾桶、香蕉、盖饭、轮胎、砖头、面条、餐巾纸、包子、白云、油条、汉堡。

  从语法角度来看,所有候选项都可以填入,因为它们都是名词。但从语义上考虑,这里只能填写食物。因此,我们可以排除餐巾纸、垃圾桶、轮胎、砖头和白云,剩下盖饭、面条、披萨、汉堡、包子、油条和香蕉这些词都有可能。

  从上文的关键词"午饭"来看,在没有其他上下文的情况下,我只能根据个人饮食习惯对这些食物的可能性进行排序。结果依次是:盖饭、面条、披萨、汉堡、包子、油条、香蕉。但即便如此,我们仍然无法确定具体是哪一个。那么,如果我们提供更多的背景信息会怎样呢?

  • 我今天在西安出差,午饭吃了(_) 。

  在这个上下文中,新增了"西安"这个关键词。众所周知,西安是中国的面食之都,所以来到西安怎能不品尝面食呢?在这种情况下,"面条"无疑是最合适的填入词。然而,如果我们再增加一些上下文信息,情况又会有所不同。比如:

  • 我今天在西安出差,但时间比较紧,中午就去了汉堡王,午饭吃了(_) 。

  到这里,你肯定会斩钉截铁地说应该填写"汉堡"。虽然前面的文字中有"中午"和"西安"这两个关键词,但它们对候选项的影响权重远不及"汉堡王"高。

  这实际上就是LLM执行一次预测的过程。整个LLM回复问题的过程就是不断重复这些步骤,持续预测下一个词(token)应该是什么,直到模型认为回答完成或达到最大长度限制。

实际上一次LLM完整的回答过程示例如下:

步骤 当前状态 预测出下一个词(Token) 用户看到的结果
0
1 今天 我今天
2 我今天 我今天在
3 我今天在 西安 我今天在西安
4 我今天在西安 出差 我今天在西安出差
5 我今天在西安出差 我今天在西安出差,
6 我今天在西安出差, 我今天在西安出差,但
7 我今天在西安出差,但 时间 我今天在西安出差,但时间
8 我今天在西安出差,但时间 比较 我今天在西安出差,但时间比较
9 我今天在西安出差,但时间比较 我今天在西安出差,但时间比较紧
…… ………… …… …………
n-2 我今天在西安出差,但时间比较紧,中午就去了汉堡王,午饭 吃了 我今天在西安出差,但时间比较紧,中午就去了汉堡王,午饭吃了
n-1 我今天在西安出差,但时间比较紧,中午就去了汉堡王,午饭吃了 汉堡 我今天在西安出差,但时间比较紧,中午就去了汉堡王,午饭吃了汉堡
n 我今天在西安出差,但时间比较紧,中午就去了汉堡王,午饭吃了汉堡 我今天在西安出差,但时间比较紧,中午就去了汉堡王,午饭吃了汉堡。

其中预测出下一个词列就是LLM在回答你问题时一个接一个生成的词。当整个过程执行完毕,你就得到了LLM的完整回复。LLM的大致执行过程确实很简单,但复杂之处在于每次计算下一个词(token)时,它需要调动前面所有Token所涉及的庞大参数,然后去计算词表中所有词的可能性,并从中选出概率最高的一个(Temperature为0时)。这个计算量非常大,因此LLM需要消耗大量算力,也导致它返回结果较慢。

10月23日(1).gif

  • 冷知识:正是因为LLM回复的过程是不断通过预测来补全文本,所以OpenAI的对话接口叫completion。

  经过大量文本训练后,LLM不仅学会了各种知识,还掌握了文本中蕴含的语义和逻辑关系。通过使用已有的词(Token),LLM能够计算出下一个最合适的词(Token),从而神奇地展现出媲美人类的语言能力(这一现象学术界至今没有统一的解释)。通过上述简单例子,我们可以直观地理解为什么不同的Prompt会对模型的输出产生巨大影响。

  理解了LLM的工作原理后,我们就能更好地编写提示词。提示词的本质是为LLM提供充足的背景和上下文信息,使其能生成更符合我们需求的文本内容,而好的提示器可以在有限的文本中提供更多有效的上下文,触发模型更多的参数,从而能得到更丰富多样更优质的结果。接下来,让我们探讨几个常见且有效的提示词技巧。

角色的重要性

  许多提示词模板都会设定角色,这是一个非常有效的策略。让我们用一个简单的例子来解释原因。假设你要向某个心智尚未完全成熟、理解能力有限、知识储备不丰富的人讲解某个主题。这里你用了一长串描述来界定你的受众,而我只需用三个字——"小学生"就能代替。一提到"小学生",你就能自动联想到一系列相关的背景信息,无需我再多加解释,对LLM来说也是类似的。我们可以将角色视为一个包含大量背景信息的压缩包。这就是为什么设定角色能如此有效地改善提示词的原因。

  • 心智未完全发展成熟、理解水平有限、而且知识储备不是很丰富的人 == 小学生

  类似地,特定领域的名词、术语和关键词也起着相同的作用。这些词汇就像是特定领域知识的压缩包,能够迅速激活相关的专业背景和上下文,从而达到与设定角色相似的效果。

One-shot/Few-shot

  这俩提示词技巧直白来说,其实就是给大模型一些参考样例,One-shot就是给定单个样本,Few-shot是给定多个样本。 从LLM工作原理的角度来看,提供样本(One-shot或Few-shot)能够提升输出质量,主要有以下几个原因:

  1. 增加上下文信息: 样本为LLM提供了更多的上下文信息,这些信息会影响模型在预测下一个词(token)时的概率分布,从而引导模型生成更符合预期的输出。
  2. 示范任务格式: 样本展示了任务的具体格式和结构,使LLM更容易理解和模仿所需的输出形式。这相当于为模型提供了一个"模板",增加了输出与预期一致的可能性。
  3. 激活相关知识: 提供样本能帮助LLM更准确地识别任务类型和所需知识领域。这样,LLM可以在其庞大的参数空间中激活与任务相关的"知识",从而提高输出的相关性和准确性。
  4. 降低歧义性: 某些情况下,任务描述可能存在歧义。提供样本可以明确任务的具体要求,减少LLM误解或偏离主题的可能性。

任务拆解

  任务拆解是另外一种高效的提示词技巧,它将复杂问题分解为更小、更易管理的部分。这种方法不仅帮助LLM更好地理解和处理问题,还能显著提高整体回答质量。通过将大任务拆分成一系列小步骤,我们能更精确地引导LLM的思考过程,从而获得更准确、更全面的回答。

从LLM的工作原理来看,任务拆解和多次问答能提升回答质量,主要原因如下:

  1. 上下文增强:每次问答都为LLM提供新的上下文信息,影响模型预测下一个词(token)的概率分布,使后续回答更精准。
  2. 缓解长期依赖:通过任务拆解,每个子任务的输入相对简短,减少了LLM在处理长文本时可能出现的"遗忘"早期信息问题。
  3. 交互式引导:多次问答过程中,用户可根据LLM的回答调整后续问题,逐步引导模型得出更准确的结果。
  4. 简化复杂任务:将复杂任务拆解为多个简单子任务,每个子任务更易被LLM准确理解和回答,从而提高整体质量。
  5. 及时纠错:多次问答提供了多个检查点,用户可在中间步骤发现并纠正潜在错误,避免错误累积。

  这个技巧不仅提高了LLM的回答质量,还增强了用户与AI之间的交互体验。通过任务拆解和多次问答,用户可以更精确地引导LLM的思考方向,同时更深入地理解AI的推理过程。这种方法不仅适用于简单查询,还特别有效地解决复杂问题和进行深度分析。接下来,让我们探讨另一个强大的技巧——思维链。它进一步推进了这种交互式问题解决的方法,为我们开启了更多可能性。

思维链(Chain of Thought)

  思维链技巧的核心是让大语言模型展示其推理过程。这种方法特别适用于需要逐步推理或复杂计算的问题。通过让LLM呈现其思考过程,我们不仅能获得更准确的答案,还能洞察模型如何得出结论。这种透明度在验证结果正确性和理解模型推理能力方面极为宝贵。具体使用方式很简单:在提示词中要求模型输出过程。一个"魔法"提示词是"Let's think step by step"(让我们一步步思考),在中文语境中也可以直接使用。

  从理论转向实践,让我们通过一个具体例子深入理解思维链技巧的应用。这个例子不仅展示了思维链的实际效果,还能帮助我们更好地理解LLM如何利用这种方法提高问题解决的准确性和透明度。我们将用一个小学数学应用题来说明思维链的有效性:

  • 甲乙丙丁4个人去买水果,甲买了3斤苹果、5斤梨、1斤香蕉,乙买了4斤苹果、3斤梨、5斤香蕉,丙买了1斤苹果、3斤梨、6斤香蕉,丁买了1斤苹果、10斤梨、1斤香蕉。已知苹果一斤2元、梨一斤3元、香蕉一斤4元,请按他们各自的总消费额度由高到低排序。

image2131231.png

  如果你现在询问主流的几个模型,它们都能给出推理过程以及正确答案:乙 > 丁 > 丙 > 甲。然而,当我们限制LLM直接给出答案而不提供推理过程时,所有的大模型都会出错。如果你使用不同的模型多次尝试,你会发现在这个限制下,所有模型都是在瞎猜。

  思维链的有效性源于其与任务拆解相似的机制。通过思维链,LLM能够自主地将复杂问题分解为一系列小步骤,每一步都为下一步提供了额外的上下文信息。这个过程不仅增强了模型的推理能力,还能让用户更清晰地了解LLM的思考过程。与任务拆解由用户主导不同,思维链让LLM在生成答案的过程中自动创建和利用中间步骤,从而提高了回答的准确性和可解释性。

总结

  我们从LLM的运行机制来看,其实真正的Prompt技巧就只有一个,那就是提供更多高质量的上下文, 这些技巧都是为了实现这一目标。无论是设定角色、使用示例、任务拆解还是思维链,它们的核心都在于为LLM提供更丰富、更精确的上下文信息,从而引导模型生成更符合我们期望的输出。通过这些方法,我们可以更好地利用LLM的强大能力,实现更精准、更高效的人机交互。

  在理解LLM的运行机制后,我愈发觉得,与LLM沟通和与人沟通并无本质区别,两者都需要清晰的表达、适当的上下文和对方的反馈。与LLM交流时,我们需要提供足够的背景信息,使用恰当的提示技巧,并根据其回应进行调整。这种交互过程与人际沟通有着惊人的相似之处,都需要我们不断优化和调整我们的表达方式,才能达到最佳的沟通效果。

  最后,教大家一个判断自己Prompt质量的直观小技巧:把你的Prompt展示给周围的人,让他们尝试完成你的任务。如果他们直接开始思考如何实现,而不是问你一堆问题,那么你就写出了一个好的Prompt。

目录
相关文章
|
19天前
|
数据采集 机器人 计算机视觉
一手训练,多手应用:国防科大提出灵巧手抓取策略迁移新方案
【10月更文挑战第24天】国防科技大学研究人员提出了一种新颖的机器人抓取方法,通过学习统一的策略模型,实现不同灵巧夹具之间的策略迁移。该方法分为两个阶段:与夹具无关的策略模型预测关键点位移,与夹具相关的适配模型将位移转换为关节调整。实验结果显示,该方法在抓取成功率、稳定性和速度方面显著优于基线方法。论文地址:https://arxiv.org/abs/2404.09150
25 1
|
1月前
|
人工智能 前端开发
大模型体验体验报告:OpenAI-O1内置思维链和多个llm组合出的COT有啥区别?传统道家理论+中学生物理奥赛题测试,名不虚传还是名副其实?
一个月前,o1发布时,虽然让人提前体验,但自己并未进行测试。近期终于有机会使用,却仍忘记第一时间测试。本文通过两个测试案例展示了o1的强大能力:一是关于丹田及练气的详细解答,二是解决一道复杂的中学生物理奥赛题。o1的知识面广泛、推理迅速,令人印象深刻。未来,或许可以通过赋予o1更多能力,使其在更多领域发挥作用。如果你有好的测试题,欢迎留言,一起探索o1的潜力。
|
1月前
|
机器学习/深度学习 算法 TensorFlow
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决
学习率是深度学习中的关键超参数,它影响模型的训练进度和收敛性,过大或过小的学习率都会对网络训练产生负面影响,需要通过适当的设置和调整策略来优化。
283 0
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决
|
4月前
|
机器学习/深度学习 搜索推荐 知识图谱
图神经网络加持,突破传统推荐系统局限!北大港大联合提出SelfGNN:有效降低信息过载与数据噪声影响
【7月更文挑战第22天】北大港大联手打造SelfGNN,一种结合图神经网络与自监督学习的推荐系统,专攻信息过载及数据噪声难题。SelfGNN通过短期图捕获实时用户兴趣,利用自增强学习提升模型鲁棒性,实现多时间尺度动态行为建模,大幅优化推荐准确度与时效性。经四大真实数据集测试,SelfGNN在准确性和抗噪能力上超越现有模型。尽管如此,高计算复杂度及对图构建质量的依赖仍是待克服挑战。[详细论文](https://arxiv.org/abs/2405.20878)。
80 5
|
4月前
|
人工智能 SEO
Sora信息问题之sora使用过程中的注意事项如何解决
Sora信息问题之sora使用过程中的注意事项如何解决
65 0
|
4月前
|
图形学
Sora信息问题之使用数据驱动的物理引擎进行训练如何解决
Sora信息问题之使用数据驱动的物理引擎进行训练如何解决
24 0
|
6月前
|
人工智能 自然语言处理 测试技术
论文介绍:LLMLingua-2——面向高效忠实任务无关性提示压缩的数据蒸馏方法
【5月更文挑战第2天】LLMLingua-2是一种针对大型语言模型(LLMs)的数据蒸馏方法,旨在实现高效且忠实的提示压缩。通过从LLMs中提取知识,该方法在压缩提示的同时保持关键信息,提高模型泛化能力和效率。采用Transformer编码器,LLMLingua-2将提示压缩转化为标记分类问题,确保压缩后的提示忠实度并减少延迟。实验表明,该方法在多个数据集上优于基线,并在压缩延迟上取得显著改进,但也存在泛化能力和扩展性限制。论文链接:https://arxiv.org/abs/2403.12968
126 5
|
6月前
|
数据采集 人工智能 算法
你要牢记的四个常用AI提示词框架:ICIO、CRISPE、BROKE、RASCEF,有助于获取更加稳定和高质量的内容
你要牢记的四个常用AI提示词框架:ICIO、CRISPE、BROKE、RASCEF,有助于获取更加稳定和高质量的内容
|
6月前
R语言估计多元标记的潜过程混合效应模型(lcmm)分析心理测试的认知过程
R语言估计多元标记的潜过程混合效应模型(lcmm)分析心理测试的认知过程
|
6月前
|
自然语言处理 安全 算法
23REPEAT方法:软工顶会ICSE ‘23 大模型在代码智能领域持续学习 代表性样本重放(选择信息丰富且多样化的示例) + 基于可塑权重巩固EWC的自适应参数正则化 【网安AIGC专题11.22】
23REPEAT方法:软工顶会ICSE ‘23 大模型在代码智能领域持续学习 代表性样本重放(选择信息丰富且多样化的示例) + 基于可塑权重巩固EWC的自适应参数正则化 【网安AIGC专题11.22】
150 0
23REPEAT方法:软工顶会ICSE ‘23 大模型在代码智能领域持续学习 代表性样本重放(选择信息丰富且多样化的示例) + 基于可塑权重巩固EWC的自适应参数正则化 【网安AIGC专题11.22】