2023-arXiv-CoT Prompt 思维链提示提升大型语言模型的推理能力

arXiv | https://arxiv.org/abs/2201.11903

摘要:

我们探讨了如何生成思维链(一系列中间推理步骤)显著提高大型语言模型执行复杂推理的能力。在三个大型语言模型上的实验表明,思维链提示提高了一系列算术、常识和符号推理任务的性能。例如,在GSM8K的数学单词问题基准测试中,仅使用八个思维链示例就可以实现最先进的精度,甚至超过了经过微调的带有验证器的GPT-3。

一、引言

NLP领域最近被语言模型彻底改变了。提高语言模型的规模已被证明可以带来一系列好处,例如提高性能和样本效率。然而,单靠提高模型大小还不足以在算术、常识和符号推理等具有挑战性的任务上实现高性能。以往的方法都有关键的局限性:

  • **rationale-augmented training and finetuning:**创建大量高质量的 rationale(一道题的解释或理由)代价很高,比普通机器学习中使用的简单输入输出对要复杂得多。

  • **few-shot prompting:**在需要推理能力的任务上表现不佳,并且通常不会随着语言模型规模的增加而大幅提高。

本文结合两种理念的优势,提出了思维链提示,即一系列导致最终输出的中间自然语言推理步骤,包括三元组: ⟨ input , chain of thought , output ⟩ \langle \text{input}, \text{chain of thought}, \text{output} \rangle input,chain of thought,output

二、思维链提示

在解决一个复杂的推理任务,比如一个多步骤的数学单词问题时,典型的做法是将问题分解为中间步骤,并在给出最终答案之前解决每个步骤:“After Jane gives 2 flowers to her mom she has 10 …… then after she gives 3 to her dad she will have 7 …… so the answer is 7”。本文的目标是赋予语言模型产生类似思维链的能力,即一系列连贯的中间推理步骤,推理出问题的最终答案。如果在示例中为 few-shot prompting 提供了思维链推理的演示,那么足够大的语言模型可以生成思维链。

image-20241211111636514

思维链提示作为一种促进语言模型推理的方法有几个特性:

  1. 思维链原则上允许模型将多步骤问题分解为中间步骤,这意味着可以将额外的计算分配给需要更多推理步骤的问题。

  2. 思想链为模型的行为提供了一个可解释的窗口,提示它是如何得出特定答案的,并在当推理路径有误时,提供了调试的机会。

  3. 思维链推理可以用于数学单词问题、常识推理和符号操作等任务,并且可能(至少在原则上)适用于人类可以通过语言解决的任何任务。

  4. 思维链推理可以很容易地在足够大的现成语言模型中引出,只需将思维链序列的示例增加到 few-shot prompting 的示例中。

三、算术推理 Arithmetic Reasoning

虽然对人类来说很简单,但算术推理是语言模型经常难以完成的任务。当思维链应用于540亿参数的语言模型时,在多个任务上表现与专门针对任务进行微调的模型相媲美,甚至在具有挑战性的 GSM8K 基准测试上达到了最新水平。

3.1 实验设置

基准测试:

image-20241211133631846

**标准提示:**标准 few-shot prompting,在输出预测前给出示例的输入-输出对(a language model is given in-context exemplars of input-output pairs before outputting a prediction for a test-time example)。

思维链提示:

  • 使用表20中的8个思维链范例来进行除了AQuA外的基准测试,使用表21中的4个思维链范例来进行AQuA的基准测试。

image-20241211134905283

image-20241211134919707

大语言模型:

  • **GPT-3:**text- data -001、text-babbage-001、text-curie-001、text- davincii -002,对应于350M、1.3B、6.7B和175B参数的InstructGPT模型。
  • **LaMDA:**422M、2B、8B、68B和137B。
  • **PaLM:**8B、62B和540B。
  • UL2 20B
  • **Codex:**code-davinci-002

3.2 实验结果

image-20241211135817022

