最新研究:大语言模型使用Json格式输出会降低模型性能吗?

最新研究:大语言模型使用Json格式输出会降低模型性能吗?

最新研究:大语言模型使用Json格式输出会降低模型性能吗?

HuggingAGI  2024年08月11日 20:11 湖南

最新研究:大语言模型使用Json格式输出会降低模型性能吗?

发布时间:2024 年 08 月 05 日

提示工程

Let Me Speak Freely? A Study on the Impact of Format Restrictions on Performance of Large Language Models
结构化生成在现实应用中广泛用于从 LLM 中提取关键信息,但本研究揭示了这种约束对 LLM 能力的潜在影响。我们对比了 LLM 在遵守结构化格式与自由生成时的表现,发现格式限制显著削弱了其推理能力。更严格的格式约束往往加剧了这一性能下降。这一发现为我们理解 LLM 在受限环境下的表现提供了新的视角。
https://arxiv.org/abs/2408.02442

1. 背景

大语言模型在工业界应用的一个主要障碍就是大语言模型(LLMs)不遵循标准化输出格式。这种不一致性,使得输出解析变得更为复杂,也削弱了这些模型的可靠性。

所以,大家普遍会采用结构化输出的方式来规避这一问题,也就是使用格式化限制,比如以标准化格式进行输出,比如:Json、XML等。

这些限制可以通过多种方式来实现,比如指示模型遵循带有格式限制指令的指定格式,或者使用像JSON模式这样的标准解决方案。这些方案让LLMs能够更加顺利的融入到实际AI应用中去。

那么,这种格式限制指令,是否会影响LLMs生成内容的质量?

比如下图,GPT-3.5-turbo 在这个 GSM8K数学问题上用标准自然语言输出时,可以给出正确答案,但是一旦添加了格式限制,GPT-3.5-turbo就输出了错误答案。

www.zeeklog.com  - 最新研究:大语言模型使用Json格式输出会降低模型性能吗?

1.1 对比的格式限制方法

为了系统性研究这个问题,作者针对三种格式限制方法进行对比研究:

约束性解码(JSON模式,):在生成阶段添加超参的方式来实现的,确保模型生成的内容符合预设的JSON格式。

格式限定指令(FRI,Format-Restricting Instructions):通过提示词来指导模型用JSON、XML、YAML等标准格式生成内容,与约束性解码相比,这种方法更为宽松。

自然语言转格式(NL-to-Format):首先指导大型语言模型以自然语言形式回答问题,随后再将其回答转换为目标格式的模式。

1.2 测试的数据集

作者对比了两大类任务,分别是:推理任务和分类任务。

1.2.1 推理任务

• GSM8K :数学问题集合,测试大型语言模型生成必要的中间推理步骤。

• Last Letter Concatenation :该任务要求大型语言模型通过串联一系列单词的最后字母来生成一个字符串,以此测试其符号推理能力。

• Shuffled Objects:评估在给定初始状态和一系列打乱事件的情况下推断最终状态的能力。

1.2.2 分类任务

• DDXPlus :医疗诊断数据集,大型语言模型必须依据给定的患者资料从 49 种可能的疾病中选出最合适的诊断。由

• MultiFin :一个多项选择的金融数据集,要求将给定的段落分类为五个类别之一。

• Sports Understanding :用于测试大型语言模型判断与体育相关的人工构建句子是否合理的能力。

• NI - Task 280 :基于给定段落的多项选择刻板印象分类任务。纳入此任务,是因为发现它对提示格式的变化较为敏感,性能变化高达 56% 。

1.3 测试的模型

对 gpt-3.5-turbo-0125  、claude-3-haiku-20240307 、gemini-1.5-flash 进行了比较。

对于开源模型,使用 LLaMA-3-8B-Instruct 和 Gemma-2-9B-Instruct ,并借助 Text-Generation-Server 进行推理,因其支持 JSON 模式 。

1.4 评估指标

对于基于分类的任务(体育理解、DDXPlus、自然指令任务 280 和 MultiFin),将准确率作为主要指标。

