文献阅读:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

  • 文献阅读:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
    • 1. 文章简介
    • 2. 具体方法
    • 3. 实验结果
      • 1. 数学推理
        • 1. 实验设计
        • 2. 实验结果
        • 3. 消解实验
        • 4. 鲁棒性考察
      • 2. 常识推理
        • 1. 实验设计
        • 2. 实验结果
      • 3. 符号推理
        • 1. 实验设计
        • 2. 实验结果
    • 4. 结论 & 思考
  • 文献链接:https://arxiv.org/abs/2201.11903

1. 文章简介

这篇文章还是一篇关于大模型的prompt调优的文章。

这里,主体的思路是使用Chain of Thought,也就是说把CoT的思路加入到prompt调优当中。和finetune当中使用的CoT方式相似,前者是将答案推导的推理链给出然后交给模型进行finetune,而这里,不在用于finetune,而是将其给出到few-shot learning当中,作为例子来指导模型进行生成推理,从而优化推理过程。

下面是一个具体的CoT prompt的例子:

在这里插入图片描述

而CoT Prompting效果的话,我们可以从下述GSM8K上的效果上一窥大概:

在这里插入图片描述

可以看到,在GSM8K测试集上,CoT Prompting的效果给LLM带来了显著的效果提升,且超过了当前的SOTA结果。

下面,我们就来看一下CoT Prompting的设计以及文中的实验考察。

2. 具体方法

关于CoT Prompting的具体方法设计,其实在上述的样例图中已经展示的比较清晰了,主旨来说,其实就是通过带有CoT的推理链的few shot例子的方式教给LLM推理的思路链,从而使得模型可以模仿其将问题进行拆分从而获得更加合理的回答。

更具体的,文中给出了CoT Prompting的4个主要的优点如下:

  1. CoT Prompting将问题进行了解构,从而将多步的问题拆分为了多个中间子问题,从而使得模型在推理过程中可以获得更多的计算,从而优化推理准确率;
  2. CoT由于解构了问题,从而在回答过程中存在了更多的可解释性,便于调试以及模型的自纠正;
  3. 可拓展性,CoT Prompting的方式可以广泛地用于数学问题,常识推理以及符号推理等问题当中;
  4. 使用上的便捷性,只需要通过几个简单的few shot的case,就能引导模型进行CoT的推理方式;

我们给出一些常见问题当中CoT Prompting使用的case如下:

在这里插入图片描述

下面,我们来看一下文中给出的一些具体的实验考察。

3. 实验结果

文中从数学推理,常识推理以及符号推理三个方面对CoT Prompting的效果进行了具体的考察。

下面,我们来看一下其各自的实验结果。

1. 数学推理

1. 实验设计

对于数学推理的问题,文中使用的测试数据主要包括:

  1. GSM8K
  2. SVAMP
  3. ASDiv
  4. AQuA
  5. MAWPS

而关于Prompt的设计,作为control,文中使用Brown et al.(2020)给出prompt,具体可以参考图一左侧的样例。而作为treatment,则是通过few-shot给出了CoT的样例,同样可以参考图一当中右侧的样例。

最后,关于实验中使用的LLM模型,具体包括以下一些:

  1. GPT-3
  2. LaMDA
  3. PaLM
  4. UL2 20B
  5. Codex

2. 实验结果

给出文中具体的实验结果如下:

在这里插入图片描述

可以看到:

  • 和早期的CoT实验效果相仿,对于小模型,CoT Prompting不一定能够带来提升,但是对于大模型,CoT Prompting可以带来显著的效果提升。

3. 消解实验

对于数学推理问题,中文还给出了CoT Prompting的一些消解实验,具体考察了以下几方面的影响:

  1. 用公式替换文本描述
  2. 依然只给出公式,不过公式中用变量名替换掉纯数字
  3. 将CoT的解释放置到给出答案之后,而不是之前

得到的实验结果如下:

在这里插入图片描述

可以看到,普遍效果都不太好,而这些也都比较好理解:

  • LLM显然对于语义的理解方面做的比公式的理解能力会强很多;
  • 前置解释可以辅助语言模型对于后续答案概率的生成优化。

4. 鲁棒性考察