image-20241211135932748

  1. **思维链提示是一种模型尺度的涌现能力。**即思维链提示不会对小模型性能产生积极影响,只有在与参数为~ 100B的模型一起使用时才会产生性能提升。较小规模的模型产生流畅但不合逻辑的思维链,导致性能低于标准提示。
  2. **思维链提示对于更复杂的问题有更大的性能提升。**对于GSM8K,最大的GPT和PaLM模型的性能增加了一倍以上。对于 MAWPS: SingleOp 性能改进要么是负的,要么是非常小的。
  3. 通过GPT-3 175B和PaLM 540B进行的思维链提示优于之前最先进的方法,即通过在标记的训练数据集上微调特定于任务的模型。

3.3 样本分析

从通过LaMDA 137B进行的思维链应用于GSM8K中手动筛选了50个正确答案样本和50个错误答案样本:

  • **50个正确答案样本:**1个通过错误的推理得出了正确的答案,5个在保持连贯和可理解的逻辑时存在小缺陷(1个有未指定的语句,1个有不相关但正确的陈述,2个逻辑正确但省略了具体步骤,1个颠倒了语义)

image-20241211143306416

  • **50个错误答案样本:**46%的思维链几乎是正确的,除了小错误(计算错误,符号映射错误,一个推理步骤的缺失),另外54%的思维链在语义理解或连贯方面有重大错误。
    • 仅计算错误 8%:当我们添加一个Python程序作为外部计算器时,LaMDA 137B GSM8K的思维链提示解决率从14.3%上升到17.3%。image-20241211145016843
    • **符号映射错误 16%:**当思维链除了数字符号之外是正确的,并且它可以通过只修改方程而不修改单词而完全正确时。image-20241211145040732
    • **遗漏一步错误 22%:**缺少了一个步骤,即可以通过添加模型错过的额外推理步骤来重写为正确的。image-20241211145109682
    • 语义理解错误 27个:image-20241211145450104
    • **不连贯 8个:**在生成的思维链中,有些语句没有遵循先前的语句或违反了基本的世界知识。image-20241211145514784

3.4 模型规模与错误修复

通过对增加模型规模可以修复错误,将PaLM从62B扩展到540B修复了大部分错误:

image-20241211141337204

image-20241211141411848

3.5 消融实验

image-20241211145941633

  • **仅输出方程:**只有方程提示对GSM8K没有多大帮助,这意味着GSM8K中问题的语义太具有挑战性,无法在没有思维链中的自然语言推理步骤的情况下直接转换为方程。然而,对于一步或两步问题的数据集,我们发现只有方程提示确实提高了性能,因为方程可以很容易地从问题中推导出来。
  • **仅变量计算:**表现与基线大致相同,这表明变量计算本身并不是思维链提示成功的原因,通过自然语言表达中间步骤似乎是有用的。
  • **回答后再给出思维链(思维链提示仅在答案之后给出,从而隔离模型是否实际上依赖于生成的思想链来给出最终答案):**表现与基线大致相同,这表明在思维链中体现的顺序推理在激活知识之外的原因上是有用的。

image-20241211151322902

3.6 稳健性检验

image-20241211150000432

  • 注解者B和C编写的思维链
  • 注解者A编写的更简洁版本

尽管在使用基于范例的提示时,不同的思维链注释之间存在差异,所有的思维链提示都大大优于标准基线。这一结果表明,思维链的成功运用并不取决于特定的语言风格。

  • 从GSM8K训练集随机抽取的三组8个示例进行了实验,与我们手工编写的示例相比的执行情况,也大大优于标准提示。

四、常识推理 Commonsense Reasoning

虽然思维链特别适用于数学单词问题,但思维链基于语言的性质实际上使其适用于广泛的常识推理问题,这些问题涉及在一般背景知识的假设下对物理和人类互动进行推理。常识推理是与世界互动的关键,目前的自然语言理解系统仍然无法实现。

4.1 实验设置

基准测试:

  • **CSQA:**一些关于世界的常识性问题,这些问题涉及复杂的语义,通常需要先验知识
  • **StrategyQA:**要求模型推断多跳策略来回答问题。
  • BIG-bench:日期理解,包括从给定的上下文中推断日期;体育理解,包括确定与体育相关的句子是可信的还是不可信的。
  • **SayCan:**涉及将自然语言指令映射到来自离散集合的机器人动作序列。

思维链提示:

  • 对于CSQA和StrategyQA,我们从训练集中随机选择示例,并手动组成思维链供它们用作 few-shot 样本。两个BIG-bench任务没有训练集,所以我们选择前10个例子作为评估集中的样本作为 few-shot 样本。对于SayCan,我们使用了原文使用的训练集中的六个示例。