对于Last Letter Concatenation和 GSM8K,使用精确匹配指标,即最终答案必须与实际答案完全字符串匹配。

2. 格式限制对最终结果的影响


通过对比三种逐步放宽的提示方式——JSON 模式、FRI 以及 NL 到格式的转换,来探究格式限制对大型语言模型(LLM)性能的影响。

2.1 推理任务

www.zeeklog.com  - 最新研究:大语言模型使用Json格式输出会降低模型性能吗?

我们在具有精确匹配分数的数据集上对这些方式进行评估,如上图中呈现的 GSM8K 和Last Letter Concatenation。

在Last Letter Concatenation任务中,JSON 模式的表现明显逊于 FRI(JSON)。经检查,发现 100%的 GPT 3.5 Turbo JSON 模式响应将“答案”键置于“原因”键之前,导致了零样本直接回答,而非零样本思维链推理。

将 NL 到格式与不受限制的自然语言响应相比较,发现大多数模型的性能近乎相同,因为两者均从相同的初始自然语言响应得出答案。然而,NL 到格式偶尔会引入生成错误,致使 LLaMA 3 8B Instruct 的性能略低,而其他模型在两种设定下保持了一致的分数。

格式限制的程度和实施方式能够显著影响大型语言模型的性能,尤其在推理任务中

结构化输出中的键的顺序以及推理与格式遵循的解耦,成为在提供结构化响应的同时保持大型语言模型能力的重要因素。

2.2 分类任务

www.zeeklog.com  - 最新研究:大语言模型使用Json格式输出会降低模型性能吗?

在评估分类数据集时,观察到了与推理任务不同的趋势,如上图所示。值得注意的是,在 DDXPlus 数据集中,启用 JSON 模式时,Gemini 1.5 Flash 的性能显著提升。在其他分类数据集中,JSON 模式具有竞争力,在某些情况下,超越了其他三种方法。

JSON 模式通过限制可能的答案从而减少答案选择中的错误,提高了分类任务的性能。

相反,自然语言响应可能会引入干扰,导致解析错误。

格式限制对大型语言模型性能的影响取决于任务:严格的格式可能会阻碍推理密集型任务,但能提高需要结构化输出的分类任务的准确性。

2.3 对较宽松格式限制的影响

为进一步探究格式限制所带来的影响,考察了 Soft Restrict 设置的一种变体,即从提示描述中移除模式限制。不再提供特定的模式(比如:“以以下模式用 JSON 格式回复您的答案:{‘reason’:…,‘answer’:…}”),而是单纯指示大型语言模型以目标格式语言进行输出(比如:“以 JSON 格式回复您的答案。”)。

www.zeeklog.com  - 最新研究:大语言模型使用Json格式输出会降低模型性能吗?

上表展示了在 GSM8K 数据集上移除模式限制后的效果。对于 Claude 3 Haiku、GPT-3.5 Turbo 以及 LLaMA 3 8B Instruct 而言,在不同的提示扰动下,平均得分显著提升,标准差降低。

这些结果表明,虽然结构化输出对下游处理可能有益,但过于严格的模式可能会妨碍大型语言模型的性能,尤其在推理密集型任务中。

这一发现意味着,在希望获得易于解析的结构化输出与保留大型语言模型固有推理能力之间,必须达成平衡

在处理复杂推理任务时,或许应考虑采用较宽松的格式限制,同时仍保持一定程度的结构,以利于下游处理。

2.4 不同格式的比较

通过对比不仅是 JSON,还有 XML 和 YAML 格式来消融格式语言。由于这三种语言有着不同的语法规则和限制。推断每个模型的表现可能各异,例如 Claude-3-Haiku 将 XML 用于工具使用模式,所以回过头来看,未见到任何一种结构格式能在所有模型中始终表现出色,如下图。对于 Gemini 模型,发现 JSON 更具一致性,但并非总是优于其他格式。

www.zeeklog.com  - 最新研究:大语言模型使用Json格式输出会降低模型性能吗?

