【文献笔记】Automatic Chain of Thought Prompting in Large Language Models

Automatic Chain of Thought Prompting in Large Language Models
原文代码:https://github.com/amazon-research/auto-cot

标题翻译:大规模语言模型中的自动思维链提示

1. 内容介绍

在提示词中提供思考步骤被称为思维链(CoT),这一过程与情境学习(In-Context Learning)密切相关。

思维链提示有两大范式:

  • 一种是利用“让我们逐步思考”这样的简单提示,促进LLM逐步思考
  • 另一种是使用一些人工演示的例子,每个演示都由一个问题和一个通向答案的推理链组成,这一种一般效果好一点

作者想用第一种方式自动的生成推理链的演示,省去人工操作,提出了AutoCoT,它通过对具有多样性的问题进行采样并生成推理链来构建示例

2. 研究目的

在这里插入图片描述

左边是第一种简单提示,右边是人工添加示例的。右边的效果更好,但人工编写在示例的问题及其推理链的设计上都需要花费不少精力。

所以,为了摒弃这种人工设计,作者提出自动思维链(Auto - CoT)范式,让LLM自动构建包含问题和推理链的示例(问题与推理链对)

在生成这个示例的过程中,作者又发现:

  1. 如果这个示例太简单,那对CoT的学习是没有什么帮助的,比如2+3=5这种;
  2. 单纯依赖简单的相似性检索生成示例也有问题:要么原本的推理链可能本来就是错的,导致错误出现传递;要不就是语义太相似学不到东西

=>为了缓解这种问题,Auto-CoT强调示例问题的多样性(示例是否覆盖广泛的语义空间)

3. 前序研究

论文提出了两种基于问题采样的自动化CoT示例构建方法,用于探讨如何有效生成高质量的 CoT 示例

  1. Retrieval-Q-CoT:基于语义相似性检索问题作为示例
  • 语义表示:使用Sentence-BERT将问题转化为固定大小的语义向量表示,

  • 相似性检索:对于测试问题Qtest基于余弦相似度从数据集中检索出k个与其语义最相似的问题

  • 生成推理链:对每个检索到的问题,利用Zero-Shot-CoT方法生成推理链

  • 组合输入:将这k对问题+推理链作为示例,与测试问题Qtest一起输入给LLM,让LLM完成推理

    优点:检索问题时能聚焦于与测试问题相关的问题,提高了示例的针对性
    缺点

    • 如果检索到的问题用Zero-Shot-CoT生成的推理链存在错误,错误容易复制到测试问题上(相似性误导);
    • 示例过于相似时,可能无法涵盖足够广泛的语义特征
  1. Random-Q-CoT:随机采样问题作为示例
  • 随机选择问题:从数据集中随机选k个问题
  • 生成推理链:对每个问题,利用 Zero-Shot-CoT 方法生成推理链
  • 组合输入:将这些随机问题和推理链与测试问题组合输入给LLM
    优点:随机采样的问题多样性更高,能避免Retrieval-Q-CoT中由于语义相似性导致的错误传播
    缺点:随机选择的问题可能与测试问题无关,从而降低推理链的针对性

在这里插入图片描述

Retrieval-Q-CoT在算术上没有Random-Q-CoT好,就是因为缺点1,Zero-Shot-CoT不保证是对的

然后就在另外两个数据集上试了一下不用Zero-Shot-CoT生成推理链,而用有标注的训练,发现Retrieval-Q-CoT就变强了


更细节的研究:

在这里插入图片描述

600个算术问题中,普通的使用Zero-Shot-CoT后答案出错的有128个

然后对这128个用上面两个方法,还出错的占比

Retrieval-Q-CoT出错率很高,就是因为推理链的相似性误导


继续拆分,把原始的600个问题计算语义,然后用K-Means搞了8个聚类,看看到底是哪个类别的问题错误率最高

在这里插入图片描述

类别2就是错误频发集群,说明Zero-Shot-CoT可能缺乏解决目标任务中一些常见问题的能力

多样性理论支持:假设一个错误推理链会对同语义类别的问题产生重大影响。如果示例来自多个类别(增加多样性),即使某些类别的推理链有误,也不会对所有测试问题产生一致性误导


看上去好像和Auto-CoT没关系,实际上是在说Auto-CoT设计中面临的挑战,Auto-CoT的最终目标是减少对人工的依赖

  • Retrieval-Q-CoT提供了一个警示:单纯依赖相似性检索生成示例可能会因错误推理链的累积而导致性能下降。因此,Auto-CoT不仅需要考虑相似性,还必须加入多样性

  • Random-Q-CoT 提供了一个启发: 多样性可以有效缓解错误传播的问题,但其完全随机的方式可能导致示例与测试问题缺乏相关性

=>质量与多样性的平衡,基于这些前序研究,终于可以设计Auto-CoT

4. Auto-CoT

4.1. 总览

在这里插入图片描述

包含两个主要阶段:

  1. 问题聚类:将给定数据集的问题划分为几个聚类;
  2. 示例采样:从每个聚类中选择一个有代表性的问题,然后使用Zero - Shot - CoT生成其推理链
4.1.1. 问题聚类算法

