ICLR24大模型提示(8) | 退一步思考:在大型语言模型中通过抽象引发推理

本文主要是介绍ICLR24大模型提示(8) | 退一步思考:在大型语言模型中通过抽象引发推理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【摘要】我们提出了一种简单的提示技术,即后退提示法,它使 LLM 能够进行抽象,从包含特定细节的实例中得出高级概念和第一原理。通过使用概念和原理来指导推理,LLM 显著提高了遵循正确推理路径解决问题的能力。我们使用 PaLM-2L、GPT-4 和 Llama2-70B 模型进行了后退提示法实验,并观察到在各种具有挑战性的推理密集型任务(包括 STEM、知识问答和多跳推理)上的性能显著提升。例如,后退提示法分别将 PaLM-2L 在 MMLU(物理和化学)上的性能提高了 7% 和 11%,将 TimeQA 提高了 27%,将 MuSiQue 提高了 7%。

原文:Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models
地址:https://arxiv.org/abs/2310.06117
代码:无
出版:ICLR 2024
机构: Google, DeepMind

1 研究问题

本文研究的核心问题是: 如何通过抽象的方式唤起大语言模型中的推理能力
::: block-1
假设一个学生在做物理题时遇到这样一个问题:“如果一个理想气体的温度增加2倍,体积增加8倍,那么压强会发生什么变化?”。如果学生直接利用大语言模型去解决这个问题,模型很可能在推理过程中出错。但如果学生先让模型抽象出解决这个问题需要用到的理想气体定律原理,再基于这个原理进行推理,就更有可能得到正确答案。
:::
本文研究问题的特点和现有方法面临的挑战主要体现在以下几个方面:

  • 许多复杂任务包含大量细节信息,大语言模型很难直接从中检索出相关事实来解决任务。
  • 大语言模型在多步推理任务中容易在中间步骤出错,难以遵循正确的推理路径。
  • 现有的提示工程方法如思维链(CoT)提示,虽然一定程度上改善了大语言模型的推理能力,但对于许多复杂任务来说效果仍然有限。
    针对这些挑战,本文提出了一种分两步走的"后退提示"(Step-Back Prompting)方法:
    ::: block-1
    第一步是通过上下文学习向大语言模型展示如何"后退一步",对问题进行抽象,提取出解决问题所需的高层次概念和原理。这一过程就像人类在遇到棘手问题时,会先退一步从更高的视角来审视问题。第二步是基于第一步抽象出的概念和原理,发挥大语言模型的推理能力去解决原始问题。这种做法巧妙地将复杂任务分解为相对简单的抽象步骤和推理步骤,减少了模型在推理过程中出错的可能性。同时,通过让模型自己总结概念和原理,而不是像思维链那样直接给出推理步骤,可以更好地发挥大语言模型的知识和理解能力。
    :::

2 研究方法

2.1 STEP-BACK PROMPTING概述

论文提出了一种名为STEP-BACK PROMPTING的新方法,旨在通过抽象和推理两个步骤来提高大型语言模型在复杂推理任务上的表现。这一方法的灵感来源于人类在面对复杂问题时常常会先退一步,从更高的层次上进行抽象,得到指导问题求解的概念或原理。STEP-BACK PROMPTING的第一步是通过少量示例来演示如何进行抽象,即提示模型从给定的具体问题中抽取出高层次的概念或原理。第二步是在这些高层次概念或原理的基础上进行推理,以得出原始问题的答案。

2.2 第一步:抽象

在抽象步骤中,论文通过少量的示例来演示如何从原始问题中抽取高层次的概念或原理。以物理学问题为例,给定一个关于理想气体压强、体积和温度关系的问题,模型需要首先识别出其中涉及的物理学原理,如理想气体状态方程 P V = n R T PV=nRT PV=nRT。这一步骤并不需要人工定义高层次的概念或原理,而是通过向模型展示一些问题-原理对来引导模型自动抽象。

2.3 第二步:推理