发现在分类任务中,由于答案空间的限制,JSON 模式的表现比文本好很多

然而,在推理相关任务中,JSON 模式未能遵循先推理后回答的顺序,致使最终性能大幅下降

2.5 结构格式与解析错误率

最初推测文本与结构化格式之间的性能差距可能源于答案提取过程中的解析错误

然而,对不同格式和模型的错误率分析表明,解析错误并非主要因素。

实际上,Gemini 1.5 Flash 和 GPT 3.5 Turbo 在这三种格式中均几乎不存在解析错误。在 LLaMA 3 8B 的设置中,JSON 格式下 Last Letter 任务的解析错误率仅为 0.148%,但却存在高达 38.15%的性能差距。

表明格式间的性能差异主要并非源于解析错误,而是格式限制对大型语言模型推理和生成过程的影响

www.zeeklog.com  - 最新研究:大语言模型使用Json格式输出会降低模型性能吗?

通过提示 Claude-3-Haiku 为 Claude 3 Haiku 和 LLaMA 3 8B(解析错误百分比最高的两个模型)重新格式化任何存在解析错误的输出,观察到 JSON 和 YAML 格式的得分有所提高,如上图 所示。这种方法展现了在不牺牲特定格式优化优势的情况下提升结构化输出可靠性的潜力

3. 结论

格式的限制,尤其是约束解码(JSON 模式),会阻碍推理能力,却能提升分类任务的准确率。

较宽松的格式限制通常能提高性能,并减少推理任务中的差异。

解析错误虽非性能差异的主因,但通过纠正提示可得以缓解。

在 LLM 应用中平衡格式遵循、推理能力与成本效率的重要性。


• 论文原文: https://arxiv.org//pdf/2408.02442

• 获取更多最新 Arxiv 论文更新: https://github.com/HuggingAGI/HuggingArxiv!

Read more

深入理解 Proxy 和 Object.defineProperty

在JavaScript中,对象是一种核心的数据结构,而对对象的操作也是开发中经常遇到的任务。在这个过程中,我们经常会使用到两个重要的特性:Proxy和Object.defineProperty。这两者都允许我们在对象上进行拦截和自定义操作,但它们在实现方式、应用场景和灵活性等方面存在一些显著的区别。本文将深入比较Proxy和Object.defineProperty,包括它们的基本概念、使用示例以及适用场景,以帮助读者更好地理解和运用这两个特性。 1. Object.defineProperty 1.1 基本概念 Object.defineProperty 是 ECMAScript 5 引入的一个方法,用于直接在对象上定义新属性或修改已有属性。它的基本语法如下: javascript 代码解读复制代码Object.defineProperty(obj, prop, descriptor); 其中,obj是目标对象,prop是要定义或修改的属性名,descriptor是一个描述符对象,用于定义属性的特性。 1.2 使用示例 javascript 代码解读复制代码//

By Ne0inhk

Proxy 和 Object.defineProperty 的区别

Proxy 和 Object.defineProperty 是 JavaScript 中两个不同的特性,它们的作用也不完全相同。 Object.defineProperty 允许你在一个对象上定义一个新属性或者修改一个已有属性。通过这个方法你可以精确地定义属性的特征,比如它是否可写、可枚举、可配置等。该方法的使用场景通常是需要在一个对象上创建一个属性,然后控制这个属性的行为。 Proxy 也可以用来代理一个对象,但是相比于 Object.defineProperty,它提供了更加强大的功能。使用 Proxy 可以截获并重定义对象的基本操作,比如访问属性、赋值、函数调用等等。在这些操作被执行之前,可以通过拦截器函数对这些操作进行拦截和修改。因此,通过 Proxy,你可以完全重写一个对象的默认行为。该方法的使用场景通常是需要对一个对象的行为进行定制化,或者需要在对象上添加额外的功能。 对比 以下是 Proxy 和 Object.defineProperty 的一些区别对比: 方面ProxyObject.defineProperty语法使用 new Proxy(target,

By Ne0inhk