在这里插入图片描述

每个问题用Sentence-BERT转化为固定大小的语义向量

然后用K-Means生成k个聚类

在每个聚类里排序每个问题

4.1.2. 示例采样构造算法

在这里插入图片描述

从每个聚类中选一个代表性的问题

靠聚类中心最近的那个问题会被优先考虑,然后用Zero-Shot-CoT生成推理链,当作备选的示例

选择的准则是:问题不超过60tokens,推理链不超过5步

5. 实验:

5.1. 实验设置

  • LLM:使用GPT-3,text-davinci-002 version with 175B parameters
  • 用了10个数据集,三项任务:(1)算术推理;(2)常识推理;(3)符号推理
  • 示例数量(聚类)k默认为8个,除了AQuA和Letter(4个)、CSQA(7个)以及StrategyQA(6个)这几个数据集

5.2. 基线:

  • Zero-shot:直接让LLM生成答案,“the answer is…”
  • Zero-shot-cot:“let’s think step by step”
  • Few-shot:一些问题和答案对,但没有中间的推理过程
  • Manual-cot:人工的问题-推理链-答案

5.3. 结果

在这里插入图片描述

Auto-cot总是比人工的好(本质上还是想抛弃人工编写)

5.4. 消融

在这里插入图片描述

然后研究了换一下LLM,还是能和人工编写的不相上下


前面也说了,整个过程中答案全是由Zero-shot-cot生成的,所以可能有错误的示例。所以研究了一下,直接从同一聚类中随机采样问题来构建示例

在这里插入图片描述

发现Auto-CoT(使用不同聚类采样)受错误示例的影响更小:即使存在50%的错误示例,其性能仍然没有显著下降

5.5. 考虑一个更复杂的流数据场景

传统CoT的假设是测试问题的完整数据集可以提前获得,从中采样问题生成示例用于推理。

然而,在流数据场景中:测试问题以小批次(batch)逐步到达(初始没有足够多的问题用于聚类或采样),每次只能处理当前批次的问题,并且需要动态生成示例以适应后续批次的推理需求

这种拓展的叫Auto-CoT*,有Bootstrapping的特性

初始:空集合M0

  • 第一批问题到达时,直接使用 Zero-Shot-CoT 生成推理链,存入M
  • 对于每一新的批次使用Mb-1次(上一批存储的问题及推理链)的生成当前批次的示例,
  • 用示例推理解决当前批次的问题后,连带这次生成的示例一起加入Mb

在这里插入图片描述

300个问题,分10批

第一批和zero-shot-cot一样,但随着问题批次的积累,生成的示例会越来越丰富,推理质量也随之提高

展示了实用性

6. 总结

大型语言模型(LLMs)已通过思维链(CoT)提示展现出推理能力。Manual-CoT的卓越性能依赖于人工设计的演示示例。为消除此类人工设计,论文提出Auto-CoT来自动构建演示样本。该方法通过多样性问题采样并生成推理链来构建演示集。在十个公开基准推理数据集上的实验表明:基于GPT-3的Auto-CoT始终达到或超越需要人工设计演示的CoT范式的性能表现。

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

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

相关文章

【Behavior Tree】-- 行为树AI逻辑实现- Unity 游戏引擎实现

行为树简易敌人AI 前言: 有些天没更新新文章了,主要是最近科一有些头疼,而且最近琢磨这个行为树代码有些难受,但是终于熬出头了,MonoGame的系列会继续更新的,今天不说别的就说困扰我两三天的行为树 有限状态…

百度大模型开源,俩条命令、本地启动

百度大模型开源 本地启动手册 安装依赖: python -m pip install paddlepaddle-gpu3.1.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-80_…

rabbitMQ读取不到ThreadLocal消息的bug

rabbitMQ读取不到ThreadLocal消息的bug 当使用消息队列时,监听队列不会运行到主线程上,线程消息之间是不会共享的,故属于主线程的ThreadLocal就读取不到数据的值 主线程名字:main使用消息队列的线程名字:ntContainer#2…

IDEA Maven报错 无法解析 com.taobao:parent:pom:1.0.1【100%解决 此类型问题】

