人工智能在技术界完全革命了一切。
它模仿人类智能的能力,能够执行曾经被认为只能由人类完成的任务,仍然让我们大部分人感到惊喜。
然而,无论这些最新的人工智能进展有多好,总是有改进的空间。
而这正是启发式工程的作用所在!
进入这个领域可以显著提高人工智能模型的生产力。
让我们一起来探索吧!
启发式工程的本质
启发式工程是人工智能领域中快速发展的一个领域,专注于改善语言模型的效率和效果。它的核心是制作完美的提示,以指导人工智能模型生成我们期望的输出结果。
可以认为它就像是学习如何给某人更好的指示,以确保对方理解并正确执行任务。
为什么启发式工程很重要
- 提高生产力:使用高质量的提示,人工智能模型可以生成更准确和相关的回应。这意味着减少了纠正错误的时间,更好地利用人工智能的能力。
- 成本效益:训练人工智能模型需要消耗大量资源。通过优化模型性能,优化模型并减少重新训练的需求,启发式工程可以提高成本效益。
- 多功能性:制作精心设计的提示可以使人工智能模型更加灵活,使其能够应对更广泛的任务和挑战。
在深入探讨最先进的技术之前,让我们回顾一下最有用(也最基本)的启发式工程技术。
基本启发式工程方法的一瞥
带着“让我们一步步思考”进行顺序思考
今天众所周知,当添加词序列“让我们一步步思考”时,LLM模型的准确性显著提高。
为什么。。。你可能会问。
嗯,这是因为我们强迫模型将任何任务分解为多个步骤,从而确保模型有足够的时间处理每个步骤。
例如,我可以用以下提示向GPT3.5提出挑战:
如果约翰有5个梨,然后吃掉2个,再买5个,然后给朋友3个,那么他有多少个梨?
模型将立即给我一个答案。然而,如果我添加最后的“让我们一步步思考”,我就是在强迫模型生成一个具有多个步骤的思维过程。
少量样本提示
零样本提示是指在提供任何上下文或先前知识的情况下要求模型执行任务,而少量样本提示技术则意味着我们向LLM提供一些目标输出的示例和一些特定的问题。
例如,如果我们想创建一个以抒情语调定义任何术语的模型,可能很难解释。对吧?
然而,我们可以使用以下少量样本提示来引导模型朝着我们想要的方向发展。
您的任务是以与以下样式一致的方式回答。
<用户>: 教我有关韧性的知识。
<系统>: 韧性就像一棵随风摇曳但从不折断的树。
它是从逆境中反弹并继续前进的能力。
<用户>: 在此处输入您的内容。
如果您还没有尝试过,可以向GPT发出挑战。
然而,我相信您大多数人已经了解这些基本技术,因此我将尝试用一些高级技术来挑战您。
高级提示工程技术
1. 思维链(CoT)提示
谷歌在2022年引入了这种方法,它涉及让模型在提供最终回答之前经历多个推理阶段。
听起来很熟悉对吧?如果是这样,你完全正确。
它就像将顺序思维和少样本提示合并在一起。
如何实现呢?
实质上,CoT提示指导LLM按顺序处理信息。这意味着我们会用多个步骤的推理示例来解决第一个问题,然后将我们真正的任务发送给模型,期望它在回答我们想要解决的实际查询时模拟出相似的思维链。
所以,按照第一个示例,我们可以提供一个提示,其中包含了第一个问题的问题和逐步解决问题的序列解释。然后,我们可以发送我们的输入,看魔法般的结果!
<用户> 如果约翰有5个梨,然后吃了2个,再买了5个,然后给了他的朋友3个,他现在有多少个梨?让我们逐步思考。
<代理> 让我们逐步思考。约翰开始有5个梨。他吃掉了2个梨,所以他还剩下5-2=3个梨。然后,他买了5个梨。所以,他现在有3 + 5 = 8个梨。最后,他给了他的朋友3个梨。因此,他还剩下8-3 = 5个梨。所以,在所有这些步骤之后,约翰有5个梨。
<用户> 在这里输入你的问题。
然而,你们中的大多数人可能会想…我必须每次想要在ChatGPT上询问问题时都考虑到解决问题的顺序吗?
嗯…你不是第一个这样想的人!这就引出了…
2. 自动思维链(Auto-CoT)
2022年,张和同事们提出了一种避免这种手动过程的方法。避免任何手动任务有两个主要原因:
- 这可能会变得枯燥。
- 可能会产生糟糕的结果-例如,当我们的思维过程错误时。
他们建议使用LLM结合“逐步思考”的提示,逐步产生每个演示的推理链。
这意味着询问ChatGPT如何逐步解决任何问题,然后使用这个相同的示例来训练它如何解决其他任何问题。
3. 自我一致性
自我一致性是另一种有趣的提示技术,旨在改进思维链提示以解决更复杂的推理问题。
那么…主要区别是什么呢?
自我一致性的主要思想是意识到我们可以用错误的示例训练模型。想象一下,如果我用错误的思维过程解决了前面的问题:
<用户> 如果约翰有5个梨,然后吃了2个,再买了5个,然后给了他的朋友3个,他现在有多少个梨?让我们逐步思考。
<代理> 从5个梨开始。约翰吃掉了2个梨。然后,他给了他的朋友3个梨。这些操作可以合并:2(被吃掉的)+ 3(被给掉的)= 总共受影响的5个梨。现在,从初始的5个梨中减去总共受影响的梨:5(初始)- 5(受影响)= 0个梨剩下。然后,我发送给模型的任何其他任务都会是错误的。
这就是为什么自我一致性涉及从不同的推理路径中进行抽样,每个路径都包含一系列的思维链,然后让LLM选择解决问题的最佳和最一致的路径。
在这种情况下,再次以第一个示例为例,我们可以向模型展示解决问题的不同方式。
<用户> 如果约翰有5个梨,然后吃掉2个,再买5个,然后给了3个给他的朋友,他还剩下多少个梨?
<代理> 从5个梨开始。约翰吃掉2个梨,剩下3个梨。他购买了5个梨,总共有3 + 5 = 8个梨。最后,他把3个梨给了他的朋友,所以他剩下了8-3 = 5个梨。
<用户> 如果约翰有5个梨,然后吃掉2个,再买5个,然后给了3个给他的朋友,他还剩下多少个梨?
<代理> 从5个梨开始。然后他再购买了5个梨。约翰现在吃掉了2个梨。这些动作可以合并:2(已吃)+ 5(已购买)=总共7个梨。从梨的总数中减去约翰已经吃掉的梨:7(总数)- 2(已吃)= 剩下5个梨。
<用户> 在这里输入你的内容。
现在是最后一个技巧的出现。
4. 常识知识提示
一个常见的提示工程做法就是在向GPT-3或GPT-4发出最终的API调用之前,给查询添加额外的知识。
根据的说法,我们总是可以在任何请求中添加一些知识,使LLM对问题有更好的了解。
所以例如,在询问ChatGPT高尔夫的一部分是否是尽力获得比别人更高的总分时,它会验证我们。但是,高尔夫的主要目标恰恰相反。这就是为什么我们可以添加一些先前的知识告诉它“得分较低的球员获胜”。
那么…如果我们正告诉模型答案,这有什么有趣的一面呢?
在这种情况下,这种技术用于改善LLM与我们的互动方式。
因此,与其从外部数据库中提取补充的上下文,该论文的作者建议LLM产生自己的知识。然后将这些自动生成的知识整合到提示中,以增强常识推理并产生更好的输出。
因此,这就是如何在不增加LLM训练数据集的情况下改进LLM!
最后的思考
提示工程已经成为增强LLM功能的关键技术。通过迭代和改进提示,我们可以以更直接的方式与AI模型进行通信,从而获得更准确和上下文相关的输出,节省时间和资源。
对于科技爱好者、数据科学家和内容创作者来说,了解和掌握提示工程可以成为利用人工智能的全部潜力的宝贵资产。
通过将精心设计的输入提示与这些更高级的技术结合起来,掌握提示工程的技能无疑将在未来几年中给您带来优势。
[Josep Ferrer](https://www.linkedin.com/in/josep-ferrer-sanchez)是一名来自巴塞罗那的分析工程师。他毕业于物理工程专业,目前在人类移动性的数据科学领域工作。他是一名兼职内容创作者,专注于数据科学和技术。您可以通过LinkedIn、Twitter或VoAGI与他联系。