新智元报道
编辑:润大语言模型又一项重大缺陷被DeepMind曝光!
LLM无法纠正自己推理中的错误。
「Self-Correction」作为一种让模型修正自己回答的技术,在很多类型的任务中都能明显改进模型的输出质量。
但是最近,谷歌DeepMind和UIUC的研究人员却发现,对于推理任务,LLM的「自我纠正机制」一下子就没用了。
而且LLM不但不能自我纠正推理任务的回答,经常自我纠正之后,回答质量还会明显下降。
马库斯也转发了这篇论文,希望让更多研究人员关注大语言模型的这一缺陷。
「自我纠正」这一技术是基于一个简单设想——让LLM对自己生成的内容根据一定标准来进行纠正和改进。这个方法在数学问题等任务上能明显提高模型的输出质量。
但是研究人员发现,在推理任务中,自我纠正之后的反馈有时很不错,有时效果却很不理想,甚至性能还会出现下降。
研究人员又研究了那些认为「自我纠正」可以改进推理输出的文献,经过仔细检查发现,「自我纠正」的改进来自于引入了外部的信息来指导模型自我纠正。而当不引入外部信息时,这些改进就会消失。
具体来说,当模型能够访问基准数据集中包含的真值标签(ground-truth labels)时,自我纠正就能有效地发挥作用。
这是因为算法可以准确地确定何时停止推理过程,并避免在答案已经正确时更改答案。
研究人员认为,先前的研究中往往会使用真实标签来防止模型将正确答案更改为错误答案。但如何防止这种「对改错」情况的发生,实际上是确保自我纠正成功的关键。
因为当研究人员从自我纠正过程中删除真实标签时,模型的性能就会显著下降。
作为改进LLM在推理任务上自我纠正方法的尝试,研究人员还探究了「多智能体辩论(multi-agent debate)」作为改进推理的手段的潜力。然而,他们的结果表明,在考虑同等数量的响应时,这个方法的效果并不比自我一致性(Self-Consistency)更好。
研究人员进一步提出了「事前提示」和「事后提示」的概念。
他们将自我纠正视为事后提示的一种形式,其中纠正的提示是在LLM的回复之后再输入的。
研究人员的分析表明,某些任务中自我纠正带来的增强可能源于精心设计的反馈提示,掩盖了简陋的初始提示。
在这种情况下,将更好的反馈集成到初始指令中或设计更好的初始提示可能会产生更好的结果并降低推理成本。
根据研究人员的研究结果,研究人员深入探讨了LLM自我纠正能力的细微差别,敦促研究社区能以更加严谨的态度来对待对自我纠的研究。
大语言模型可以自我纠正自己的推理吗?
研究人员尝试采用现有的自我纠正方法,采用其设置(使用标签来指导自我纠正过程),以检查其在提高LLM推理任务表现方面的有效性。提示词
研究人员采用三步提示策略进行自我修正:
1)提示模型进行初始生成(这也是标准提示的结果);
2)提示模型回顾其上一代并产生反馈;
3)通过反馈提示模型再次回答原来的问题。
模型
研究人员的主要测试是在 GPT-3.5-Turbo 上进行的。
研究人员还对2023年8月29日访问的GPT-4进行了测试,旨在测试OpenAI模型最新、最强大的迭代的自我校正能力。
对于 GPT-3.5,研究人员采用前面提到的完整评估集。对于 GPT-4,为了降低成本,研究人员为每个数据集随机抽取了 200 个问题(HotpotQA 为 100 个问题)进行测试。
结果和思考
虽然研究人员在实验中没有利用任何外部资源或工具,但研究人员遵循之前的工作,使用真值标签来确定何时停止自我校正循环。
但是在现实环境中,尤其是当研究人员打算用LLM来解决数学问题时,大部分时候是不知道正确答案的。
因此,性能的提升需要更仔细的考虑。
为了证实这一观点,研究人员设计了一个基于随机猜测的基线。在此基线中,研究人员继续使用真值标签来确定何时停止;然而,纠正措施不是由LLM采取的,而是根据剩余选项的随机猜测得出的。
CommonSenseQA 是一个多项选择题数据集,为每个问题提供五个候选选项。
如果第k轮(初始生成为第0轮)的生成精度表示为 x,则后续生成的预期精度变为 x + (1 − x)/(5 − k)。
上表2列出了该随机基线的结果。
2轮后,其性能与自校正相当甚至更好,4轮后,其准确率达到100%。
然而,很明显,这样的随机基线不能被视为有效的校正方法。尽管如此,使用标签获得的结果仍然可能起到预言机的作用,表明存在可以判断答案正确性的完美验证者。
在代码生成等任务中,这是可行的,因为研究人员可以利用执行器和单元测试来确定生成的代码是否成功运行(Chen 等人,2023b)。
然而,对于推理任务,比如解决数学问题,这种设置似乎违反直觉。如果研究人员已经掌握了事实真相,那么似乎就没有理由再用LLM来解决问题。
内在自我修正
对于 GSM8K,可能不存在类似的随机基线,但基本原理保持不变。此外,研究人员可以设计一个基线,例如每次生成一个随机数。经过相当多的轮次后,它可能会得到正确的答案,但这样的改进显然没有意义。更直接的理由是:如果研究人员已经知道答案,为什么还要这样做?
实验设置如前面内容定义的那样。为了实现这一点,研究人员只需删除使用标签来确定何时停止并通过两轮自我校正来评估性能。
上表3展示了准确度和模型调用次数。研究人员观察到,经过自我修正后,模型的性能在所有基准测试中都会下降。
上图1总结了使用 GPT-3.5 进行两轮自校正后答案变化的结果,下图2中展示了两个示例。
对于GSM8K,74.7%的概率下模型保留其初始答案。在其余实例中,模型更有可能将正确答案修改为错误答案,而不是将错误答案修改为正确答案。
对于CommonSenseQA,GPT-3.5改变其答案的可能性更高。造成这种情况的主要原因是CommonSenseQA中的错误答案选项通常看起来与问题有些相关,并且使用自我更正提示可能会使模型偏向于选择另一个选项,从而导致较高的「正确⇒错误」比率。
让研究人员再看一下上表1中显示的结果。这些结果使用真值标签来防止模型将正确答案更改为错误答案。
然而,如何防止这种「修改错误」的发生,实际上是确保自我纠错成功的关键。
直观的解释是:如果该模型与精心设计的初始提示相匹配,那么在给定提示和具体的解码算法的情况下,初始响应应该已经是最佳的。
引入反馈可以被视为添加额外的提示,可能使模型偏向于生成适合该组合输入的响应。
在内在自我纠正设置中,在推理任务中,这种补充提示可能不会为回答问题提供任何额外的优势。
事实上,它甚至可能使模型偏离对初始提示产生最佳回复,从而导致性能下降。
有人可能会想,研究人员测试的自我修正提示是否不理想?
其他提示能否提高性能?答案是:研究人员完全有可能找到一个在特定基准上增强模型性能的提示。然而,这不再与本文讨论的内在自我校正设置一致,类似于真正的少样本设置的讨论。
这种搜索本质上是利用人类或训练示例的反馈。此外,同样的策略也可以有效地应用于优化初始提示,可能会获得更好的性能,而无需额外的模型调用来进行自我校正。
在附录B中,研究人员测试了不同的提示,但发现性能仍然没有提高。
此外,研究人员并不是第一个观察到自我纠正不一定能提高LLM推理能力的人。总而言之,研究人员的重点不是解决诸如「是否存在可以提高特定基准测试性能的自我修正提示?」之类的问题。这样的查询可能没有特别的意义。
相反,研究人员的目标是解决一个更基本的问题——「大型语言模型真的能够仅根据其固有的能力自我纠正其推理吗?」
作为事后提示的自我纠正
在之前的内容中,研究人员观察到LLM在自我纠正其推理方面面临挑战。然而,正如之前研究所证明的那样,在某些情况下自我纠正已经产生了令人印象深刻的结果。因此,辨别差异并查明根本原因至关重要。
要解决这个问题,重要的是要掌握自我纠正的基本性质。根据其形式,自我纠正可以被视为一种事后提示。
它与标准提示(这里称之为事前提示)的区别在于,提示是在LLM的回答之上进行的。
研究人员将改进此类提示的过程称为事后提示工程。
因此,当自我纠正可以提供事前提示无法提供的有价值的指导或反馈时,就会出现自我纠正增强模型响应的情况。
例如,当目标是使响应更安全时,指导模型仅使用事前提示在第一次尝试中生成完全无风险的响应可能具有挑战性。在这种情况下,自我纠正可以作为通过细粒度事后检查来增强响应安全性的一种手段。
然而,对于推理任务来说,情况可能并非如此。
反馈提示,例如「查看您之前的答案并发现您的答案存在问题」。不一定能为推理提供切实的好处。
此外,即使观察到自我纠正后性能显著提高,仔细考虑提示设计也是必要的。
例如,如果响应需要满足可以在初始指令中轻松指定的标准(例如,输出应包含某些单词、生成的代码需要高效、情绪应强烈负面),而不是提供这些要求作为事后提示中的反馈,更具成本效益的替代策略是将这些要求直接(明确地)嵌入到事前提示中。
上表5中的结果表明,研究人员精心设计的提示「标准提示(研究人员的)」优于之前研究的自我校正后结果。
此外,当研究人员利用他们的提示来改进研究人员的输出时,性能甚至会下降。
再次强调,研究人员在这里的目的并不是争论是否存在事后提示可以胜过研究人员随意编写的提示。研究人员的主要目标是鼓励对自我校正实验进行更严格的检查。
采用精心设计的事后提示来指导模型「自我纠正」通过糟糕的事前提示生成的响应是没有意义的。
为了公平比较,应在事前和事后提示上投入同等的努力。
参考资料:https://arxiv.org/abs/2310.01798