思维链提示有助于提高LLMs的推理能力

通过示例演示

Photo by Juan Rumimpunu on Unsplash

大型语言模型(LLMs)被证明在解决从摘要文档到用不同编程语言编写代码等各种任务方面非常高效。

此外,随着新发布的模型(如ChatGPT和GPT-4),它们的表现只会越来越好,为基于LLM的应用程序开启了无限的机会。

与其非凡的技能相反,LLMs有时会无法展示非常简单的推理能力,无法解决小学四年级学生可以轻松解决的问题。

在这个领域已经进行了大量的研究,旨在了解为什么LLMs无法执行此类任务,并使它们变得更好。

其中一个关注这个特定问题的研究是由谷歌研究、脑团队介绍的链式思考提示。

链式思考提示

一种具有结构{输入,思考链,输出}的提示技术,其中思考链是一系列中间的自然语言推理步骤。

模型被给予一些带有输入和输出的示例(少数样本学习),然后问一个涉及多步或算术推理任务的问题。

本文的关键点:

  • 链式思考提示优于标准提示。
  • 链式思考提示和标准提示之间的差异在较大的模型上变得更加明显。链式提示的性能提高与模型的参数数量成比例。

链式思考提示技术只是逐步解决问题。每个步骤都基于逻辑推理。这是一个例子:

问题:John有2个房子。每个房子有3间卧室,每间卧室有2个窗户。每个房子有1个带2个窗户的厨房。此外,每个房子都有5个不在卧室或厨房的窗户。John的房子有多少个窗户?

答案:每个房子有3个卧室,每个卧室有2个窗户,共6个卧室窗户。每个房子有1个带2个窗户的厨房,共2个厨房窗户。还有5个不在厨房或卧室的窗户。因此,每个房子有6 + 2 + 5 = 13个窗户。由于有2个房子,因此John的房子里有2 x 13 = 26个窗户。

您可以采取不同的步骤来得出正确的答案。对于这种问题,几乎总会有多种路径可以得到答案。

在标准提示中,我们只需向LLM提问上述问题,并期望它给出答案。让我们试试:

# model: text-davinci-003prompt = """John有2个房子。每个房子有3间卧室,每间卧室有2个窗户。每个房子有1个带2个窗户的厨房。此外,每个房子都有5个不在卧室或厨房的窗户。John的房子有多少个窗户?"""# model response"There are a total of 32 windows in John's houses."

错误的答案!

我们不知道模型是如何得出这个答案的,这带给我们另一个链式思考提示的优势。模型以逐步回答的方式回复,这使得调试过程更容易。我们可以轻松地发现问题出在哪里。

使用链式提示技术,我们将几个问题及其答案添加到提示中以进行少量示例提示。答案以逐步解决方案的形式呈现(即演示思考链)。

这是更新后的提示和模型的响应:

# model: text-davinci-003prompt = """问:林地里有15棵树。林地工人今天将在林地中种植树。完成后,将有21棵树。林地工人今天种了多少棵树?答:最初有15棵树。然后种植了更多的树,共21棵。因此,必须有21-15 = 6。答案是6。问:停车场有3辆汽车,再来2辆汽车,停车场有多少辆汽车?答:最初有3辆汽车。再来2辆汽车,3 + 2 = 5。答案是5。问:Leah有32颗巧克力,她的姐姐有42颗。如果他们吃掉35颗,那么他们总共剩下多少块?答案:最初,Leah有32颗巧克力。她的姐姐有42颗。因此,总共有32 + 42 = 74颗。吃掉35个后,他们剩下了74-35 = 39个。答案是39。问:Jason有20个棒棒糖。他给Denny一些棒棒糖。现在Jason只剩下12个棒棒糖。Jason给Denny多少个棒棒糖?答案:Jason最初有20个棒棒糖。然后他给Denny一些棒棒糖,剩下12个。因此,他给了Denny 20-12 = 8个。答案是8。问:Shawn有五个玩具。圣诞节,他从他的父母那里得到了两个玩具。他现在有多少玩具?答案:Shawn最初有5个玩具。如果他从他的父母那里得到了2个玩具,则还有4个玩具。5 + 4 = 9。答案是9。问:John有2个房子。每个房子有3间卧室,每间卧室有2个窗户。每个房子有1个带2个窗户的厨房。此外,每个房子都有5个不在卧室或厨房的窗户。John的房子有多少个窗户?答案:"""# model response"John有2个房子。每个房子都有3间卧室,每间卧室都有2个窗户,1个带2个窗户的厨房和5个不在卧室或厨房的窗户。因此,每个房子有3 x 2 + 2 + 5 = 13个窗户。总共有2 x 13 = 26个窗户。答案是26。"

正确的答案!

响应是模型思维过程的逐步解释(思维链),就像提示中显示的示例一样。

让我们再看一个例子。这是标准提示版本:

# model: text-davinci-003prompt = """我们在10天内有一个重要会议,这是在2022年08/24产品发布前5天。今天是MM/DD/YYYY是多少?"""# model response"08/14/2022"

错误的答案!

让我们尝试使用提供一些输入输出示例的思维链提示来回答相同的问题(少量学习):

# model: text-davinci-003prompt = """Q:林中有15棵树。林务工人员今天将在林中种树。完成后,将有21棵树。林务工人员今天种了多少棵树?A:最初有15棵树。然后,种了更多的树后有21棵树。所以今天种了21-15=6棵树。答案是6。 Q:如果停车场有3辆车,又有2辆车来了,停车场有多少辆车?A:最初有3辆车。又来了2辆车。3+2=5。答案是5。Q:2015年还有36小时即将到来。从今天起一周后的日期是MM/DD/YYYY?A:如果2015年还有36小时即将到来,那么它将在2天内到来。 01/01/2015前2天是12/30/2014,所以今天是12/30/2014。所以从今天算起一周后是01/05/2015。答案是01/05/2015。Q:肖恩有五个玩具。圣诞节时,他从他的父母那里得到了两个玩具。现在他有多少个玩具?A:肖恩开始有5个玩具。如果他从他的父母那里得到了2个玩具,那么就有4个玩具。5 + 4 = 9。答案是9。Q:我们在10天内有一个重要会议,这是在2022年08/24产品发布前5天。今天是MM/DD/YYYY是多少?A:"""# model response"如果产品发布时间是08/24/2022,则提前10天是''08/14/2022。提前5天是08/09/2022。所以今天是08/09/2022。''答案是08/09/2022。"

正确的答案!

最终的话

思维链提示显然增加了LLM在某些任务上的能力。如果您想了解更多关于他们进行的实验,请阅读整篇论文。

值得注意的是,正如论文中也提到的那样,只有应用于具有大约1000亿个参数的模型时,思维链提示的好处才变得明显,并且它不会显着增强较小模型的性能。

实验结果得出结论,较小的模型产生流畅但不合逻辑的思维链,这导致比标准提示表现更差。

参考文献

Wei,Jason等(2022)。链式思维提示引出大型语言模型的推理。ArXiv。 https://arxiv.org/abs/2201.11903