image-20241211154131408

image-20241211154146869

image-20241211154200939

image-20241211154215256

image-20241211154231558

4.2 实验结果

image-20241211154440474

image-20241211154516582

五、符号推理 Symbolic Reasoning

我们最后的实验评估考虑了符号推理,这对人类来说很简单,但对语言模型来说可能具有挑战性。我们表明,思维链提示不仅使语言模型能够执行在标准提示设置中具有挑战性的符号推理任务,而且还有助于长度泛化到比在少数示例中看到的更长的推理时间输入。

5.1 实验设置

任务:

  • **最后一个字母连接 Last letter concatenation:**这个任务要求模型连接名字中单词的最后一个字母(“Amy Brown” → “yn”)。这是首字母连接的一个更具挑战性的版本,语言模型已经可以在没有思维链的情况下执行我们通过从姓名普查数据中随机连接前1000个姓和名来生成全名。
  • **抛硬币 Coin flip:**这个任务要求模型回答在人们抛硬币或不抛硬币后,硬币是否仍然是正面朝上的(“硬币是正面朝上的,菲比抛硬币,奥斯瓦尔多不抛硬币,硬币还是正面朝上吗” → “不”)

思维链提示:

  • 对于每个任务,我们考虑一个域内测试集,其中示例具有与 few-shot 样本相同的步骤数,以及一个域外(OOD)测试集,其中评估样本比示例中的步骤更多。
  • 对于最后一个字母连接任务,模型只看到包含2个单词的示例,然后对包含3个和4个单词的执行测试,对抛硬币任务中可能被抛的次数做同样的处理。

image-20241211154304392

image-20241211154318530

5.2 实验结果

image-20241211154720011

image-20241211154546341
mg-gTuNmIve-1739195670221)]

[外链图片转存中…(img-steeow6C-1739195670221)]

5.2 实验结果

[外链图片转存中…(img-Puirl4iM-1739195670221)]