IDEA Maven报错 无法解析com.taobao:parent:pom:1.0.1【100%解决 此类型问题】 报错日志 PS D:\Learn_Materials\IDEA_WorkSpace\Demo\spring_test_demo> mvn clean install -U [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered whi…

函数-1-字符串函数

函数-1-字符串函数字符串函数函数语法字符串函数的使用字符串函数语法案例演示实战练习字符串函数 函数 函数是一段可以直接被另一端程序调用的程序或代码 语法 SELECT 函数名(参数名)大家可能会有那么一点点疑惑, 为什么执行函数还需要加上SELECT语句? 总结一下, 因为SEL…

打破AI落地困局:易路iBuilder的“垂直深耕+开箱即用”破壁之道

中国企业的数字化转型已步入深水区,人力资源管理作为企业核心竞争力的关键引擎,正经历从“信息化”向“智能化”的范式跃迁。在这场以AI为驱动的组织效能革命中,​​易路人力资源科技​​凭借前瞻性的“软件AI服务”战略,推出国内…

Higress离线部署

1.前提条件检查docker和docker compose是否已经具备 [roothost151 ~]# docker -v Docker version 26.1.4, build 5650f9b [roothost151 ~]# docker composeUsage: docker compose [OPTIONS] COMMANDDefine and run multi-container applications with DockerOptions:--all-res…

利用AI技术快速提升图片编辑效率的方法

通过更换背景或进行其他创意编辑,可以为图片赋予新的生命力和视觉效果,使得创意表达更加自由灵活。这款AI抠图工具堪称强大,依托先进的阿尔法通道技术,能够精准、自然地实现图像抠取与背景更换。操作也非常简单,只需将…

Wend看源码-RAGFlow(上)

前言 最近在github上搜罗Rag相关项目的时候,我根据star 搜索到了目前star 最高的一些RAG 项目 ,其中稳居榜首的就是RAGFlow。 RAG stars:>1000 language:Python pushed:>2025-01-01 github RAG 相关项目搜索结果 为了系统性的学习RAG 技术栈&#…

LangChain实现RAG检索增强

1:启动vllm的openai兼容server: export VLLM_USE_MODELSCOPETrue python -m vllm.entrypoints.openai.api_server --model qwen/Qwen-7B-Chat-Int4 --trust-remote-code -q gptq --dtype float16 --gpu-memory-utilization 0.6 2:构建向量数据库 from langchain_…

Redis基础(6):SpringDataRedis

SpringDataRedis简介 SpringData是Spring中专门进行数据操作的模块,包含了对于各种数据库的集成。其中对Redis的集成模块叫做SpringDataRedis(官网地址:Spring Data Redis)。其最核心的特点就是提供了不同Redis客户端的整合&…

B. Shrinking Array/缩小数组

B. Shrinking Array让我们称一个数组 b 为 i 美丽 ,如果它至少包含两个元素,并且存在一个位置 |bi−bi1|≤1 使得 |x| (其中 x 是 #10# #11# 的绝对值)。给定一个数组 a ,只要它至少包含两个元素,你就可以执行以下操作&#xff1a…

【学习笔记】Linux系统中SSH服务安全配置

一、背景知识 以ubuntu为例,查看ssh服务是否安全并配置,执行 ssh -V ssh的配置文件路径:/etc/ssh/sshd_config 二、SSH服务配置文件 1.端口和监听设置 Port 22 含义:指定SSH服务监听的端口号(默认是22&#xff09…

FastAPI + Tortoise-ORM + Aerich 实现数据库迁移管理(MySQL 实践)

在 FastAPI 项目中,Tortoise-ORM 是一个轻量的异步 ORM 框架,适用于 async/await 场景。结合数据库迁移工具 Aerich,可以优雅地管理数据库表结构演进,本文将通过完整流程演示如何在 MySQL 环境下使用。📦 一、环境准备…

7.7日 实验03-Spark批处理开发(2)

使用Spark处理数据文件检查数据检查$DATA_EXERCISE/activations里的数据&#xff0c;每个XML文件包含了客户在指定月份活跃的设备数据。拷贝数据到HDFS的/dw目录样本数据示例&#xff1a;<activations><activation timestamp"1225499258" type"phone&q…

C语言可变参数感悟

#include <stdio.h> #include <stdarg.h> #if 1 /* *在C语言中&#xff0c;可变参函数是指参数数量不固定的函数&#xff0c;比如printf\scanf *可变参函数的语法&#xff1a; *返回类型 函数名&#xff08;固定函数&#xff0c;.....) { //函数体 } *1、包含头文件…

LeetCode 1248.统计优美子数组

给你一个整数数组 nums 和一个整数 k。如果某个连续子数组中恰好有 k 个奇数数字&#xff0c;我们就认为这个子数组是「优美子数组」。 请返回这个数组中 「优美子数组」 的数目。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2,1,1], k 3 输出&#xff1a;2 解释&#xf…

FastAPI Docker环境管理脚本使用指南

作者: 源滚滚AI编程 创建时间: 2025年07月08日 版本: v1.0.0 文档状态: 完成 版权声明 本文档由源滚滚AI编程创作,版权所有。未经作者书面许可,不得复制、分发或用于商业用途。 免责声明 本文档仅用于技术交流和学习目的。作者不对使用本文档内容导致的任何问题承担责任。…

前端常见 HTTP 状态码

作为前端开发者&#xff0c;与后端 API 交互时&#xff0c;HTTP 状态码是判断请求成败的关键信号。理解常见状态码的含义、责任归属及应对策略&#xff0c;能极大提升调试效率和团队协作。以下是关键状态码的详细解析&#xff1a; 首先说一下如何查看状态码&#xff1a; 如上图…

深度解析C语言内存函数(小米面试题)

目录 一、memcpy1.1 代码演示1.2 memcpy的模拟实现 二、memmove2.1 代码演示2.2 模拟实现&#xff08;小米面试题&#xff09; 三、memset3.1 代码演示3.2 总结 四、memcmp4.1 代码演示4.2 总结 总结 一、memcpy &#xff08;memory copy 内存复制&#xff09; 之前文章中写的…