【COT】Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

简介: 【COT】Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

主要解决什么问题

语言模型越来越大,效果越来越好。但是在一些具有挑战性的任务上面,比如arithmetic, commonsense, 和symbolic reasoning上面依旧不能够很好地去处理。

作者提出了chain of thought的一系列prompt方法来进行改进,在不调整模型参数的情况下,在多个任务中取得了SOTA的成绩。

采用什么方法

如上图所示,作者在给定的QA示例里面,添加了一些中间推倒步骤,导致模型最终的输出能够正确。数学化描述就是将prompt组成<input, chain of thought, output>的方式。chain of though就是中间一系列的推倒过程。

chain of thought的好处如下(拆分复杂任务,可解释性更强,处理任务能力更强):

实验分析与结果

Chain of thought的方法可以超越之前的finetune,和之前最好的效果。chain of thought在小模型上并没有提升,只有当模型大于100B的时候才会有这种效果。侧面反映了他们的instruct fine-tune不够,COT很难激发他的in-context 推理能力。

小模型产生的输出更加流畅,但是产生了不合乎逻辑的思维链,导致比standard prompt的输出结果更低。任务比较简单的话,也体现不出差异,如MAWSP,SVAMP这两个数据集上差异不明显,而GSM8K上任务比较复杂,差距就体现出来了。在100B以上模型效果很好,甚至超过了之前基于监督训练的SOTA模型 (橙色的线)。

是大模型在参数量大了之后拥有了COT的能力,还是通过instruct fine-tune给大模型注入了这个能力?值得考究。

消融实验

除此之外,作者还做了一些消融实验。

  • Equation only

具体prompt如下:

对于一两步能够推倒出来的,这个Equation不Equation最终效果都差不多。

  • Variable compute only

排除输入更长,消耗了更多计算量,模型思考更加仔细的影响。作者往prompt里面补充点号到prompt中,进行对比。发现效果也并不好,因此不是这个原因。

  • chain of thought after answer

<input, chain of thought, output>的顺序是比较重要的,把chain of thought放到后面变成<input, output, chain of thought>的话,效果就会变差。

  • 鲁棒性测试

作者还分析了不同的写作prompt的风格对chain of thought的影响。最终发现都会比standard prompt效果好。

Commonsense Reasoning

作者还在一些常识性问题上做了推理能力对比:

Symbolic Reasoning

作者在符号推理问题上做了分析对比

  • Task 1: Last letter concatenation: 名字拼接,比如“Amy Brown” → “yn”
  • Task 2: 硬币推理 “A coin is heads up. Phoebe flips the coin. Osvaldo does not flip the coin. Is the coin still heads up?”

作者同时做了in-domain test和out-of-domain (OOD) test。

问题与展望

  1. 如果继续扩大模型,效果还会变好吗?
  2. 还有其他更好的prompt方法吗?
  3. 怎么说明模型确实在做推理?
  4. 是否有比手动写prompt更好的方式?
  5. 怎么确保推理path的正确性?
  6. 怎么在小模型上实现类似的效果?
相关文章
|
Ubuntu 机器人 Linux
|
Android开发 芯片 开发者
adb 查看安卓手机 CPU 类型(armeabi、armeabi-v7a、arm64-v8a ...)
adb 查看安卓手机 CPU 类型(armeabi、armeabi-v7a、arm64-v8a ...)
6430 0
|
编译器 C++ 容器
【c++丨STL】基于红黑树模拟实现set和map(附源码)
本文基于红黑树的实现,模拟了STL中的`set`和`map`容器。通过封装同一棵红黑树并进行适配修改,实现了两种容器的功能。主要步骤包括:1) 修改红黑树节点结构以支持不同数据类型;2) 使用仿函数适配键值比较逻辑;3) 实现双向迭代器支持遍历操作;4) 封装`insert`、`find`等接口,并为`map`实现`operator[]`。最终,通过测试代码验证了功能的正确性。此实现减少了代码冗余,展示了模板与仿函数的强大灵活性。
448 2
|
数据采集 人工智能 数据可视化
InternVL 2.5,首个MMMU超过70%的开源模型,性能媲美GPT-4o
近期Internvl2.5发布,性能与GPT-4o和Claude-3.5-sonnet等领先的商业模型相媲美,成为首个在MMMU上超过70%的开源模型,通过链式思考(CoT)推理实现了3.7个百分点的提升,展示了强大的测试时间可扩展性潜力。
1490 25
|
Java Maven
Maven: settings.xml、pom.xml完整配置
Maven: settings.xml、pom.xml完整配置
2688 0
|
消息中间件 前端开发 Java
【国产化软件】接口开放平台:Java+Swagger+Vue3,适配移动端
本文档介绍了基于Java的开放平台技术栈及使用流程,涵盖从注册开发者账号、创建应用、申请令牌到调用API接口的全过程。平台提供丰富的接口管理和统计功能,支持开发者在线维护个人资料和接口令牌,同时兼容移动设备访问和黑夜模式。技术栈方面,后端采用Spring Boot 3 + MySQL + Redis + RabbitMQ + Nacos,前端则基于Vue3 + TypeScript 5.x + Element Plus + UnoCSS。访问开放平台的地址为:http://java.test.yesapi.cn/platform/。
HTML 统一资源定位器(Uniform Resource Locators)1
统一资源定位器(URL)是用于标识互联网上资源位置的标准格式。URL通常由方案、主机、域名、端口、路径和文件名组成,如 `http://www.runoob.com/html/html-tutorial.html`。大多数用户通过域名访问网站,因为域名比IP地址更容易记忆。URL在Web浏览器中用于请求页面,通过 `&lt;a&gt;` 标签实现链接跳转。
|
安全 应用服务中间件 PHP
文件上传解析漏洞,以及检测方式的绕过
文件上传解析漏洞,以及检测方式的绕过
介绍文档:proto 文件的关键字介绍
介绍文档:proto 文件的关键字介绍
840 6
|
缓存 NoSQL 数据处理
原生php实现redis缓存配置和使用方法
通过上述步骤,你可以在PHP项目中配置并使用Redis作为高性能的缓存解决方案。合理利用Redis的各种数据结构和特性,可以有效提升应用的响应速度和数据处理效率。记得在实际应用中根据具体需求选择合适的缓存策略,如设置合理的过期时间,以避免内存过度消耗。
556 0