在得到高层次的概念或原理之后,推理步骤则在此基础上进行,以得出原始问题的答案。继续以理想气体问题为例,模型需要将给定的条件(如温度增加到原来的2倍,体积增加到原来的8倍)代入理想气体状态方程,通过一系列推导得出压强的变化。这一步骤并不需要对模型进行微调,而是利用了大型语言模型本身已有的推理能力。

2.6 实验细节

在实验中,论文使用了1到5个few-shot示例来演示如何进行抽象。通过消融实验,论文发现即使只使用1个示例,STEP-BACK PROMPTING也能够在大多数任务上取得较好的性能,这表明抽象是一种更容易学习的技能。此外,论文还讨论了扩大few-shot示例数量并不会明显提升性能。这一结果进一步证明了STEP-BACK PROMPTING的抽象步骤是sample-efficient的,即不需要大量的演示就能学会抽象。

3 实验

3.1 实验场景介绍

本文提出了一种简单的提示方法STEP-BACK PROMPTING,通过抽象化和推理两个步骤,在大型语言模型中唤起深度推理能力。实验评估STEP-BACK PROMPTING在三大类任务(STEM、Knowledge QA、Multi-hop Reasoning)上的性能。

3.2 实验设置

  • Datasets:
    • STEM: MMLU Physics、Chemistry,GSM8K
    • Knowledge QA: TimeQA,SituatedQA
    • Multi-hop Reasoning: MuSiQue,StrategyQA
  • Baseline: PaLM-2L、GPT-4、Llama2-70B模型的标准提示、Chain-of-Thought(CoT)提示等
  • Implementation details: 使用greedy decoding推理
  • metric: 采用PaLM-2L作为judge模型,对目标答案和模型预测答案是否等价进行评估

3.3 实验结果

实验1、STEP-BACK PROMPTING在STEM任务上的性能

目的: 评估STEP-BACK PROMPTING在MMLU Physics、Chemistry和GSM8K等STEM任务上的有效性

涉及图表: 表1,表4

实验细节概述: 在PaLM-2L、GPT-4、Llama2-70B三个模型上,比较STEP-BACK PROMPTING与标准提示、CoT等方法的性能

结果:

  • STEP-BACK PROMPTING在三个模型上的MMLU Physics、Chemistry性能均优于其他方法,提升7%-11%
  • 在GSM8K上,STEP-BACK PROMPTING与CoT等效果相当,可能因为GSM8K原理较简单,不需要抽象化

实验2、STEP-BACK PROMPTING在Knowledge QA任务上的性能

目的: 评估STEP-BACK PROMPTING在TimeQA、SituatedQA等知识密集型问答任务上的有效性

涉及图表: 表2

实验细节概述: 在PaLM-2L上,比较STEP-BACK PROMPTING与标准提示、CoT、检索增强(RAG)等方法的性能

结果:

  • TimeQA上,Step-Back+RAG达到最佳的68.7%,比PaLM-2L提升27%
  • SituatedQA上,Step-Back+RAG达到61%,略逊于GPT-4的63.2%
  • STEP-BACK PROMPTING能更好地检索高级概念的fact,用于grounding最终的推理

实验3、STEP-BACK PROMPTING在Multi-hop Reasoning任务上的性能

目的: 评估STEP-BACK PROMPTING在MuSiQue、StrategyQA等多跳推理任务上的有效性

涉及图表: 表3

实验细节概述: 在PaLM-2L上,比较STEP-BACK PROMPTING与标准提示、CoT、RAG等方法的性能

结果:

  • MuSiQue上,Step-Back+RAG达到最佳的42.8%,显著优于GPT-4的38.5%
  • StrategyQA上,Step-Back+RAG达到86.4%,同样大幅领先GPT-4
  • 抽象化的强大作用使STEP-BACK PROMPTING能更好解决复杂推理任务

实验4、STEP-BACK PROMPTING在MMLU Physics上的消融实验和错误分析

目的: 更细致地分析STEP-BACK PROMPTING的特性

涉及图表: 图3,图4

