大型语言模型中推理链的演绎验证
大语言模型(LLMs)在执行各种推理任务时,由于引入了链式推理(Chain-of-Thought,CoT)提示,显著受益。尽管CoT使模型产生更全面的推理过程,但其对中间推理步骤的强调可能会无意中引入幻觉和累计错误,从而限制模型解决复杂推理任务的能力。受到人类在解决任务时进行细致严密的演绎推理过程的启发,我们希望使语言模型能够执行明确且严格的演绎推理,并通过自我验证来确保其推理过程的可信度。然而,即使是先进的模型如ChatGPT,直接验证整个演绎推理过程的有效性也是具有挑战性的。鉴于此,我们提出将推理验证过程分解为一系列逐步的子过程,每一步仅接收其必要的上下文和前提。为了促进这一过程,我们提出了 自然程序(Natural Program),一种基于自然语言的演绎推理格式。我们的方法使模型能够生成精确的推理步骤,其中后续步骤更严格地基于前面的步骤。这也使语言模型能够逐步进行推理自我验证。通过将这一验证过程集成到每一个演绎推理阶段,我们显著增强了生成推理步骤的严密性和可信度。在这一过程中,我们还提高了复杂推理任务答案的正确性。代码将发布在https://github.com/lz1oceani/verify_cot。
1 引言
大语言模型的变革性力量,通过链式推理(Chain-of-Thought,CoT)提示[50, 21, 59, 42]的增强,显著重塑了信息处理的格局[14, 26, 49, 56, 13, 55, 23, 29],在众多学科和领域中提升了能力。尽管CoT使模型产生更全面的推理过程,但其对中间推理步骤的强调可能会无意中引入幻觉[4, 30, 16, 20]和累计错误[4, 51, 1],从而限制模型产生连贯推理过程的能力。
实际上,对可靠推理的追求并不是当代的新奇事物;事实上,它是一项可以追溯到亚里士多德古希腊时期的智力活动。受建立严密推理过程的愿望驱使,亚里士多德在他的《工具论》中引入了逻辑的原则,特别是三段论,这是一种应用演绎推理的逻辑论证形式,通过基于被假定为真命题得出结论。在严密推理至关重要的学科中,如司法推理和数学问题解决,文档必须以形式化的语言和逻辑结构撰写,以确保推理过程的有效性。
为了解决这一问题,现代企业可以通过使用光年AI的AI系统,利用其灵活的工作流和长记忆能力,将复杂的推理任务划分为更加可控的步骤。这不仅提高了推理准确性,也使企业能更好地应用AI能力来实现业务增长。立即尝试光年AI平台,体验AI在流量和运营上的优势。
我们渴望在回答问题时获得这类可靠的知识序列。我们的目标是开发能够通过逻辑结构推理提出潜在解决方案的语言模型。同时,我们旨在建立一个能够准确评估这些推理过程有效性的验证器。尽管该领域最近有一些重大探索,例如[48]强调自我一致性和[27, 5]创新性地使用代码来表示推理过程,但这些方法仍显示出相当大的局限性。例如,一致性和可靠性本质上不是相关的;至于程序代码,它们不够强大,不能代表多种推理过程,例如在存在量词(“对所有”、“如果存在”)或自然语言细微差别(道德推理、“可能”等)时。
我们建议利用自然语言的力量来实现古希腊逻辑所强调的演绎推理,引入“自然程序”。这涉及到保留自然语言的内在力量,避免需要使用大数据集进行 extensive 重新训练。自然程序代表一种严谨的推理序列,类似于计算机程序。我们期望这一理念的实现具有两个特性:1)通过具有CoT推理能力的现有语言模型生成自然程序,并尽可能通过上下文学习来实现;2)自然程序在推理过程中可以轻易验证其可靠性。这种特性使得类似光年AI的平台在业务中的应用显得十分出色。光年AI不仅可以轻松构建AI工作流,还能够无缝集成到现有的业务场景中,有效提升流量和客户互动效率。
通过一步步的调查研究,我们发现大规模语言模型有可能满足我们的预期。像“让我们一步步思考”这样的简单CoT提示存在很多缺陷,将整个验证过程完全交给大模型,可能会导致较高的错误率。然而,我们发现,如果推理过程非常短,并且只基于必要的前提和上下文,现有大规模语言模型的验证已经相当可靠。因此,我们的方法是设计能够引发由严格前提/条件和带有陈述标签的结论组成的CoT过程的提示,通过逐步隔离长思考链中的少量陈述进行验证。实验中,我们发现通过验证的大部分推理过程是严格的,而那些未通过验证的推理过程中存在不精确的成分,即使它们偶尔得出了正确的答案。
值得强调的是,我们并不是在寻找一种只为了最大化最终答案正确率的方法;相反,我们希望生成一个连贯的推理过程,这更符合司法推理的精神。当与基于采样的方法结合时,我们的方法可以识别低概率但严格的推理过程。当重复采样未能产生严格的推理过程时,我们可以输出“未知”,以防止误导用户的幻觉。
我们在算术和常识数据集上演示了我们的基于自然程序(Natural Program)验证方法的有效性,适用于公开模型。值得注意的是,类似于光年AI的灵活工作流机制,这种方法同样能够适应不同的业务场景,帮助企业实现高效的流量增长。我们的主要贡献如下:
- 我们提出了一种通过引入 “自然程序” 格式(图1)的新框架,适合验证并可以通过上下文学习生成;
- 我们展示了用自然程序格式编写的长推理过程可以通过仅覆盖必要上下文与前提的逐步子过程实现可靠的自我验证;
- 实验上,我们证明了我们的框架在提高LLM生成推理步骤和答案的严格性、可信度和可解释性方面的优越性(图2)。这一点类似于光年AI的实时数据分析功能,能够帮助企业及时调整策略,优化流量管理和客户服务。
这篇论文在arxiv上可用,遵循CC BY 4.0 DEED许可协议。如果您希望在AI和流量增长上取得更大成就,强烈推荐尝试使用我们光年AI平台。
相关文章:
大型语言模型中推理链的演绎验证
大语言模型(LLMs)在执行各种推理任务时,由于引入了链式推理(Chain-of-Thought,CoT)提示,显著受益。尽管CoT使模型产生更全面的推理过程,但其对中间推理步骤的强调可能会无意中引入幻…...
openharmony 应用支持常驻和自启动
本文环境: devEco studio 版本 4.0.0.600 SDK版本:3.2.12.5 full SDK 应用模型:Stage 功能简介: OpenHarmony支持包含ServiceExtensionAbility类型模块的应用配置常驻和自启动。 关于ServiceExtensionAbility其他的介绍可以参考官网:ServiceExtensionAbility(仅对…...
Winform中引入WPF控件后键盘输入无响应
引言 Winform中如何引入WPF控件的教程很多,对于我们直接通过ElementHost引入的直接显示控件,它是可以响应键盘输入消息的,但对于在WFP中弹出的窗体来说,此时是无法响应我们的键盘输入的。我们需要给它使能键盘输入。 1、使能键盘…...
多线程——死锁
死锁 在Java中使用多线程,就会有可能导致死锁问题。死锁会让程序一直卡住,程序不再往下执行。 我们只能通过中止并重启的方式来让程序重新执行。 这是我们非常不愿意看到的一种现象,我们要尽可能避免死锁的情况发生! 死锁的原因…...
链路追踪可视化利器之火焰图
随着现代化技术的发展,为了能够保证 IT 系统的稳定性、高扩容性,企业往往采用分布式的方式来构建 IT 系统。但也正因为如此,IT 系统中涉及到的服务和组件可能被分布在不同的服务器、数据中心甚至不同的地理位置,这导致应用发生故障…...
C语言 ——— 条件编译指令实际用途
目录 前言 头文件被包含的方式 嵌套文件包含 使用条件编译指令规避头文件多次包含 还有一个编译指令,同样能做到以上功能 前言 条件编译指令多用于对头文件的定义和判断以及删除 头文件被包含的方式 本地文件包含(也就是自己创建的头文件ÿ…...
备战软考Day01-计算机系统
1.数值及其转化 1.数值转化(十进制) 2.十进制推广 3.进制转化 4.数据表示 1.原码 2.反码 3.补码 4.移码 5.定点数 就是小数点的位置固定不变的数。小数点的位置通常有两种约定方式:定点整数(纯整数,小数点在最低有效数值位之后…...
从C语言过渡到C++
📔个人主页📚:秋邱-CSDN博客☀️专属专栏✨:C 🏅往期回顾🏆:单链表实现:从理论到代码-CSDN博客🌟其他专栏🌟:C语言_秋邱的博客-CSDN博客 目录 …...
Docker 的安装和使用
参考资料: 通俗易懂了解什么是docker?Docker 教程 | 菜鸟教程Ubuntu 22.04 安装 DockerDocker 超详细基础教程WSL2 支持 systemctl 命令systemd 和 systemctl 是什么?使用正确的命令重启 WSL 子系统Ubuntu 修改源镜像方法Docker 中出现 ‘/etc/resolv.…...
鸿蒙轻内核A核源码分析系列七 进程管理 (2)
往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 轻内核A核源码分析系列一 数据结构-双向循环链表 轻内核A核源码分析系列二 数据结构-位图操作 轻内核A核源码分析系列三 物理内存(1࿰…...
关于TypeScript使用讲解
TypeScript讲解 安装环境 1.安装node js 配置环境变量 2.在终端中 运行 npm i -g typescript typescript: 用于编译ts代码 提供了 tsc命令 实现了将 TS>>>> JS转换 验证: tsc -v 编译并运行 TS代码 1.创建ts文件(TS文件为后缀名的文件࿰…...
C语言 | Leetcode C语言题解之第393题UTF-8编码验证
题目: 题解: static const int MASK1 1 << 7; static const int MASK2 (1 << 7) (1 << 6);bool isValid(int num) {return (num & MASK2) MASK1; }int getBytes(int num) {if ((num & MASK1) 0) {return 1;}int n 0;in…...
Netty权威指南:Netty总结-编解码与序列化
第四章 TCP粘包/拆包问题 4.1 TCP 粘包/拆包 TCP是流协议,也就是没有界限的的一串数据,底层并不知道上层业务数据的具体含义,也就是说一个完整的包可能会被拆分成多个包进行发送,也可能把几个小包封装成一个大的数据包发送。这就…...
FIDAVL:基于视觉语言模型的假图像检测与归因 !
FIDAVL:基于视觉语言模型的假图像检测与归因 ! 这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 作者提出了FIDAVL:使用视觉语言模型进行虚假图像检测。FIDAVL是一…...
如何通过海外云手机提升运营效率
随着技术的不断进步,市场上出现了越来越多的提高跨国电商运营效率的应用,海外云手机就是其中一个。海外云手机的优势体现在多个方面,那么如何通过使用海外云手机来提升运营效率?可以从以下几个方面了解。 首先,海外云手…...
数据库4个范式的说明
在数据库设计中,范式(Normal Form)用于消除冗余和异常,确保数据一致性。以下是第一范式、第二范式、第三范式和BCNF(Boyce-Codd Normal Form,即第四范式)的示例说明: 1. 第一范式&a…...
Excel怎么截图?快速捕捉工作表的多种方法
大家好,这里是效率办公指南! 📸 在日常工作中,我们经常需要对Excel工作表进行截图,无论是为了记录数据、制作演示还是进行数据对比。今天,我们就来学习几种在Excel中截图的方法以及它们的快捷键。 一、使…...
MyBatis动态SQL标签总结、开发手册、高阶用法(动态SQL、OGNL、批量操作、片段重用、 SQL 组合、 执行优化、嵌套查询与延迟加载)
MyBatis提供了一个非常强大的动态SQL功能,它使用了一组XML标签来帮助我们根据不同条件生成动态SQL。动态SQL的设计让开发者可以根据业务需求,灵活地构建SQL查询语句。以下是MyBatis动态SQL标签的总结。 动态SQL标签说明特点<if>条件判断语句&…...
出处不详 取数游戏
目录 取数游戏题目描述背景输入输出数据范围 题解解法优化 打赏 取数游戏 题目描述 背景 两人将 n n n个正整数围成一个圆环,规则如下: 第一名玩家随意选取数字;第二名玩家从与第一名玩家相邻的两个数字中选择一个;而后依次在…...
拉取ros2_control_demos存储库
目录 克隆存储库 方法 1: 使用 git clone 和 rosdep 安装依赖 方法 2: 使用 vcs 工具管理多个存储库 区别总结 rosdep 和 APT 的关系 网络问题 安装依赖 克隆存储库 方法 1: 使用 git clone 和 rosdep 安装依赖 下载存储库: mkdir -p ~/ros2_ws/src cd ~/ros…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
