模型复杂推理-思维链COT基础和进阶玩法

COT基础用法

Few-shot COT

Chain of Thought Prompting Elicits Reasoning in Large Language Models

开篇自然是COT小王子的成名作,也是COT的开山之作,单看引用量已经是一骑绝尘。

论文的核心是通过Few-shot的方案,来引导模型生成中间推理过程,并最终提高模型解决复杂问题的能力。核心逻辑很Simple&Naive

  • 通过在Few-shot样本中加入推理过程,可以引导模型在解码过程中,先给出推理过程,再得到最终答案
  • 类似中间推理过程的加入,可以显著提高模型在常识推理,数学问题,符号推理等复杂推理问题上的模型表现。

先看效果,见上图,可以得到几个insights

  • COT带来的效果提升具有涌现性,只在100B左右的大模型上才出现显著更优的效果,但作者没有给出模型规模的影响原因
  • COT带来的效果提升在复杂问题例如GSM8K上表现更显著

让我们直观来看下COT的Few-shot模板构建,以及对解码的影响。这里我们使用Belle的数学COT指令样本采样10个构建了一组few-shot思维链指令,如下,

测试数学能力嘛,小学奥数经典的汽车相遇问题走一个,问题:两辆汽车从相距500千米的两城同时出发,相向而行.一辆摩托车以每小时80千米的速度在两辆汽车之间不断往返联络.已知这两辆汽车的速度分别是每小时40千米和60千米,求两汽车相遇时,摩托车共行驶了多少千米?题目不复杂500/(40+60)*80 = 400千米

以下分别使用ChatGPT和ChatGLM在Greedy-search模式下进行解码,分别是直接提问和加入few-shot-cot后再提问

promptchatgptchatglm-6b
直接提问设两汽车相遇时间为t�小时,则两汽车相遇时的距离为(40+60)t=100t(40+60)�=100�千米。摩托车在这t�小时内不断往返,相当于在两汽车之间来回行驶了2×80t=160t2×80�=160�千米。因此,摩托车共行驶了160t160�千米。根据题意,两汽车相遇时的距离为500千米,因此t=500100=5�=500100=5小时。代入可得,摩托车共行驶了160×5=800160×5=800千米。设两汽车相遇时,摩托车行驶了 x� 小时。根据题意,两汽车相向而行,它们的相对速度为 40+60=10040+60=100 千米/小时。因此,两汽车相遇时,它们行驶的距离之和为:500×(100+40)=50000500×(100+40)=50000因为两汽车相遇时,摩托车一直在行驶,所以摩托车行驶的距离等于两汽车相遇时它们行驶的距离之和:x×80=50000�×80=50000解得:x=4000�=4000因此,两汽车相遇时,摩托车共行驶了 40004000 千米。
few-shot COT设摩托车共行驶了x千米,则两辆汽车相遇时,摩托车往返的次数为x/500。在每次往返中,摩托车行驶的距离为80千米,所以摩托车共行驶的距离为:x = (80千米) × (x/500) = 0.16x千米两辆汽车相遇时,它们的总路程为500千米,所以它们相遇所用的时间为:t = 500千米 / (40千米/小时 + 60千米/小时) = 5小时根据摩托车的速度和时间,可以得到:x = 80千米/小时 × 5小时 = 400千米因此,摩托车共行驶了400千米。设两汽车相遇时,摩托车行驶了 x� 小时。由题意可知,两汽车相遇时,它们已经行驶了 500 千米,所以有:40x+60x=50040�+60�=500解得 x=50/9�=50/9,即两汽车相时,摩托车行驶了 50/9 小时。因此,摩托车共行驶了:80×(50/9)=40080×(50/9)=400

加入COT之后chatgpt和chatglm都双双答对了,虽然有运气成分,且推理过程还显得有点智障吧。但你会发现不加入few-shot COT模型同样会进行推理再给出答案,而非像论文中给出的模型会直接直接给一个答案没有任何推理。原因是论文使用的是text-davinci-002是没有经过RLHF的旧版本模型。我们在一些需要推理的多项选择问题上也进行了测试,不管是使用few-shot COT还是加入COT指令样本进行微调,确实都能带来一定程度上推理/数学能力的提升。

论文还进行了一些消融实验包括

  • 准确率提升是否来自数学公式的引入?

