来啦来啦!关于CoT提示策略综述

b878c6021fbb6e7b6dd26ea75e169030.png

深度学习自然语言处理 原创
作者:wkk

思维链(CoT)是一个循序渐进、连贯的推理链,通常被用作大型语言模型(LLM)的提示策略并体现出了巨大的优势。近年来,基于CoT提示的展示出的效果吸引了众多的研究。

然而,对CoT提示的关键因素仍缺乏系统的总结,对提示的使用也缺乏全面的指导。

为了更深入地了解CoT提示,本文对当前的广泛研究进行了调查,对可能影响CoT提示效果的几个因素进行了系统全面的分析,并介绍了在这些讨论下如何更好地将其应用于不同的应用中。通过进一步分析CoT提示面临的挑战,提出了一些未来的发展方向,为相关研究提供总体参考。

论文:Towards Better Chain-of-Thought Prompting Strategies: A Survey
地址:https://browse.arxiv.org/abs/2310.04959

简介

基于人类的自然逐步思维能力的方式,研究人员基于LLM提出了思维链(CoT)提示来解决多步推理问题。这种提示策略试图结合中间步骤来指导LLM进行渐进式推理,并在许多推理基准上实现了令人惊讶的改进,即使在包括跨域在内的一些任务。

CoT 提示确保了逻辑和可跟踪的推理过程,这对于人类理解更具有可解释性。

CoT提示的结果引发了对不同模型上不同任务的CoT提示策略设计的探索热潮。但在设计具体策略之前,有必要系统地了解哪些因素可能影响CoT提示的表现。此外,尽管CoT提示在推理任务中显示出其优势,但它在通用性和不透明机制等方面仍有一些局限性。为了更好地指导进一步的工作,有必要对CoT的当前挑战进行分析。

e6a37494d87d4cf6a3666b7668d2afd2.png

本文对CoT进行了全面而系统的分析。首先,将CoT提示形式化,下图展示了CoT的通用方法,这构成了分析和讨论的基础。然后,确定了四个显著影响CoT提示性能的关键因素:

  • 任务类型

  • 提示设计

  • 扩展策略

  • 模型

背景知识

LLMs

大型语言模型(LLMs)是指使用大量语料库预先训练的大型转换器架构模型。随着模型大小和训练语料库的增加,它开始出现一些新的能力。近年来,LLM在许多NLP领域取得了显著进展。

提示和上下文学习

提示是一种通过以特定方式修改输入样本来更好地引出语言模型训练阶段获得的知识和能力的策略。上下文学习是一种特殊设计的提示策略,它在查询样本前面加上一些示例演示,包括查询和答案,使模型能够类似地进行预测。上下文学习是一种无需训练的范式,可以在Few-shot场景下显著提高LLM性能和许多NLP基准的数据效率。

LLM推理

推理是一个复杂的过程,包括使用证据、逻辑思维和论证。最近,结合上下文学习策略,LLM在推理任务方面取得了显著进展。特别是在思维链提示的帮助下,神经网络在许多推理基准上取得了前所未有的突破。一些工作表明,当语言模型处于一定规模时,推理能力可能会出现。

什么是CoT

定义:CoT提示是专门设计的输入序列,用于指示模型生成连贯的一系列中间推理步骤

其中,“中间推理步骤”指的是不同工作的差异。本文的研究范围是对当今多步任务的提示工作更普遍的覆盖,范围从常见的逐步推理到多步任务部署,涵盖了各种非编程问题划分过程,包括子问题分解和多步部署。

CoT提示是一种利用CoT提示的策略,其工作原理为:
如上图所示,给定一个特定任务,并设计特定的CoT prompt。在可选扩展策略的帮助下,模型根据输入提示预测答案。其中taskpromptsextension strategiesmodels是CoT的关键因素,对最终性能有重大影响。下图展示了各种CoT提示策略的分类。5c2a185d4e7a39a68a549197dcf677f1.png

任务类型

任务是使用CoT提示时的目标。在设计CoT提示策略之前,有必要澄清哪些类型的任务容易受到CoT提示的推动。

闭域推理与问答

此类型的任务包括问题中的所有必要条件和背景知识。模型需要选择信息丰富的材料并对这些材料进行推理。CoT提示可以提供一种推理模式来指导如何选择关键材料并对其进行推理。

开放域推理和问答

这类任务旨在回答基于大规模非结构化知识库的问题,并且不包括问题中所有必要的知识。在这种情况下,LLM被迫使用自己的知识来解决问题,并且CoT提示的性能在很大程度上取决于LLM的知识质量。有些任务甚至需要对自然语言的语义有更深入的理解。不恰当地将CoT提示引入这些知识或面向语义的任务甚至可能损害性能。为了解决这些问题,一些工作使用外部工具来注入所需的知识。

代码生成

代码生成旨在根据输入指令生成代码。由于代码的内部逻辑形式,CoT的逐步推理链与代码生成所需的能力是一致的。

prompts设计