实验细节概述:

  • 对STEP-BACK PROMPTING在不同few-shot示例数下MMLU Physics性能进行消融
  • 分析STEP-BACK PROMPTING在MMLU Physics上犯的错误类型

结果:

  • STEP-BACK PROMPTING对few-shot示例数不敏感,1个示例就能获得很好性能
  • STEP-BACK PROMPTING的错误主要属于推理错误,抽象化技能相对容易few-shot学习

实验5、STEP-BACK PROMPTING在TimeQA上的消融实验和错误分析

目的: 更细致地分析STEP-BACK PROMPTING的特性

涉及图表: 图5,图6

实验细节概述:

  • 对STEP-BACK PROMPTING在不同few-shot示例数下TimeQA性能进行消融
  • 分析STEP-BACK PROMPTING在TimeQA上的正误情况

结果:

  • STEP-BACK PROMPTING对few-shot示例数不敏感
  • Step-Back能修正39.9%baseline的错误,而只引入5.6%新错误
  • Step-Back+RAG能修正21.6% RAG的错误,而只引入6.3%新错误

4总结

本论文针对大语言模型(LLM)在多步复杂推理任务上仍然面临挑战的问题,提出了一种名为STEP-BACK PROMPTING的两阶段方法。首先,通过抽象(abstraction)提取高层概念和原则;然后基于这些概念和原则进行推理(reasoning)得到最终答案。在多个涉及STEM、知识型问答、多跳推理的数据集上进行了实验。结果表明,所提方法可以显著提升PaLM-2L、GPT-4、Llama2-70B等多个LLM的表现,相比基线提升高达27%(如在TimeQA数据集上)。
::: block-2
疑惑和想法

  1. 除了人为设计的问题抽象模板,是否可以让LLM自主学习如何针对不同问题形成恰当的抽象?这可能需要更多的Few-shot示例。
  2. 在某些推理链很长的场景中,高层抽象可能丢失一些关键细节。如何权衡抽象粒度与推理难度,值得进一步探索。
  3. 能否将STEP-BACK思想与其他的prompting技术如思维链(Chain-of-Thought)相结合,进一步提升LLM的推理能力?
  4. 除了问答类任务,STEP-BACK是否可以应用于开放式文本生成,提升生成内容的逻辑性与连贯性?
    :::
    ::: block-2
    可借鉴的方法点
  5. 通过抽象简化问题复杂度,降低LLM推理难度的思路可以推广到其他类型任务如代码生成、对话理解等。
  6. 将复杂任务分解为两个子问题(抽象+推理)的方法可以借鉴,设计出更多Prompt形式。
  7. 结合retrieval增强LLM的事实性知识,提升问答正确率的做法值得学习。可以进一步探索如何优化retrieval问题。
  8. 在不同类型LLM上进行全面评测的实践值得借鉴,这有助于理解方法的普适性和界限。
    ::: block-2

这篇关于ICLR24大模型提示(8) | 退一步思考:在大型语言模型中通过抽象引发推理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1044489

相关文章

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

mss32.dll文件丢失怎么办? 电脑提示mss32.dll丢失的多种修复方法

《mss32.dll文件丢失怎么办?电脑提示mss32.dll丢失的多种修复方法》最近,很多电脑用户可能遇到了mss32.dll文件丢失的问题,导致一些应用程序无法正常启动,那么,如何修复这个问题呢... 在电脑常年累月的使用过程中,偶尔会遇到一些问题令人头疼。像是某个程序尝试运行时,系统突然弹出一个错误提

电脑提示找不到openal32.dll文件怎么办? openal32.dll丢失完美修复方法

《电脑提示找不到openal32.dll文件怎么办?openal32.dll丢失完美修复方法》openal32.dll是一种重要的系统文件,当它丢失时,会给我们的电脑带来很大的困扰,很多人都曾经遇到... 在使用电脑过程中,我们常常会遇到一些.dll文件丢失的问题,而openal32.dll的丢失是其中比较

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件