而除了上述实验之外,文中还对CoT Prompting的鲁棒性进行了考察,具体而言,通过:

  1. 给出不同的人写作的CoT Prompting进行考察
  2. 用不同的样例作为few-shot的case

得到的结果如下:

在这里插入图片描述

可以看到:

  • 虽然存在一定的效果波动,不过整体而言CoT Prompting依然可以稳定地带来效果上的提升。

2. 常识推理

文中除了对于数学推理之外,还对常识推理进行了一些实验考察。

1. 实验设计

我们首先来看一下常识推理的一些实验设计。

在数据集选择方面,文中使用了如下一些测试数据集:

  1. CSQA
  2. StrategyQA
  3. Date
  4. Sports
  5. SayCan

而关于prompt以及模型的设计,则保持和前述数学推理相一致。

2. 实验结果

给出文中的实验结果如下:

在这里插入图片描述

可以看到:

  • 除了在CSQA数据集上没有获得较大的提升之外,在其他数据集上,CoT Prompting都带来了很大的性能提升,甚至在Sports数据集上超出了人类的水平。

3. 符号推理

最后,我们来看一下文中对于符号推理的实验结果。

1. 实验设计

首先,在实验设计方面,其他方面同样和之前的两个实验保持一致,只有在数据集上存在区别。

具体而言,这里使用如下两个数据集:

  1. Last letter concatenation
  2. Coin flip

2. 实验结果

给出文中的实验结果如下:

在这里插入图片描述

同样可以看到:

  • CoT可以稳定地带来效果提升。

4. 结论 & 思考

综上,我们基本可以得出结论:

  • 通过在few-shot learning当中加入CoT的方式,可以使得模型在生成过程中模仿CoT的方式,从而优化生成的结果。

这个结论本身倒是还挺好理解的,易用且有效,在这个以优化prompt为王的时代里,倒是可以在工作当中帮上大忙了。

不过这里我个人觉得,更本质的特征还是如何诱导模型进行CoT推理,诚然,这里是使用了一个最直接的方式,就是在few-shot当中直接加入样例,但是对于一些context非常长的case,这不一定可行,但是核心思路依然是可以借鉴的,在后续的prompt调优当中,个人觉得不失为一种优化的思路。

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

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

相关文章

单片机-蜂鸣器

简介 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电 蜂鸣器主要分为 压电式蜂鸣器 和 电磁式蜂鸣器 两 种类型。 压电式蜂鸣器 主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后&…

Excel VSTO开发7 -可视化界面开发

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 7 可视化界面开发 前面的代码都是基于插件启动或者退出时,以及Excel Application的相关事件,在用户实际操作…

maven管理android项目

maven管理android项目 1.安装maven-android-sdk-deployer,下载地址:https://github.com/mosabua/maven-android-sdk-deployer 2.解压缩大英文路径文件夹 3.在压缩后的根目录执行mvn clean install -P 2.3.3(2.3.3指的是android版本号&#x…

