古人云:“退一步海阔天空”。这句话原本含义是面对困难情况时,采取退让或换个角度思考问题,往往能够获得更宽广的视野,能帮助我们发现解决问题的新路径,激发更有策略性的思考。Google DeepMind 提出了 STEP-BACK PROMPTING,通过"退一步"思考,让模型回答出更有高质量的答案。
在自然语言处理(NLP)的领域中,大型语言模型(LLMs)已经成为推动技术进步的关键力量。这些模型通过 Transformer 架构,利用其庞大的参数数量和深度学习的能力,正在不断扩展我们对机器理解语言的能力的边界。然而,尽管在诸如文本生成、翻译和问答等任务上取得了显著成就,LLMs 在处理复杂的多步推理任务时仍然面临挑战。
复杂的多步推理要求模型不仅要理解问题的表面含义,还要能够识别和应用深层次的原则和概念,这通常需要人类专家的知识和经验。例如,在科学、技术、工程和数学(STEM)领域的问题解答中,不仅仅是记忆事实,更多的是运用物理定律、化学方程式等基本原理来推导答案。这些任务对模型的推理能力提出了更高的要求。
谷歌 DeepMind 的研究人员观察到,人类在面对复杂问题时经常会采取“退一步”的策略,通过抽象化来简化问题,从而更容易地找到解决方案。这种策略启发了他们提出了一种新的提示技术:STEP-BACK PROMPTING。该技术鼓励模型在处理问题之前先进行抽象化,即从具体实例中提取出高层次的概念和原则,然后再用这些概念和原则来指导后续的推理过程。
STEP-BACK PROMPTING 主要分为两个步骤:
参考上图,以此问题为例:如果理想气体的温度增加两倍,体积增加八倍,那么该气体的压力 P 会发生什么变化? 首先我们会通过提示词找到背后的抽象问题:此问题背后的物理规则是什么,对于此问题,LLM 会给出关键信息:PV=nRT,然后再让 LLM 基于此关键信息回答用户问题,最终就能得到准确答案。
在 STEP-BACK PROMPTING 中,抽象阶段的作用可以通俗地理解为“提炼核心思想”的过程。 就像在解决一个复杂的谜题时,我们首先需要找出最基本的规则或原则,然后才能应用这些规则来找到解决方案。比如以下几个场景:
首先,STEP-BACK PROMPTING 优于传统的 COT、TDB 等策略(TDB 指的是 Take a Deep Breath,类似于 COT,在 prompt 中添加深呼吸一步一步思考)。
同时,STEP-BACK PROMPTING 作为一种思虑,可以和 RAG 或者其他策略相结合。
STEP-BACK PROMPTING 流程依赖以下几个 Prompt
在具体场景中,这些 prompt 需要单独设计 few-shots。以物理化学题解答场景为例,所用的抽象 Prompt 如下:通过抽象 prompt,LLM 可以得到问题背后的抽象思考,命名为 principles,然后通过总结 prompt,进行最终回答。总结 Prompt 如下:
两个 prompt 中的 few-shots 样本如下所示:
在通用问答中,langchain 也实现了 stepback-qa[1] 逻辑,对应的 prompt 大郅为:
You are an expert at world knowledge. Your task is to step back and paraphrase a question to a more generic step-back question, which is easier to answer. Here are a few examples:"input": "Could the members of The Police perform lawful arrests?""output": "what can the members of The Police do?""input": "Jan Sindel’s was born in what country?""output": "what is Jan Sindel’s personal history?"
中文版本为:
你是世界知识的专家。你的任务是退后一步,将一个问题改述为一个更通用、更容易回答的问题。以下是一些例子:"输入":“The Police的成员可以执行合法逮捕吗?”"输出":“The Police的成员能做什么?”"输入":“Jan Sindel出生在哪个国家?”"输出":“Jan Sindel的个人历史是什么?”
然后用户回答的 prompt 为(langchain-ai/stepback-answer[2]):
You are an expert of world knowledge. I am going to ask you a question. Your response should be comprehensive and not contradicted with the following context if they are relevant. Otherwise, ignore them if they are not relevant.{normal_context}{step_back_context}Original Question: {question}Answer:
在此 demo 案例中,normal_context 采用的事 retriever 结果。可以参考源代码进行详细了解。
本文提出了 STEP-BACK PROMPTING 技术,通过引导大型语言模型(LLMs)进行抽象化思考,以提取高层次概念和原理,从而显著提升了模型在解决 STEM、知识问答和多跳推理等复杂任务上的性能。
stepback-qa: https://github.com/langchain-ai/langchain/blob/master/cookbook/stepback-qa.ipynb
[2]langchain-ai/stepback-answer: https://smith.langchain.com/hub/langchain-ai/stepback-answer?ref=blog.langchain.dev