论文尝试了few-shot部分只加入公式并不能显著提升效果。个人感觉这个消融实验不太完整,因为很多复杂MWP问题模型很难映射到单一的公式,而先进行问题分解后再逐步映射到中间公式,在我们的场景里是可以提升效果的。这里推荐两个数据集:APE210K和Math23K分别是猿辅导和腾讯开源的数学世界问题转化成公式的数据集,大家可以自己试试看

  • 准确率提升是否因为few-shot-cot帮助模型更好的召回相应的知识?

论文尝试了先给出答案再进行推理的prompt模板,发现效果显著变差。说明few-shot-COT只是激活模型给出推理,推理过程本身才是模型效果提升的核心。我们在一些需要推理的多项选择问题上也发现,先推理再回答选项的效果显著优于先回答选项再给出推理过程

zero-shot COT

Large Language Models are Zero-Shot Reasoners

除了使用Few-shot-COT样本可以让模型给出推理过程,单纯用指令也可以让模型给出思维链,且能进一步提升模型复杂问题推理能力。论文中效果最好的激活思维链的指令是"Let's think step by step"哈哈哈,我当时论文看到这里感觉空气都凝固了

zero-shot-COT在论文中需要两步解码,第一步用Let's think step by step让模型给出推理过程,第二步把推理过程和问题一起输入模型,让模型给出结果。但实际使用时你会发现,基本上第一步解码模型就会在推理结束时给出结果,而把带结果的输入再输入模型,极大概率第二步模型会给出相同的答案,所以其实zero-shot-COT也可以直接一步到位。

咱主打一个和相遇问题死磕,还是摩托车和货车相遇,咱使用几组不同的激活词再来问一遍

激活词chatgptchatglm
请一步步的推理分析解决以下问题设两汽车相遇时间为t小时,则两汽车相遇时的距离为(40+60)t=100t千米。由于两汽车相向而行,所以它们的相对速度为40+60=100千米/小时。因此,摩托车在t小时内往返的距离为2×80t=160t千米。根据题意,摩托车在两汽车相遇时停止往返,因此摩托车共行驶的距离为160t千米。将上述两个式子联立,解得t=2.5小时。因此,摩托车共行驶的距离为160×2.5=400千米。设两汽车相遇时,摩托车行驶了 x小时。根据题意,两汽车相向而行,它们的相对速度为 40+60=10040+60=100 千米/小时。因此,两汽车相遇时,它们之间的距离为 500−x500− 千米。根据题意,摩托车以每小时 8080 千米的速度在两辆汽车之间不断往返联络,因此摩托车每行驶 x小时,会在两汽车相遇时行驶 80x80千米。因此,可以列出方程:80x=500−x80=500−解方程可得:x=50=50因此,两汽车相遇时,摩托车共行驶了 80x=300080=3000 千米。
请逐步推理回答问题设两汽车相遇时间为t小时,则两汽车相遇时的距离为(40+60)t=100t千米。根据题意,摩托车以80千米/小时的速度在两汽车之间不断往返,因此摩托车在t小时内往返的路程为2×80×t=160t千米。所以,摩托车共行驶了160t千米。将两式相等,得到:100t=500t=5此,两汽车相遇时,摩托车共行驶了160×5=<<160*5=800>>800千米。设两汽车相遇时,摩托车行驶了 x 小时。根据题意,两汽车相向而行,因此它们相遇的时间可以用以下方程计算:t=50040+60=10=50040+60=10因为两汽车相遇时,摩托车一直在行驶,所以摩托车行驶的时间也是 x小时。根据题意,摩托车的速度是每小时 8080 千米,因此摩托车行驶的距离可以用以下方程计算:x×80=500−t×80=500−将 t的值代入上式,得到:x×80=500−10=490×80=500−10=490因此,两汽车相遇时,摩托车共行驶了 490490 千米。

2组提示词,只有第一组让chatgpt给出了正确的答案,整体上提示词的效果很玄学,我们在不同问题上例如多项选择,数学计算也试过很多不同的方案,没找到啥规律。论文作者也尝试了不同的指令词来验证zero-shot-COT对指令词的依赖程度,见下表。整体上只要指令词有引导模型逐步推理的含义在,对模型效果都是有提升的。我个人也是看到这里才觉得zero-shot-COT可能确实有一定的合理性,因为指令提供的上文语义确实和模型推理的解码语义存在一定的相关性。