创建数据库

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 语法格式: create database 数据库名称 charset 字符集; 其中: create: 创建 database: 数据库 charset: 字符集 说明: 常见的字符集:utf8(最常用…

leetcode 925. 长按键入

2023.9.7 我的基本思路是两数组字符逐一对比,遇到不同的字符,判断一下typed与上一字符是否相同,不相同返回false,相同则继续对比。 最后要分别判断name和typed分别先遍历完时的情况。直接看代码: class Solution { p…

docker介绍和安装

docker安装 下载Docker依赖组件 yum -y install yum-utils device-mapper-persistent-data lvm2 设置下载Docker的镜像源为阿里云 yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo 安装Docker服务 yum -y install docker-ce 安…

CSS 斜条纹进度条

效果&#xff1a; 代码&#xff1a; html: <div class"active-line flex"><!-- lineWidth&#xff1a;灰色背景 --><div class"bg-line"><div v-for"n in 30" class"gray"></div></div><div…

手写数据库连接池

数据库连接是个耗时操作.对数据库连接的高效管理影响应用程序的性能指标. 数据库连接池正是针对这个问题提出来的. 数据库连接池负责分配,管理和释放数据库连接.它允许应用程序重复使用一个现有的数据路连接,而不需要每次重新建立一个新的连接,利用数据库连接池将明显提升对数…

非结构化数据之XPath学习

1、XPath语法 XPath 是一门在 XML 文档中查找信息的语言。 XPath 可用来在 XML 文档中对元素和属性进行遍历。 <?xml version"1.0" encoding"ISO-8859-1"?> <bookstore> <book><title lang"eng">Harry Potter</t…

【excel】万字长文,一些实用excel技巧,金融财务行业巨实用(最后有干货,配合chatgpt让你成为excel大佬)

本文主要记录一些在工作中经常能用到的excel技巧&#xff0c;能够帮助我们提高工作效率。在文章的最后还会通过几个实战例子来加深大家的理解。建议把本文作为备查文&#xff0c;不需要在阅读本文的当下就将这些技巧掌握&#xff0c;只需了解&#xff0c;哪些东西通过excel是能…

ComfyUI 安装

背景&#xff1a; stable diffussion XL最先适配&#xff0c;专业性强的SD操作界面 安装步骤&#xff1a; git clone GitHub - comfyanonymous/ComfyUI: A powerful and modular stable diffusion GUI with a graph/nodes interface. 1、pip install torch torchvision torc…

【CUDA OUT OF MEMORY】【Pytorch】计算图与CUDA OOM

计算图与CUDA OOM 在实践过程中多次碰到了CUDA OOM的问题&#xff0c;有时候这个问题是很好解决的&#xff0c;有时候DEBUG一整天还是头皮发麻。 最近实践对由于计算图积累导致CUDA OOM有一点新的看法&#xff0c;写下来记录一下。包括对计算图的一些看法和一个由于计算图引发…

【小沐学NLP】Python使用NLTK库的入门教程

文章目录 1、简介2、安装2.1 安装nltk库2.2 安装nltk语料库 3、测试3.1 分句分词3.2 停用词过滤3.3 词干提取3.4 词形/词干还原3.5 同义词与反义词3.6 语义相关性3.7 词性标注3.8 命名实体识别3.9 Text对象3.10 文本分类3.11 其他分类器3.12 数据清洗 结语 1、简介 NLTK - 自然…

python的包管理

要在 mypackage 包外使用 mypackage 包里的 speak.py 文件以及 newpackage 包里的 jump.py 文件&#xff0c;你需要确保以下几个步骤&#xff1a; 确保目录结构正确&#xff0c;如下所示&#xff1a; mypackage/__init__.pyspeak.pynewpackage/__init__.pyjump.py在 speak.py…

介绍OpenCV

OpenCV是一个开源计算机视觉库&#xff0c;可用于各种任务&#xff0c;如物体识别、人脸识别、运动跟踪、图像处理和视频处理等。它最初由英特尔公司开发&#xff0c;目前由跨学科开发人员社区维护和支持。OpenCV可以在多个平台上运行&#xff0c;包括Windows、Linux、Android和…

leetcode 43.字符串相乘

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;字符串相乘 思路&#xff1a; 代码&#xff1a; class Solution { public:string multiply(string num1, string num2) {if (num1 "0" || num2 "0") {return "0";}/*0 1 2 下标1 2…

Python中的Numpy向量计算(R与Python系列第三篇)

目录 一、什么是Numpy? 二、如何导入NumPy? 三、生成NumPy数组 3.1利用序列生成 3.2使用特定函数生成NumPy数组 &#xff08;1&#xff09;使用np.arange() &#xff08;2&#xff09;使用np.linspace() 四、NumPy数组的其他常用函数 &#xff08;1&#xff09;np.z…

C++斩题录|递归专题 | leetcode50. Pow(x, n)

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

机器学习---决策树分类代码

1. 计算数据集的香农熵 from numpy import * import numpy as np import pandas as pd from math import log import operator #计算数据集的香农熵 def calcShannonEnt(dataSet): numEntrieslen(dataSet) labelCounts{} #给所有可能分类创建字典 for featVec …

初识Java 7-1 多态

目录 向上转型 难点 方法调用绑定 产生正确的行为 可扩展性 陷阱&#xff1a;“重写”private方法 陷阱&#xff1a;字段与静态方法 构造器和多态 构造器的调用顺序 继承和清理 构造器内部的多态方法行为 协变返回类型 使用继承的设计 替换和扩展 向下转型和反射…