人工智能咨询培训老师叶梓 转载标明出处
虽然大模型(如GPT-4)在开放域问答(ODQA)、数学、科学以及自主智能体等领域展现出了非凡的推理能力,但是这些模型在进行复杂推理时,往往需要处理大量的参数,导致推理成本高昂。而且由于模型的不透明性,它们在适应特定任务时的灵活性受限。为了解决这一问题,密歇根大学和苹果公司的研究人员提出了一种新策略,旨在通过分解问题解决过程,提高推理效率并降低成本。
研究方法
研究者提出了一种两阶段策略:问题分解阶段和问题解决阶段。首先,将复杂问题分解为更小、更易管理的子问题,这一阶段主要依赖于语义理解和查询解析;然后,在问题解决阶段,利用大量的领域知识来解决这些子问题。这种策略旨在提高大模型(LLMs)在处理复杂问题时的效率和灵活性。
问题分解阶段的目标是将一个复杂的查询或问题拆解成若干个更小、更易于处理的子问题。这样做的目的是为了降低问题解决的复杂性,使得模型能够更加高效地处理每个子问题。在这个阶段,模型需要对输入的查询进行自我反思,生成一种类似于“思维链”(Chain-of-Thought,简称CoT)的推理链。
在问题解决阶段,模型将针对前一阶段生成的每个子问题给出答案。这些答案随后被综合起来,形成对原始复杂问题的最终解答。这个过程涉及到对大量领域知识的理解和应用,以确保能够准确解决每个子问题。
将问题分解和问题解决解耦开来,可以带来几个优势:
- 提高泛化能力:通过将问题分解为子问题,模型可以更好地泛化到未见过的问题上,因为子问题可能更具有普遍性。
- 降低推理成本:在某些情况下,只需要提炼出推理链中的分解部分,而不是整个推理过程,这可以显著降低模型运行时的计算成本。
- 提升灵活性:解耦后的模型可以更容易地进行优化和定制,因为它们可以独立于大型“黑盒”模型来训练和调整。
分解能力提炼策略
当使用“黑盒”大型语言模型进行推理时,生成分解后的子问题可能会非常昂贵,尤其是当推理链较长时。而且由于这些模型的不透明性,优化或定制分解过程面临挑战。为了解决这些问题,研究者提出了利用一个较小的、可训练的学生模型作为大型黑盒LLM的替代品来进行问题分解。这一过程涉及从教师模型(记为T)中提炼分解能力。
研究者首先从教师模型T中收集分解问题的示例。与要求T解决问题不同,他们让T将给定的问题Q分解为子问题,而不提供解决方案。为此,他们向T提供了一个分解指令(记为Idecomp),以及问题Q。分解指令(Idecomp)内容如下:
- 任务:将给定的复杂问题分解为最相关、最有帮助的子问题,确保每个问题不超过三个子问题。
- 上下文和主问题将一并提供。
- 如果问题不需要分解就能回答,则返回“No decomposition”(无需分解)。
- 否则,列出有助于回答原始问题的必要子问题,避免返回可能有害或无益的子问题。
给定教师模型生成的子问题集合{Si},通过优化交叉熵损失函数来微调学生分解器S,使其尽可能地模仿T的分解行为。这个优化过程的输出是学生模型,记为SD-T。
作为额外步骤,如果数据集包含相应的真实答案(记为A),研究者可以选择使用这些信息来筛选高质量的生成子问题。这是通过向教师模型T提供另一个指令Ians来实现的,该指令要求模型首先解决子问题{Si},然后再解决原始问题Q。
解决指令(Ians)内容如下:
-
解决一个复杂问题,首先回答几个相关的子问题。
-
依次回答子问题,并最终解决原始问题。
-
最终答案应该以“答案为:”的格式附加在最后。
使用这个指令,研究者收集了T生成的答案Aˆ,其中P代表前提条件。他们假设,从统计学角度来看,好的子问题集合{Si}最终将有助于解决问题。因此,他们可以选择性地过滤掉那些生成答案Aˆ与真实答案A不一致的训练实例。这种筛选过程类似于拒绝采样(Rejection Sampling),产生的模型记为SD-R。
实验设计与评估
研究者选择了两个不同的数据集来评估他们的流程:
- GSM8K:专注于数学推理,包含7500个训练实例和1000个测试问题。
- DROP:针对问答任务设计,包含77400个训练样本和9500个验证集。
由于DROP测试集没有标准答案,限制了评估场景,因此研究者使用GSM8K的测试集和DROP的开发集进行评估。
教师与学生模型:
-
教师模型:整个实验中使用了GPT-3.5-Turbo-0615模型。为了全面评估,研究者还使用了不同级别的教师模型,包括一个开源模型(vanilla Vicuna)和三个黑盒模型(text-davinci003, GPT-3.5-Turbo, GPT4)。
-
学生模型:所有学生模型均初始化为Vicuna13b-v1.3。
学生求解器模型:
为了比较提炼分解器与提炼求解器的性能,研究者进一步训练了几个Vicuna模型,以模仿教师模型的行为作为学生求解器。SE-T模型使用教师的示例进行训练,而SE-A模型在有标准答案的情况下进行微调。
训练细节:
-
批量大小设为128。
-
DROP数据集上训练3个周期,GSM8K数据集上训练直到收敛(5个周期)。
-
蒸馏训练的学习率设为 2×10−52×10−5。
-
所有蒸馏微调可以在8个80G A100 GPU上在12小时内完成。
推理成本估算:
-
基于GPT-3.5-turbo-1106模型的推理成本进行计算,输入令牌的费用为1000个输入令牌0.001美元,1000个输出令牌0.002美元。
-
为了公平比较,Vicuna-13B模型的成本按模型大小比例估算,结果为1000个输入令牌约0.000074美元,1000个输出令牌约0.000148美元。
实验结果分析
研究者首先探讨了将分解(Decomposition)与解决(Solving)分离的可能性,并评估了使用改进的分解对复杂推理任务的效果。先前的研究已经表明,利用分解的子问题可以增强黑盒模型的问题回答能力。研究者采用了静态策略,将推理过程分为两个独立阶段:分解和解决。实验结果(表1)显示,这种静态策略通常比单一阶段方法有更好的性能。
表1中展示了不同模型在GSM8K和DROP数据集上的性能对比。结果显示,用较弱的分解器(Vicuna)替换较强的分解器(GPT)通常会导致性能显著下降,特别是在GSM8K数据集上,除了使用Vicuna作为求解器时。研究者推测,这可能是因为Vicuna求解器错误较多,无法充分利用分解带来的改进。当求解器更强大时,性能下降更显著,这表明为了达到最佳性能,强大的分解器至关重要。
研究者接着探讨了在没有标准答案A的情况下,从教师模型T向学生模型S蒸馏知识的可能性。这是最常见的用例,因为标准答案注释通常成本高昂且稀缺。表1(无神谕答案A)显示,使用SD-T替换分解器至少与使用T的性能相当。而且,SD-T相比使用Vicuna作为分解器有显著改进。然而,替换为学生求解器模型SE-T会显著损害性能。
在推理成本方面,SD-T方法在分解上的成本比使用教师GPT模型显著降低,而求解器的成本相对不变。研究者还比较了T、Vicuna和SD-T在评估集上的分解情况(表2),发现SD-T模型在生成子问题上与教师模型的演示高度相似。相比之下,原始的Vicuna模型经常生成可能分散求解器注意力的无益问题。
研究者还探讨了为什么较小的学生模型可以快速模仿教师模型的分解能力,而直接通过学生模型的初始预训练却难以获得这种技能。他们的假设是,较强教师模型的分解能力容易提炼但难以获得。这种技能可能基于在大型模型的密集预训练期间对大量数据的深入消化和内化。但由于它更具逻辑性和抽象性,而不是知识密集型,一些演示可能已经为学生提供了足够的指导。
研究者进一步探讨了蒸馏的分解器是否能够跨领域应用。他们对DROP和GSM8K进行了跨领域评估,结果(表3)显示,蒸馏的分解器SD-R在其他领域表现出良好的泛化性和适用性,与使用教师GPT模型作为分解器相比,性能仅略有下降。相反,用SE-A替换求解器,即使在原始领域进行了微调,对其他领域的泛化也很差。
研究者还考察了蒸馏的分解器是否适用于不同的求解器。结果显示,SD-R的性能与教师分解器(GPT)相当,并且在连接到不同的求解器时,比较弱的分解器(Vicuna)有整体改进。他们发现,较弱的求解器通过升级到提炼的分解器获得了更多的性能提升。
在SE模型的失败模式方面,研究者提出了两种主要的失败模式。首先,回答子问题或主要问题需要大量的世界知识和常识,这很难压缩到只有几个演示的较小学生模型中。其次,由于教师对子问题的答案被用作目标的一部分,SE模型可能会混淆,生成子问题之一的最终答案,而不是主要问题的答案。基于这些发现,研究者尝试在训练SE模型时排除目标中的子问题答案,直接生成答案。结果表明,在DROP数据集上这种方法有所改进,但在GSM8K数据集上却导致了性能下降。
最后研究者进行了消融研究,以深入理解不同因素对于模型性能的影响。他们特别关注了指令的类型以及演示数量对于模型分解能力的影响,
表6展示了在GSM8K数据集的一个子集上,包含演示的分解指令对模型性能的影响。研究者比较了0-shot(无演示)和1-shot(一次演示),这些结果表明,即使是一次简单的演示也能显著提高模型遵循给定指令的能力,从而改善分解问题的质量。
表7的实验结果表明,在分解指令中限制最多三个子问题能够获得最佳性能。这些发现对于优化分解指令的设计具有重要意义,有助于生成更有效的问题子集,从而提高模型的整体性能。
以上研究我们提供了一种新的思路,以更高效、更经济的方式利用大型语言模型的推理能力,为人工智能领域的发展开辟了新的可能性。
论文链接:https://arxiv.org/abs/2402.15000