效果上,论文在MultiArith和GSM8k上和few-shot-cot进行了对比,整体上比few-shot略差,但是要显著超越只使用指令的baseline。不过需要注意,这里的评测模型还是是text-davinci-002,是没有经过RLHF只做了SFT的版本,并不是当前的最强模型,因此下图的效果提升放到GPT4上会打不小的折扣。毕竟GPT-4使用few-shot-COT在GSM8k上准确率已经奔着90%+去了。在模型大小上,zero-shot-COT同样具有规模效应,只在大模型上才表现出超越常规指令的效果

COT进阶用法

以上不论是few-shot还是zero-shot COT都还是基于模型自身给出推理过程,而人工不会过多干预推理过程。在进阶用法中会对推理过程做进一步的人工干预来引导解码步骤,进一步提升解码准确率,且以下的进阶方案是可以组合使用的。

Self-Consistency

SELF-CONSISTENCY IMPROVES CHAIN OF THOUGHT REASONING IN LANGUAGE MODELS

self-consistency是在few-shot-cot的基础上,用Ensemble来替换Greedy Search,来提高解码准确率的一种解码策略,论文显示加入self-consistency,可以进一步提升思维链的效果GSM8K (+17.9%)。

在使用大模型进行固定问题回答例如多项选择,数学问题时,我们往往会采用Greedy-Search的方式来进行解码,从而保证模型解码生成固定的结果,不然的话使用随机解码,我采样4次,模型把ABCD都选了一遍,那这题模型到底是答对了还是答错了??但每一步都选Top Token的局部最优的解码方案很显然不是全局最优的,而self-consistency其实提供了一种无监督的Ensemble方案,来对模型随机解码生成的多个回复“投票”出一个更准确答案,如下图

self-consistency的基础假设很人性化:同一个问题不同人也会给出不同的解法,但正确的解法们会殊途同归得到相同的正确答案。以此类比模型解码,同一问题不同随机解码会得到不同的思维链推理过程,期望概率最高的答案,准确率最高。那核心就变成针对多个解码输出,如何对答案进行聚合。论文对比了以下几种方案

给定指令prompt和问题question,模型通过随机解码会生成一组a1,a2,...am1,2,...答案候选,以及对应的思维链路径r1,r2,...rm1,2,...。效果最好的两种聚合方案分别是

  1. major vote:直接对解码后的结果投票大法投出一个出现概率最高的答案。该说不说大道至简,最简单的方案往往是最好的, 论文后面的结果都是基于投票法给出的
  2. normalized weighted sum: 计算(ri,ai)(,)路径的概率,既模型输出的每一个token条件解码概率求和,并对解码长度K进行归一化。虽然这里略让人惊讶,本以为加权结果应该会更好,可能一定程度也说明模型的解码概率在答案的正确性上其实不太有区分度。

针对解码参数论文还做了一些测试

  1. 随机参数:self-consistency支持不同的随机解码策略,在参数设定上需要平衡解码的多样性和准确率,例如temperature太低会导致解码差异太小,投票投了个寂寞,太高又会影响最终的准确率。看测试可能top-p=40, temperature=0.5是一个不错的测试起点

  1. 采样次数:major vote的效果很依赖候选样本数,论文中很豪横采样了40次,地主家的儿子也不敢这么玩...看效果采样5次以上就能超过Greedy解码,具体解码次数看你家有多少余粮吧...

Least-to-Most

LEAST-TO-MOST PROMPTING ENABLES COMPLEX REASONING IN LARGE LANGUAGE MODELS

如果说上面的Self-Consisty多少有点暴力出奇迹,那Least-to-Most明显更优雅一些。思路很简单,在解决复杂问题时,第一步先引导模型把问题拆分成子问题;第二步逐一回答子问题,并把子问题的回答作为下一个问题回答的上文,直到给出最终答案,主打一个循序渐进的解决问题。也可以理解为通过few-shot来引导模型给出更合理,更一致的推理思路,再根据这个思路在解决问题。

设计理念很好,但我最好奇的是few-shot-COT要如何写,才能引导模型针对不同场景进行合理的问题拆解。这里我们还是看下针对数学问题的few-shot应该如何构建的,论文中的few-shot-prompt是纯手工写制作,这里我采用chatgpt来生成再人工调整。从APE21K中随便抽了3个问题,注意不要太简单,已经有论文证明,few-shot-COT样本的推理步骤越多效果越好。这里我拆解问题的Prompt(未调优)是"对以下数学问题进行问题拆解,分成几个必须的中间解题步骤并给出对应问题, 问题:",来让ChatGPT生成中间的解题步骤作为few-shot-cot模板

  1. Problem Reducing 问题拆解