当任务确定后,有必要设计一个有效的CoT提示。除了查询之外,CoT提示中还有两个特殊元素:CoT示例和文本指令。CoT示例是几个逐步推理的范例,文本指令是主动指导渐进式解决过程的文本序列。CoT提示应该至少包含其中一个元素。通常,带有(或不带有)示例的CoT提示称为few-shot CoT(或zero-shot CoT)。下图展示了几个CoT提示示例。

fc18ba3db90b63ea10b1224fc70fdf86.png

示例

在Few-shot的CoT中,示例是必不可少的部分。如上图所示,CoT示例是一个(问题、理由、答案)三元组,其中理由包含从问题到答案的中间推理步骤。

文本说明

LLM显示出即使在Zero-shot情况下也能遵循明确指令的能力。受此启发,一些工作发现,用“让我们一步一步地思考”这样的主动理论指令明确提示LLM可以指导渐进推理。在没有任何示例的情况下,与非CoT方法相比,这种简单的Zero-shot策略展示出出色效果,这意味着这些文本指令可以类似地引发LLM的推理能力。一些工作还发现,将这些文本指令与Few-shot CoT相结合可以实现进一步的性能提升。

扩展策略

给定一个 CoT 提示,有许多可能的扩展策略来增强提示性能。

集成

集成学习是一种有效的策略,它结合了不同的学习器,与单个学习器相比提高了模型性能。最近的工作在 CoT 提示上使用集成策略时取得了更好的性能,这有助于纠正单个推理过程产生的错误,并将不同的提示和演示集成到单个预测中。然而,对于 vanilla CoT 已经有效解决的问题,不必要的集成可能会向自信的预测注入噪声,而是会损害模型性能。

子问题划分

当面对问题需要递归推断或比示例更难时,将问题划分为几个子问题可能是一个更好的选择。

与普通 CoT 相比,子问题划分策略将复杂问题分解为一系列简单的子问题,更容易解决,使模型能够完成比示例更难的查询问题。此外,在处理每个子问题时,模型不受与当前子问题无关的信息,更多信息信息容易指导有效的推理。此外,不同子问题所需的能力是不同的。这种策略使得部署具有不同模块的每个子问题并注入外部辅助更加方便。

外部辅助

为了扩展LLM的能力并帮助LLM在更广泛的应用程序中执行,在推理过程中引入外部来源(包括知识、工具或代码解释器)是很有用的。知识注入在需要外部知识的任务中尤其有用,如常识性QA。工具和代码辅助策略在需要精确数值计算或搜索引擎等LLM能力之外的能力的问题上表现出优势。通过适当的提示,LLM可以生成任务部署链,以指示何时何地调用外部工具、代码解释器甚至其他模型,以解决更复杂的问题。

合理化

通常,LLM预测的基本原理会犯一些错误并导致错误的答案。如果这些错误可以被纠正,就有可能合理化推理过程并提高性能。人工合理化是有效的,但成本太高。

一个简单的方法是使用一些提示来引导模型重新思考。当模型产生错误的答案时,可以告诉模型正确的答案,并要求它自我修正不合逻辑的推理,并在答案的基础上重新生成基本原理。这个过程可以被视为一个自学习过程,模型可以在监督答案的情况下逐步提高推理能力。然而,仍然很难将不完美的理由合理化,从而得出正确的答案。

模型

LLM作为解决问题的主要角色,对最终预测有着显著的影响。本文从模型大小和训练语料库两个方面进行讨论,从而分析哪些类型的模型在CoT提示下更有效。

模型大小

许多研究发现,模型相对较小(通常低于 10 亿参数),CoT 不会保持积极影响。但是随着模型大小增加到一定大小(超过 10 亿参数),它将表现出突然的性能中断。这意味着 CoT 是 LLM 的涌现能力。使用 CoT 提示小型模型通常会导致幻觉,这通常表现为流畅但不合逻辑的生成。

但通过CoT增强小模型推理能力仍然是可能的。一些工作用自建的CoT数据集或知识提炼对小模型进行了微调,使小模型兼容,即使在很Few-shot的场景下也能执行逐步推理。然而,除了CoT调整后的逐步推理之外,小模型会忘记其他任务的一般能力,并且在需要大量知识进行推理的任务上仍然落后于大模型。

训练语料库

LLM表现出的能力来源于训练语料库。一些工作发现,当使用CoT提示时,用代码预训练的模型可以获得更多的性能增益。指令调整还显示出与CoT提示和Zero-shot学习表现的相关性,这可以通过指令调整的训练语料库中CoT样样本的存在来说明。最近的工作甚至试图将CoT样本明确地纳入训练语料库,以增强逐步推理能力,避免过度拟合单调的样本模板。

总之,将上述内容纳入训练语料库可以为LLM引入更多的推理材料和必要的知识,从而对CoT推理能力产生深远影响。

未来工作

本文探讨了CoT未来的工作可以从FaithfulnessGeneralitySelf-rationalizationRationale AnalysisTheoretical Analysis等方面展开。

总结