[外链图片转存中…(img-bkQuA40W-1739195670221)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/70980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

macOS部署DeepSeek-r1

好奇,跟着网友们的操作试了一下 网上方案很多,主要参考的是这篇 DeepSeek 接入 PyCharm,轻松助力编程_pycharm deepseek-CSDN博客 方案是:PyCharm CodeGPT插件 DeepSeek-r1:1.5b 假设已经安装好了PyCharm PyCharm: the Pyth…

AcWing 190. 字串变换 --BFS-双向搜索

已知有两个字串 A, B 及一组字串变换的规则(至多 66 个规则): A1→B1 A2→B2 … 规则的含义为:在 A 中的子串 A1A1 可以变换为 B1、A2 可以变换为 B2…。 例如:A=abcd B=xyz 变换规则为: …

2023-arXiv-GTE: 基于多阶段对比学习的通用文本嵌入模型

arXiv | https://arxiv.org/abs/2308.03281 gte-Qwen2-1.5B-instruct | https://www.modelscope.cn/models/iic/gte_Qwen2-1.5B-instruct gte-Qwen2-7B-instruct | https://www.modelscope.cn/models/iic/gte_Qwen2-7B-instruct 摘要: 我们提出了GTE,一…

计算机视觉中图像的基础认知

一、图像/视频的基本属性 在计算机视觉中,图像和视频的本质是多维数值矩阵。图像或视频数据的一些基本属性。 宽度(W) 和 高度(H) 定义了图像的像素分辨率,单位通常是像素。例如,一张 1920x10…

C语言基本概念————讨论sqrt()和pow()函数与整数的关系

本文来源:C语言基本概念——讨论sqrt()和pow()函数与整数的关系. C语言基本概念——sqrt和pow函数与整数的关系 1. 使用sqrt()是否可以得到完全平方数的精确的整数平方根1.1 完全平方数的计算结果是否精确?1.2 为什么不会出现误差(如 1.99999…

Flink提交pyflink任务

1.官方文档: flink1.14:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/deployment/cli/#submitting-pyflink-jobs flink1.18:https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/cli/#submitting-pyflink-jobs 2.提…

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<10>

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 今天我们继续来复习指针… 目录 一、看一段代码二、 一维数组传参的本质三、冒泡排序3.1 基本思想四、二…

隔离型三端口变换器系统仿真与应用(论文+仿真)

1.总体设计 隔离型三端口变换器是一种具有三个端口的电力电子转换器,通常用于实现不同电源之间的能量交换和隔离。该系统广泛应用于太阳能、风能、储能系统以及电动汽车充电等领域,具有能量转换效率高、系统可靠性好、可实现多种工作模式等优点。本文设…

CTF-web:java-h2 堆叠注入rec -- N1ctf Junior EasyDB

代码存在sql注入 // 处理登录表单的POST请求PostMapping({"/login"})public String handleLogin(RequestParam String username, RequestParam String password, HttpSession session, Model model) throws SQLException {// 验证用户凭据if (this.userService.valid…

idea 错误: 找不到或无法加载主类 @C:\Users\admin\AppData\Local\Temp\idea_arg_file1549212448

idea 错误: 找不到或无法加载主类 C:\Users\admin\AppData\Local\Temp\idea_arg_file1549212448 该错误往往和左下角爱弹出的如下提示是一个意思 Error running ‘PayV3Test1.testTransferBatchesBatchId’ Error running PayV3Test1.testTransferBatchesBatchId. Command lin…

Kerberos认证技术文档

一、概述 Kerberos是一种计算机网络认证协议,旨在通过第三方认证服务,以安全的方式对客户端和服务器进行身份验证。本技术文档将详细介绍如何在Java中实现Kerberos认证,包括自动重新认证机制。 二、Kerberos认证初始化 1. 加载配置文件 在认证之前,需要加载相关的配置文…

Next.js【实用教程】2025最新版

官网 https://nextjs.org/docs/app/getting-started Next.js 简介 Next.js 由 Vercel 开发和维护,旨在解决单页应用(SPA)和多页应用(MPA)在性能和 SEO 上的不足。 核心特性 服务端渲染(SSR)--…

文字转语音(四)使用jacob库实现

项目中有相关的功能,就简单研究了一下。 实现原理 ACOB 库:JAva COM Bridge,允许 Java 通过 COM 接口调用 Windows 组件(如 SAPI)Speech API (SAPI):Windows 内置的语音引擎,支持 TTS 功能。 …

KEPServerEX 中信道深入介绍

以下是 KEPServerEX 中信道(Channel) 的详细介绍,涵盖其定义、功能、配置步骤及最佳实践,帮助您快速掌握信道在数据采集中的核心作用: 一、信道(Channel)的定义 信道 是 KEPServerEX 中 连接物…

Shell脚本笔记

Linux其他命令 Shell脚本笔记

K8S下载离线安装包所需文件

下载相关文件 官网下载地址集合https://kubernetes.io/zh-cn/releases/download/ 下载相关镜像 官网镜像描述 所有 Kubernetes 容器镜像都被部署到 registry.k8s.io 容器镜像仓库。 容器镜像支持架构registry.k8s.io/kube-apiserver:v1.32.0amd64, arm, arm64, ppc64le, …

Vivado生成edif网表及其使用

介绍如何在Vivado中将模块设为顶层,并生成相应的网表文件(Verilog文件和edif文件),该过程适用于需要将一个模块作为顶层设计进行综合,并生成用于其他工程中的网表文件的情况。 例如要将fpga_top模块制作成网表给其它工…

【C++前缀和 排序】891. 子序列宽度之和|2182

本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 排序 LeetCode891. 子序列宽度之和 一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums ,返回 nums 的所有非空 子序列 的…

企业网站建站源码 网站源码程序下载

在数字化时代,企业网站已成为企业展示形象、推广产品、服务客户的重要窗口。而选择合适的建站源码,则是搭建一个功能强大、美观易用的企业网站的关键。 一、企业网站建站源码的优势 降低成本: 相较于定制开发,使用建站源码可以大…

五款老牌Java报表工具对比

在企业信息化建设中,报表工具是数据可视化与决策支持的核心组件。随着企业对数据分析需求的不断增长,选择一款高效、易用且功能强大的报表工具显得尤为重要。本文将对比五款老牌Java报表工具,并重点介绍由中创微软件自主研发的新一代报表软件…