还是同一道相遇问题,通过Reduce prompt,ChatGPT输出:要解答摩托车共行驶了多少千米?我们需要回答以下问题:"两辆汽车相遇需要多长时间?","摩托车在这段时间内共行驶了多少千米?

以上的问题拆解不是非常稳定,有时会包括最终的问题,有时只包括中间的解题步骤,为了保险起见,你可以在解析的问题后面都再加一个原始的问题。

  1. Sequentially Solve 子问题有序回答

把Reduce步骤的子问题解析出来,按顺序输入chatgpt,先回答第一个子问题

再把第一个子问题和回答一起拼接作为上文,这里使用对话history也可以,拼接只是为了直观展示

Least-to-Most最值得借鉴的还是它问题拆分的思路,这在后面被广泛借鉴,例如Agent调用如何拆分每一步的调用步骤,以及如何先思考再生成下一步Action,在这些方案里都能看到Least-to-Most的影子。

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

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

相关文章

vue3全网最全教程-----(3)

目录 4. 路由 4.1. 【对路由的理解】 4.2. 【基本切换效果】 4.3. 【两个注意点】 4.4.【路由器工作模式】 4.5. 【to的两种写法】 4.6. 【命名路由】 4.7. 【嵌套路由】 4.8. 【路由传参】 query参数 params参数 4.9. 【路由的props配置】 4.10. 【 replace属性】…

Java基层医院信息化管理系统云HIS源码

医院信息系统&#xff08;HIS&#xff09;经历了从手工到单机再到局域网的两个阶段&#xff0c;随着云计算、大数据新技术迅猛发展&#xff0c;基于云计算的医院信息系统将逐步取代传统局域网HIS,以适应人们对医疗卫生服务越来越高的要求。 云HIS分系统功能 一、医疗业务子系统…

Kasada p.js (x-kpsdk-cd、x-kpsdk-cd、integrity)

提供x-kpsdk-cd的API服务 详细请私信~ 可试用~ 一、简述 integrity是通过身份验证Kasada检测机器人流量后获得的一个检测结果&#xff08;数据完整性&#xff09; x-kpsdk-cd 是经过编码计算等等获得。当你得到正确的解决验证码值之后&#xff0c;解码会看到如下图 二、cook…

C/C++ BM4 合并两个排序的链表

文章目录 前言题目1. 解决方案一1.1 思路概述1.2 源码 2. 解决方案二2.1 思路阐述2.2 源码 总结 前言 这道题采用两种方式&#xff0c;一种是直接插入法&#xff0c;还有一种就是递归调用。 题目 输入两个递增的链表&#xff0c;单个链表的长度为n&#xff0c;合并这两个链表…

用IDEA创建/同步到gitee(码云)远程仓库(保姆级详细)

前言&#xff1a; 笔者最近在学习java&#xff0c;最开始在用很笨的方法&#xff1a;先克隆远程仓库到本地&#xff0c;再把自己练习的代码从本地仓库上传到远程仓库&#xff0c;很是繁琐。后发现可以IDEA只需要做些操作可以直接把代码上传到远程仓库&#xff0c;也在网上搜了些…

【linux】head的用法 输出文件开头的内容

在linux可以用find查找一个文件&#xff0c;可以用grep查找符合要求的文件内容&#xff0c;但是有的时候希望查看文件的前几行或者后几行&#xff08;其实这种场景经常可以遇到&#xff0c;比如接触到日志分析的时候&#xff09;&#xff0c;那就应该使用head和tail这两个工具了…

Redis 数据库,忘记密码如何找回或重置

对于 Redis 数据库&#xff0c;如果忘记了密码&#xff0c;可以通过以下步骤进行密码重置&#xff1a; 找到 Redis 配置文件 redis.conf。通常情况下&#xff0c;该文件位于 Redis 安装目录下的 etc 或 conf 文件夹中。使用任意文本编辑器打开 redis.conf 文件。在文件中找到 …

Qt Creator可视化交互界面exe快速入门5