本文回顾了思想链提示的研究现状。强调了可能影响CoT提示性能的四个因素,并介绍了基于这些因素的方法。给出了在面对不同环境时正确利用CoT提示的总体方向。此外,还讨论了当前CoT提示方面的挑战,并提出了一些潜在的方向。


备注:昵称-学校/公司-方向/会议(eg.ACL),进入技术/投稿群

15cb84a8ee348396637534bf096c2873.png

id:DLNLPer,记得备注呦

4565c4a4cff7829ada33fc5cf6a89bbd.png

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

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

相关文章

3d tiles规范boundingVolume属性学习

3d tiles的瓦片(Tiles)包含一些属性,其中第一项是boundingVolume;下面学习boundingVolume; boundingVolume,这个翻译为边界范围框,如果直译为边界体积可能有问题,其实就是包围盒的意…

【工具软件】mediamtx——网页、vue3项目中播放 rtsp 视频流(支持265转码)

声明 本文只做 mediamtx 的使用实操,请务必参考下面的博客,,我也参考下面的大佬博客,感谢唯一602的无私分享: 在web页面中直接播放rtsp视频流,重点推荐:mediamtx,不仅仅是rtsp mediamtx 介绍 …

从一部iPhone手机看芯片的分类

目录 问题 iPhone X 手机处理器:A11 iPhone X 的两大存储芯片 数字 IC CPU:计算设备的运算核心和控制核心 GPU:图形处理器 ASIC:为解决特定应用问题而定制设计的集成电路 存储芯片:DRAM 和 NAND Flash iPhone…

puppeteer

目录 介绍启动方法功能一、爬虫优势如何实现爬虫小demo 功能二、执行脚本百度搜索脚本demo 功能三、获取cookie(这个只能是模拟浏览器当前进入网页的cookie不是平时用的下载的的浏览器的cookie)功能四、监控网页,进行性能分析 介绍 puppetee…

php以半小时为单位,输出指定的时间范围

//可预订小时范围$hour [];for ($i$startHour*3600;$i<$endHour*3600;$i1800){//以半小时为单位输出$startHourItem date(H:i,strtotime(date(Y-m-d))$i);//小时开始$endHourItem date(H:i,strtotime(date(Y-m-d))$i1800);//当前时间再加半小时$hourItemStr $startHourI…

Redis 学习笔记

文章目录 一、基础命令1.1 通用命令1.2 String1.3 Hash1.4 List1.5 Set1.6 SortedSet 二、Redis 和数据库的数据一致性三、缓存穿透四、缓存雪崩五、缓存击穿 一、基础命令 1.1 通用命令 KEYS pattern 查找所有符合给定模式 pattern 的 key&#xff0c;其中 * 匹配零个或多个…

Webmin远程命令执行漏洞复现报告

漏洞编号 CVE-2019-15107 漏洞描述 Webmin是一个基于Web的系统配置工具&#xff0c;用于类Unix系统。密码重置页面中存在此漏洞&#xff0c;允许未经身份验证的用户通过简单的 POST 请求执行任意命令。 影响版本 Webmin<1.920 漏洞评级 严重 利用方法&#xff08;利…

linux C++ vscode连接mysql

1.linux使用Ubuntu 2.Ubuntu安装vscode 2.1 安装的是snap版本,直接打开命令行执行 sudo snap install --classic code 3.vscode配置C 3.1 直接在扩展中搜索C安装即可 我安装了C, Chinese, code runner, 安装都是同理 4.安装mysql sudo apt update sudo apt install mysql-…

git主干master分支回滚到历史版本(不会有错误的提交记录)

master版本,“合并错了”的回滚步骤: (这样做不会有“合并错了”的提交记录) 注意&#xff1a;操作前先对master拉一个分支出来&#xff0c;做备份&#xff1b; 1. 在gitLab的上一次合并记录&#xff0c;复制commit-id ​ 2. 在本地执行检出master版本&#xff0c;执行 git re…

再谈Java泛型

一.类型参数的约束 我们可以对泛型传进来的参数做一些约束&#xff0c;比如说 用extends表明传进来的参数类型必须是必须是某个类型的子类型或者本身 当然也可以用接口约束&#xff0c;也是用extends表明传进来的参数类型必须实现某个接口。用&连接&#xff0c;注意class…

Avalonia常用小控件Charts

1.项目下载地址&#xff1a;https://gitee.com/confusedkitten/avalonia-demo 2.UI库Semi.Avalonia&#xff0c;项目地址 https://github.com/irihitech/Semi.Avalonia 3.Charts库&#xff0c;LiveChartsCore.SkiaSharpView.Avalonia&#xff0c;Nuget获取只有预览库&#x…

CPU性能分析--火焰图使用

记录工具使用说明&#xff0c;火焰图原理网上分析很多。主要用来分析函数调用栈占用的cpu利用率&#xff0c;分析函数性能。 perf安装&#xff1a; sudo apt-get install linux-tools-common sudo apt-get install linux-tools-"(uname -r)" sudo apt-get install …