编辑:LRS
【新智元导读】ChatGPT的文科脑有救了!大型语言模型最为人诟病的缺点,除了一本正经地胡言乱语以外,估计就是「不会算数」了。
论文链接:https://arxiv.org/abs/2303.05398
MathPrompter 使用 Zero-shot 思维链提示技术生成多个代数表达式或 Python 函数,以不同方式解决同一个数学问题,从而提高输出结果的可信度。
相比其他基于提示的 CoT 方法,MathPrompter还会检查中间步骤的有效性。
基于175B 参数 GPT,使用MathPrompter方法将MultiArith 数据集的准确率从78.7%提升到了92.5%!
专攻数学的Prompt近几年,自然语言处理的发展很大程度上要归功于大型语言模型(LLMs)在规模上的不断扩展,其展现出了惊人的zero-shot和few-shot能力,也促成了prompting技术的发展,用户只需要在prompt中给LLM输入几个简单的样例即可对新任务进行预测。
prompt对于单步的任务来说可以说相当成功,但在需要多步骤推理的任务中,提示技术的性能仍然不够。
人类在解决一个复杂问题时,会将其进行分解,并尝试一步步地解决,「思维链」(CoT)提示技术就是将这种直觉扩展到LLMs中,在一系列需要推理的NLP任务中都得到了性能改进。
这篇论文主要研究「用于解决数学推理任务」的Zero-shot-CoT方法,之前的工作已经在MultiArith数据集上得到了显著的准确率改进,从17.7% 提升到了 78.7%,但仍然存在两个关键的不足之处:
1、虽然模型所遵循的思维链改进了结果,但却没有检查思维链提示所遵循的每个步骤的有效性;
2、没有对LLM预测结果提供置信度(confidence)。
MathPrompter为了在一定程度上解决这些差距,研究人员从「人类解决数学题的方式」中得到启发,将复杂问题分解为更简单的多步骤程序,并利用多种方式在每一个步骤中对方法进行验证。
2. 数学提示 Math-prompts
基于上述多重验证和交叉检查的思维过程所提供的直觉上,使用两种不同的方法生成Qt的分析解决方案,即代数方式和Pythonic方式,给LLM提供以下提示,为Qt生成额外的上下文。
提示可以是「推导出一个代数表达式」或「编写一个Python函数」
LLM模型在响应提示后可以输出如下表达式。
从上表可以看到,MathPrompter的设计可以弥补诸如「生成的答案有时会有一步之差」的问题,可以通过多次运行模型并报告共识结果来避免。
此外,推理步骤可能过于冗长的问题,可以由Pythonic或Algebraic方法可以解决这个问题,通常需要较少的token
此外,推理步骤可能是正确的,但最终的计算结果却不正确,MathPrompter通过使用Python的eval()方法函数来解决这个问题。
在大部分情况下,MathPrompter都能生成正确的中间和最终答案,不过也有少数情况,如表中的最后一个问题,代数和Pythonic的输出都是一致的,但却有错误。
参考资料:
相关文章
猜你喜欢