上一期介绍了加法计算器,本期介绍QObject定时器。 首先一样先建个工程,比如我这项目名为QObject 本期的任务就是制作图片在界面上显示,然后每秒定时切换,点击另一个暂停按钮,可以定格当前图片,即取消定时切换功能。 显示图片的我们可以使用显示里面的label 这个用于显示…

机场信息集成系统系列介绍(6):机场协同决策支持系统ACDM*续集

目录 1、A-CDM实施效果评估背景 2、评估核心指标项 &#xff08;1&#xff09;机位效率 &#xff08;2&#xff09;登机效率 &#xff08;3&#xff09;推出效率 &#xff08;4&#xff09;滑行效率 &#xff08;5&#xff09;协同效率 3、其他指标项 &#xff08;1&a…

在 Linux 中使用 cat 命令

cat 命令用于打印文本文件的文件内容。至少&#xff0c;大多数 Linux 用户都是这么做的&#xff0c;而且没有什么问题。 cat 实际上代表 “连接(concatenate)”&#xff0c;创建它是为了 合并文本文件。但只要有一个参数&#xff0c;它就会打印文件内容。因此&#xff0c;它是用…

工程(十七)——自己数据集跑R2live

博主创建了一个科研互助群Q&#xff1a;772356582&#xff0c;欢迎大家加入讨论。 r2live是比较早的算法&#xff0c;编译过程有很多问题&#xff0c;通过以下两个博客可以解决 编译R2LIVE问题&解决方法-CSDN博客 r2live process has died 问题解决了_required process …

华为交换机生成树STP配置案例

企业内部网络怎么防止网络出现环路&#xff1f;学会STP生成树技术就可以解决啦。 STP简介 在二层交换网络中&#xff0c;一旦存在环路就会造成报文在环路内不断循环和增生&#xff0c;产生广播风暴&#xff0c;从而占用所有的有效带宽&#xff0c;使网络变得无法正常通信。 在…

uni-app API接口扩展组件(uni-ui)

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…

【Java | 多线程案例】定时器的实现

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习JavaEE的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 这里写…

Spring Boot快速搭建一个简易商城项目【完成登录功能且优化】

完成登录且优化&#xff1a; 未优化做简单的判断&#xff1a; 全部异常抓捕 优化&#xff1a;返回的是json的格式 BusinessException&#xff1a;所有的错误放到这个容器中&#xff0c;全局异常从这个类中调用 BusinessException&#xff1a; package com.lya.lyaspshop.exce…

2020年认证杯SPSSPRO杯数学建模A题(第一阶段)听音辨位全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 A题 听音辨位 原题再现&#xff1a; 把若干 (⩾ 1) 支同样型号的麦克风固定安装在一个刚性的枝形架子上 (架子下面带万向轮&#xff0c;在平地上可以被水平推动或旋转&#xff0c;但不会歪斜)&#xff0c;这样的设备称为一个麦克风树。不同的麦…

starrocks集群fe/be节点进程守护脚本

自建starrocks集群&#xff0c;有时候服务会挂掉&#xff0c;无法自动拉起服务&#xff0c;于是采用supervisor进行进程守护。可能是版本的原因&#xff0c;supervisor程序总是异常&#xff0c;无法对fe//be进行守护。于是写了个简易脚本。 #!/bin/bash AppNameFecom.starrock…

模型 安索夫矩阵

本系列文章 主要是 分享模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。产品市场战略。 1 安索夫矩阵的应用 1.1 江小白的多样化经营策略 使用安索夫矩阵来分析江小白市场战略。具体如下&#xff1a; 根据安索夫矩阵&#xff0c;江小白的现有产品是其白酒产品&…

缓存cache和缓冲buffer的区别

近期被这两个词汇困扰了&#xff0c;感觉有本质的区别&#xff0c;搜了一些资料&#xff0c;整理如下 计算机内部的几个部分图如下 缓存&#xff08;cache&#xff09; https://baike.baidu.com/item/%E7%BC%93%E5%AD%98 提到缓存&#xff08;cache&#xff09;&#xff0c;就…

OpenAI“一路生花”,致力于超级人工智能研发

原创 | 文 BFT机器人 INTELLIGENT ROBOT OpenAI提供1000万美元的资助用于解决超级智能AI控制问题 OpenAI是人工智能研究领域的领先组织&#xff0c;据媒体称&#xff0c;它正在采取积极措施应对与超级智能AI系统相关的潜在风险。在一项大胆的举措中&#xff0c;该公司宣布将提…