链式思考CoT

Chain of Thought, CoT。来自于Wei等人(2022),他们在提示中引入中间推理步骤,能够提高推理的准确性。

更进一步的是零样本CoT(Kojima等人,2022年)。只需要在prompt中增加一句“Let's think step by step”,让我们一步一步想清楚,就可以大幅度提高准确性。文献中报道如果使用text-davinci-002,能够将准确率在数据集 MultiArith上从17.7%提高至78.7%,在数据集GSM8K上将准确率从10.4%提高到40.7%

promptingguide.ai上给出的示例:

  • 提示:

我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。我还剩下多少苹果?

  • 输出:

11个苹果

答案是不正确的!现在让我们尝试使用特殊提示。

  • 提示:

我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。我还剩下多少苹果? 让我们逐步思考。

  • 输出:

首先,您从10个苹果开始。 您给了邻居和修理工各2个苹果,所以您还剩下6个苹果。 然后您买了5个苹果,所以现在您有11个苹果。 最后,您吃了1个苹果,所以您还剩下10个苹果。

写出来

观察上面使用了“让我们逐步思考”的例子,可以发现,大语言模型(Large language model,LLM)在推理时,会把所有的过程给写出来。这在提示工程中非常重要,因为LLM的本质是根据前文不断预测下一个单词,所以它并没有“心里想”的过程。当要求它逐步思考时,它就会把思考过程都写下来,一边写,一边思考。

不要心算三位数乘法

我们试试先。

  • 读者,请您心算28x28,同时记录一下时间,看看算出正确结果需要多久?
  • 读者,请您再心算281x289,也记录一下时间,看看算出正确结果需要多久?

跑个题,28x28,我可以做到1秒内出结果。这是一个简单的测试,如果一个人对人工智能侃侃而谈,那么可以问问它28x28等于多少,如果不能够秒出结果,说明它根本没有真正写过任何一个人工智能程序,是个忽悠。因为这是MNIST数据集中图片的尺寸,这是一个手写数字做图像识别的数据集,通常被人们拿来做最简单的演示,相当于任何语言中的hello world程序,基本的流程是首先要把图片转换成一行数据,也就是要把28x28个数据,拉成784x1的形态。因此,但凡上过任何人工智能/机器学习/深度学习第一课的人,都见过28x28=784。

但第二题281x289,我算不出来。不借助纸和笔或者计算器,我怎样也算不正确。

在心算三位数乘法上,我恐怕还比不上LLM。

那么,请各位回忆一下自己平时上班开会的场景。回忆一个讨论特别复杂特别重要的事情的会议,比如讨论某个与企业生命相关的重大决策问题,或者疑难疾病的会诊,又或者是关系到辖区内国计民生的大事。有人真的拿出笔和纸把思路写下来么? 如果没有的话,这些问题是不是比心算三位数乘法更容易一些呢?

再设想一个场景,比如数学期末考试地最后一题,可以集合你们年级数学最好的10个同学一起开会求解,但不准使用笔和纸、计算器、或者黑板,只准心算,就像你们日后工作中经常开的会议那样。你觉得这年级数学十强能够解出正确答案么?

让我们一步一步思考并且把过程写下来

这就是应用于人类提示工程的第一课。如果你想解决某个问题,或者想让其他人或者AI帮你解决某个问题,并且这个问题的难度比三位数乘法要困难一些。那么请先对你自己、你的人类伙伴和AI伙伴说:

让我们一步一步思考并且把过程写下来!