提示工程指南(五):思维链(Chain-of-Thought,CoT)基础与初步使用

1,389 阅读6分钟

系列文章导览

导言

笔者由于工作原因需要使用LLM来完成一些网络安全相关的任务,但是笔者在调研后发现,目前讲解LLM的技术文章普遍集中于单个小点,而鲜有体系化讲解LLM使用的文章,因此,笔者准备从LLM使用者的角度出发,即不考虑LLM的训练与全参数微调等,仅仅是调用一个已训练好的LLM的api,系统化的讲解LLM的各种使用技巧——即提示工程。

基础的关于提示工程的东西在之前的文章中已经讲完了,接下来的文章将聚焦于提示工程的各种高级技巧,包括COT、RAG等等。目前来说,LLM的前沿技术的特点就是,产研不分离。原来的技术都是先出现论文,而后等技术路线成熟后,才会应用于工业界,而现在的LLM则是产研一体了。因此接下来的博文将会直接依据于LLM的各种论文来写。

本篇文章主要介绍思维链(Chain-of-Thought,CoT)的基础知识和基础的使用方法。

思维链基础概念

链式思维(Chain-of-Thought,CoT)提示[1]通过在prompt中引入中间推理步骤,启发了模型的复杂推理能力。从而在复杂任务上获得更好的结果。具体而言,CoT要求模型在生成最终答案之前,首先生成一个或多个中间计算结果。即再给出答案之前生成一系列简短的句子来逐步描述推理逻辑,这些逻辑被称为推理链或理由链,最终引导出最终答案

针对于大型模型(参数大于50B)和复杂的推理任务,COT的性能提升较为明显。而对于简单任务,CoT提示的性能提升较小。

在原论文中,复杂的推理任务指:算术推理、常识推理、符号推理。

如下图所示:

image.png

举个例子:

样例:

  • 问题: 一个正方形的长是5厘米。请问它的面积是多少平方厘米?

  • 思考过程:

  1. 我们知道正方形的所有边都是相等的,所以这个正方形的边长是5厘米。
  2. 正方形的面积可以通过边长的平方来计算,即面积 = 边长 × 边长。
  3. 将边长5厘米代入公式,我们得到面积 = 5厘米 × 5厘米 = 25平方厘米。
  4. 所以,这个正方形的面积是25平方厘米。

问题: 一个长方形的长是它的宽的4倍。如果长方形的宽是10厘米,那么它的面积是多少平方厘米?请根据上述步骤计算结果。

例如,如果要模型求解一个数学问题,CoT提示会给出可以让模型模仿的思考过程,而后要求模型按照上述步骤计算结果。所谓的思维链指的就是这四步中间计算过程。

思维链的分类

思维链可以分为两种:

  • zero-shot思维链
  • few-shot思维链

zero-shot思维链

在上边的例子中,我们先给模型一个例子,即先告诉模型如何计算一个正方形的面积,这实际是属于few-shot思维链。因为它先给了模型示例。那么什么是zero-shot呢

零次链式思维(Zero-shot CoT)提示是一种不需要预先提供示范推理链(例子)的方法。它依赖于语言的引导,使模型理解需要进行逐步推理的过程。通过使用这种引导性的语言指引模型去生成一个详细的、分步的推理过程,最终得出结论或答案。

这里的“语言的引导”其实非常简单,比如:

  • “让我们一步一步思考(Let's think step by step)”,明确鼓励模型首先生成推理链,然后使用“因此,答案是(Therefore, the answer is)”来让模型生成答案[2]
  • “让我们一步一步解决这个问题,确保我们得到正确的答案(Let's work this out it a step by step to be sure we have the right answer)”[3]。

这种方法的优势在于简洁和灵活。不需要准备复杂示例,而是直接通过引导性的语言来激发模型的推理能力。

同样举个例子:

问题:

一个长方形的长是它的宽的4倍。如果长方形的宽是10厘米,那么它的面积是多少平方厘米?请一步步的计算结果。

这里,我们没有给模型示例逻辑链,而是在问题后边加上一个请一步步的计算结果。来指示模型输出中间步骤。

few-shot思维链

相对于zero-shot的prompt,few-shot是指通过在prompt中提供几个示例,每个示例都包含人工编写(或模型生成)的高质量推理链

再次给出之前的例子:

样例:

  • 问题: 一个正方形的长是5厘米。请问它的面积是多少平方厘米?

  • 思考过程:

  1. 我们知道正方形的所有边都是相等的,所以这个正方形的边长是5厘米。
  2. 正方形的面积可以通过边长的平方来计算,即面积 = 边长 × 边长。
  3. 将边长5厘米代入公式,我们得到面积 = 5厘米 × 5厘米 = 25平方厘米。
  4. 所以,这个正方形的面积是25平方厘米。

问题: 一个长方形的长是它的宽的4倍。如果长方形的宽是10厘米,那么它的面积是多少平方厘米?请根据上述步骤计算结果。

这里我们给出了一个样例(指正方形面积问题),然后给出了一个人工写的高质量推理链(指思考过程),而后让模型求解相似问题。

思维链的实验结果

接下来依据论文中对于CoT提示的测试进行分析:

所用模型

作者用来比较的大语言模型:

  • GPT-3 (OpenAI) text-ada-001, text-babbage-001, text-curie-001, and text-davinci-002 350M, 1.3B, 6.7B, and 175B parameters
  • LaMDA (Google) 422M, 2B, 8B, 68B, and 137B parameters.
  • PaLM (Google) 8B, 62B, and 540B parameters.
  • UL2 (Google) 20B parameters.
  • Codex (OpenAI) code-davinci-002 175B parameters.

image.png

这要的实验结论就是:50B(500亿参数)参数量以下的模型效果不好,侧面反映了他们的instruct fine-tune不够,COT很难激发他的in-context 推理能力。而在50B以上模型效果很好,甚至超过了之前基于监督训练的SOTA模型。

引用

[1] Wei J, Wang X, Schuurmans D, et al. Chain-of-thought prompting elicits reasoning in large language models[J]. Advances in neural information processing systems, 2022, 35: 24824-24837.

[2]Kojima T, Gu S S, Reid M, et al. Large language models are zero-shot reasoners[J]. Advances in neural information processing systems, 2022, 35: 22199-22213.

[3]Zhou Y, Muresanu A I, Han Z, et al. Large language models are human-level prompt engineers[J]. arXiv preprint arXiv:2211.01910, 2022.