跳到主内容
人工智能

思维链推理的演绎验证

Deductive Verification of Chain-of-Thought Reasoning

Zhan Ling, Yunhao Fang, Xuanlin Li, Zhiao Huang, Mingu Lee, Roland Memisevic, Hao Su

neural information processing systems · 2023-01-01

开放获取大模型与语言推理与思维链被引 43被引前 10%影响因子 ≈3.8

摘要

大型语言模型在各类推理任务中借助思维链提示技术能够取得显著成效。尽管思维链技术能让模型产出更完整的推理过程,但其对中间推理步骤的重视可能会无意中引发幻觉现象与累积性错误,进而限制模型解决复杂推理任务的能力。受人类通过严谨细致的演绎逻辑推理过程来解决问题的方式的启发,我们旨在使语言模型能够进行明确且严密的演绎推理,并通过自我验证来确保其推理过程的可信度。然而,即便借助ChatGPT等先进模型,直接验证整个演绎推理过程的有效性仍颇具挑战性。鉴于此,我们提出将推理验证过程拆解为一系列逐步执行的子过程,每个子过程仅接收其所需的上下文与前提条件。为推进这一流程,我们提出了一种基于自然语言的演绎推理格式——自然程序。我们的方法能使模型生成精确的推理步骤,且后续步骤能更严密地以先前步骤为基础。该方法还能让语言模型以分步方式开展推理自我验证。通过将这一验证过程融入每个演绎推理阶段,我们显著提升了所生成推理步骤的严谨性与可信度。在此过程中,我们在复杂推理任务上的答案正确率也得到了提高。相关代码将于https://github.com/lz1oceani/verify_cot发布。

本摘要由 AI(Hy-MT2-Pro)翻译生成,仅供参考,请以原文为准。

AI 综述

基于全文生成
主要观点
论文针对Chain-of-Thought提示中中间推理步骤易引入幻觉与累积错误的问题,提出令语言模型执行显式、严格的演绎推理并通过自验证保证推理链可信。其核心论断是:直接验证整条演绎推理链即使对ChatGPT也困难,因而应将验证分解为一系列单步子过程,每一步只接收必要语境与前提。为支撑该过程,作者提出“Natural Program”自然语言演绎推理格式,使每个推理步骤显式列出所引用的最小前提集,从而可抽取、可逐步验证。论文进一步主张,将验证整合进每个演绎推理阶段,并结合Unanimity-Plurality Voting,可提升推理步骤的严谨性、可信度与最终答案正确率;当重复采样得不到严格推理链时可输出“unknown”以避免误导。
研究方法
方法路径包括问题形式化、预实验、提示设计与解码策略整合。作者将基于推理的QA定义为(Q,C,O,A),把CoT输出中的中间推理步骤记为S=(s1,…,sm),并定义单步演绎有效性V(si)为二元变量:仅当si可由其前提pi(含语境C、问题Q及先前步骤)逻辑推出时取1,整链有效性为V(S)=∧V(si)。预实验中,作者对每个数据集各随机抽取50条有效链与50条含错链,让GPT-3.5-turbo一次性验证整条链,发现准确率约50%且倾向输出“Correct”。据此,作者设计Natural Program:先抽取问题相关前提QC并编号,再让模型以“#编号 (by 所引前提编号)”格式生成推理步骤,末步含Final Step并回答目标问题;单步验证提示仅保留该步使用的前提、该步描述及“Double-check…end with yes/no”指令。最后,作者提出两阶段Unanimity-Plurality Voting:先采样k条链并对每步做k′次单步有效性多数投票,仅保留所有步骤均有效的链,再在通过验证的链候选之间进行多数投票。
学术贡献
贡献主要在理论建构、方法创新与领域拓展。理论层面,论文将“答案正确”与“演绎有效”区分开,把推理链验证从最终答案匹配推进到每一步的局部蕴含判定,并用V(S)=∧V(si)给出可分解的验证目标。方法层面,Natural Program以自然语言格式同时承载严格演绎步骤与最小前提引用,使LLM无需微调、仅靠上下文学习即可生成可验证推理链;单步验证只给必要前提,缓解无关语境干扰。材料发掘与实验层面,论文在GSM8K、AQuA、MATH、AddSub、Date、Last Letters等算术与常识数据集上,以GPT-3.5-turbo展示分步验证能识别推理错误与grounding error(使用未出现在引用前提中的信息),并通过Unanimity-Plurality Voting提升推理链可信度与答案正确率。对LLM推理验证、CoT可信性、以及自然语言与形式化推理交叉议题具有价值。
存在局限
实验主要报告GPT-3.5-turbo的结果,虽提及ChatGPT与GPT-4也会产生步骤错误,但未系统比较不同规模或不同厂商模型上的验证表现。预实验每数据集仅取50条有效链与50条错误链,样本规模有限,且整链验证与分步验证的对比集中在准确率,未展开对前提抽取错误、蕴含判断错误与常识冲突的细粒度错误率统计。方法依赖模型按Natural Program格式正确列出最小必要前提;若漏标或错标前提,后续单步验证会失去完整上下文,材料未量化这种前提标注失败对V(si)与V(S)的影响。Unanimity-Plurality Voting中的k与k′取值、投票阈值、温度设置以及输出“unknown”的比例,材料中未明确提及。Natural Program允许使用未显式列出的常识前提,但验证器对隐含前提的判定标准仅以“November有30天/29天”为例,缺乏系统性边界测试。
进一步研究方向
可固定Natural Program生成结果,人为注入两类错误——引用不存在前提的grounding error与步骤间不蕴含的reasoning error——测量单步验证器对V(si)的精确率、召回率与整体链V(S)的一致性,并与整链一次性验证对照。可在多个公开模型上重复Unanimity-Plurality Voting,系统改变k、k′、采样温度与one-shot示例,记录验证通过率、最终答案正确率及“unknown”输出率,检验该策略识别低概率但严格推理链的能力。可针对材料指出的程序代码难以表示的量词(“for all”“if there exists”)与自然语言细微差别(“likely”、道德推理),构建含量词、或然性与隐含常识的数据集,检验Natural Program单步验证在隐含前提上的判定边界。可收集被整链验证误判为“Correct”但分步验证判为无效的样本,按前提抽取错误、蕴含判断错误、常识冲突三类标注,建立验证失败分类与相应提示干预规则。可依据论文提到的司法推理与数学问题求解中形式语言/逻辑结构要求,构造需要引用条文或证明步骤的数据集,将Natural Program的“#编号 (by 前提编号)”输出与人工标注的逐步蕴含关系对齐,评估其在严格论证场景中的可验证性。

本综述由 AI(deepseek-flash)阅读开放获取全文自动生成,仅供参考,不代表原文作者观点,请以原文为准。

参考文献

相关论文

话题:Logic, Reasoning, and Knowledge