如果你曾经尝试过使用像 GPT-4 或 LLaMA 这样的大型语言模型 (LLM) 来处理严格的数据处理任务,你很可能遇到过一种令人沮丧的现象。你提供了一个包含一系列具体要求的提示词——也许是必须出现在生成的名为用户画像中的十个不同的人口统计事实——模型自信地生成了一段流畅、听起来很专业的段落。

但当你检查细节时,发现有些不对劲。它提到了名字和职业,但忘记了信用评分。或者它可能虚构了地址。

这个问题被称为词汇约束生成 (Lexically Constrained Generation, LCG) 。 这是一项强制 LLM 在其输出中包含一组特定关键词或短语的任务。虽然 LLM 是流畅性的大师,但当约束变得复杂时,它们在严格合规性方面的表现却出奇地差。

在研究论文**“Control Large Language Models via Divide and Conquer”中,来自 UCLA 和 UC Merced 的研究人员对 LLM 为何在这些任务上失败进行了全面的剖析。更重要的是,他们提出了一种新颖的、与算法无关的解决方案,称为分而治之 (Divide and Conquer, DnC)** , 在复杂场景下将成功率提高到了 90% 以上。

在这篇深度文章中,我们将探讨为什么现代模型在简单的清单上会失败,它们阅读提示词方式中隐藏的偏见,以及递归的“分而治之”策略如何将一个健忘的模型变成一个听话的模型。


问题所在: 控制的错觉

我们通常认为,因为 LLM 可以通过律师资格考试或写诗,所以它们可以轻松处理像“用这 10 个词写一个句子”这样的任务。

然而,LLM 是概率引擎,而不是逻辑机器。它们根据统计可能性预测下一个 token,而不是基于工作记忆中的约束清单。当你增加约束的数量时,模型的“认知负荷” (借用人类的术语) 会增加,它开始优先考虑流畅性而不是准确性。

什么是词汇约束生成?

用术语来说,词汇约束生成涉及包含一组约束 \(X = [x_1, ..., x_m]\) (关键词) 的输入提示。目标是生成一个句子 \(Y\),使得 \(X\) 中的每个关键词都出现在 \(Y\) 中。

为了衡量成功,研究人员定义了两个关键指标。

1. 实例成功率 (Instance Success Rate) : 这是一个二元的通过/失败指标。模型是否包含了每一个要求的关键词?

实例成功率公式,如果 X 是 Y 的子集则显示为 1,否则为 0。

2. 关键词覆盖率 (Keyword Coverage Rate) : 如果模型失败了,它失败得有多严重?这衡量了实际进入最终文本的请求关键词的百分比。

关键词覆盖率公式: 满足的约束数量除以约束总数。

失败的可视化

研究人员通过一个“个人简介写作”任务来说明这个问题。在下面的例子中,模型被要求写一份关于“Ben Smith”的简介,其中包含大约 10 个特定的数据点 (姓名、年龄、FICO 分数等) 。

普通生成与分而治之的比较。面板 A 显示普通提示未能包含住房和教育数据。面板 B 显示分而治之方法捕捉到了缺失信息并进行合并。

如图 1 的面板 (a) 所示,“普通 (Vanilla) ”方法 (只问模型一次) 产生了一段流畅的段落,但它漏掉了“Housing (住房) ”和“Education (教育) ”的约束。模型被叙述的流畅性分散了注意力,丢掉了数据。


诊断: 为什么 LLM 会失败?

在介绍解决方案之前,研究人员进行了“敏感性分析”,以了解这些失败的根本原因。他们测试了从 LLaMA-7b 到 GPT-4 的各种模型。结果揭示了 LLM 处理指令方式中的三个主要弱点。

1. 复杂性瓶颈

最明显的发现是,随着你增加更多的约束,性能会崩溃。这不是线性的下降;这是断崖式的下跌。

研究人员使用了 CommonGen 基准,要求模型根据概念列表构建句子。他们通过将关键词数量从 3 个增加到 15 个来增加难度。

按概念数量显示的实例成功率图表。GPT-4 开始时很高但随后下降。随着概念增加,LLaMA 模型崩溃至接近零。

如图 2 所示,虽然 GPT-4 (紫色条) 在小集合 (3-5 个关键词) 上保持稳健,但随着复杂性增加,即使是它也开始挣扎。较小的模型,如 LLaMA-7b,一旦关键词数量超过 10 个,基本上就没用了。

当我们观察更广泛关键词范围内的成功率趋势线时,情况更加严峻:

折线图显示随着关键词数量从 3 增加到 15,实例成功率急剧下降。

关键结论: 你无法通过标准的指令提示来摆脱这个问题。一旦约束集超过了模型的“工作记忆”,较小模型的实例成功率就会趋近于零。

2. 位置偏差: “中间孩子”综合症

关键词在提示词中的位置很重要。

研究人员发现 LLM 表现出明显的位置偏差 (Position Bias) 。 它们不会同等关注输入序列中的每个词。

  • 首因效应 (Primacy Effect) : 一些模型 (如 GPT-4) 优先考虑出现在提示词早期的关键词。
  • 近因效应 (Recency Effect) : 其他模型 (如 LLaMA2-7b) 优先考虑出现在提示词最后末尾的关键词。

埋没在列表中间的关键词最容易被忽略。

图表显示 LLaMA3-8b 基于位置的关键词覆盖率。序列后部的关键词覆盖率下降。

图 4 展示了 LLaMA3 的这种敏感性。向下的趋势表明,当关键词放在列表较后的位置 (较高的位置索引) 时,模型在输出中包含它的可能性就越小。这意味着提示工程 (Prompt Engineering) 极其脆弱;仅仅打乱关键词列表就可能完全改变输出结果。

3. 复合词陷阱

LLM 看不到单词;它们看到的是 token。这导致了复合词的一种独特失败模式。

考虑关键词 “courthouse” (法院) 。 对人类来说,这是一个概念。对 LLM 来说,这可能被分词为 courthouse

研究人员发现,模型经常通过拆分单词来“满足”约束。如果提示词要求“courthouse”,模型可能会生成: “The basketball player hosted a tournament at the court built beside his house.” (这位篮球运动员在他房子旁边建的球场上举办了一场锦标赛。)

从技术上讲,token 都在那里。从语义上讲,约束被违反了。LLaMA-13b 错误地拆分了 65% 的复合词,甚至 GPT-4 也有 42% 的失败率。这表明词汇本身的内在复杂性就是控制的一个障碍。

4. 对解码参数的低响应性

开发人员常用的一个技巧是调整“解码参数”——特别是 Temperature (温度)Top-kTop-p 。 假设是降低温度会使模型更具确定性和专注性,从而可能提高约束依从性。

研究反驳了这一点。

三列图表显示改变 Top-k、Temperature 和 Top-p 对 LLaMA 和 GPT 模型的关键词覆盖率几乎没有影响。

如图 5 所示,性能线非常平坦。无论温度是 0.1 还是 0.9,LLaMA 模型 (a 列和 b 列) 在关键词覆盖率方面的表现几乎完全相同。GPT-4 (c 列) 显示出一些波动,但最佳和最差设置之间的差异小于 4%。

结论: 你无法通过调整超参数来修复推理能力的根本缺失。


解决方案: 分而治之 (Divide and Conquer, DnC)

由于模型在复杂性 (一次处理太多关键词) 上挣扎,研究人员提出了一种基于基本计算机科学原理的策略: 分而治之

如果模型无法处理 15 个关键词,就不要要求它处理。让它处理它能处理的,找出它漏掉的,然后再试一次。

DnC 算法

这个策略出奇地简单且有效。它作为一个迭代循环工作 (回顾图 1b 的可视化表示) 。

  1. 初始生成: 要求 LLM 使用全套关键词 \(X\) 生成句子 \(s'\)。
  2. 评估: 提取 \(s'\) 中实际出现的关键词。我们将满足的关键词称为 \(Y\)。
  3. 识别失败: 计算缺失的关键词集合: \(X_{miss} = X \setminus Y\)。
  4. “征服”步骤: 如果 \(X_{miss}\) 不为空,再次提示 LLM。但这一次,特别要求它生成包含缺失关键词的内容。
  5. 合并: 获取新内容 (其中包含先前缺失的单词) 并将其与原始句子 \(s\) 合并。
  6. 重复: 继续此循环固定次数 (\(k\)) 或直到所有关键词都出现。

这种方法将一个“困难”的并行处理任务 (一次做 15 件事) 转化为一系列“简单”的串行任务 (做 3 件事,然后接下来的 3 件事) 。

为什么它有效

这种分解之所以成功,是因为它尊重了模型的局限性。

  • 它通过减少任何单个推理步骤中的活跃约束数量来缓解复杂性
  • 它缓解了位置偏差 , 因为缺失的单词在下一次迭代中有效地移动到了队列的“前面”。
  • 它是模型无关的 。 它对“黑盒”模型 (如通过 API 调用的 GPT-4) 和开源模型一样有效,因为它不需要访问模型权重或对数几率 (logits) 。

实验结果: 质的飞跃

研究人员将分而治之 (DnC) 策略与拒绝采样 (Rejection Sampling, RJ) 基准进行了比较。拒绝采样只是简单地要求模型一次又一次地生成文本,直到它 (希望) 做对为止。

成功率

性能差异是惊人的。

折线图比较拒绝采样 (RJ) 与分而治之 (DnC)。DnC 的错误率在 4 次迭代后降至接近零,而 RJ 趋于平稳。

图 6 绘制了实例错误率 (越低越好) 。

  • 拒绝采样 (绿色/灰色线) : 即使在 5 次尝试后,模型仍然有 40-80% 的失败率。它们只是在重复同样的错误。
  • 分而治之 (蓝色/金色线) : 错误率直线下降。在 4 次迭代内,LLaMA-7b 和 GPT-3.5 都达到了近乎完美的性能 (0% 错误率) 。

现实世界应用

研究人员在三个现实的下游任务上测试了 DnC: 食谱生成表格到文本摘要个人简介写作

如下表 1 所示的结果突显了该方法的稳健性。

表格显示了食谱、表格到文本和个人简介写作的性能。DnC-5 (5 次迭代的分而治之) 在几乎所有任务中都达到了 98-100% 的成功率,大大优于基础模型。

看看 LLaMA2-7b-chat 这一行。在“食谱生成 (\(n=15\)) ”任务中,基础模型的成功率为 5% 。 它基本上无法完成这项任务。 应用 DnC 策略后 (“LLaMA2-7b-chat (DnC-5)”) ,成功率跃升至 98%

这将一个通常不够聪明以处理复杂约束的小型 70 亿参数模型,转变为一个胜过原始 GPT-3.5 查询的工具。

文本质量如何?

迭代合并的一个担忧是最终文本可能看起来像一个“弗兰肯斯坦”怪物——拼凑在一起的支离破碎的句子。

为了验证这一点,研究人员进行了人工评估和使用 GPT-4-turbo 的自动评估。他们对输出的连贯性、流畅性和可读性进行了评分。

  • 可读性/流畅性: 两种方法都得了 5.0/5.0 分。
  • 连贯性: DnC 文本得分为 4.88 , 实际上与普通文本的 4.94 相同。

迭代合并过程 (可能在“合并”步骤中由 LLM 自己处理) 在注入缺失数据的同时保持了叙述的流畅性。


结论

论文“Control Large Language Models via Divide and Conquer”为任何在 LLM 之上构建应用程序的人提供了一个至关重要的现实检验。我们不能假设提示词本身就能充当功能性代码。当约束增加时,概率分布无法保证包含性,导致数据丢失和幻觉。

识别出的局限性——复杂性瓶颈、位置偏差和分词问题——是 Transformer 架构当前使用方式所固有的。我们不能简单地通过温度设置来“调整”出路。

然而,提出的分而治之策略证明,我们不一定需要更聪明的模型来获得更好的结果;我们需要更聪明的工作流。通过将 LLM 包装在一个控制循环中,迭代地检查错误并专门提示修复它们,我们可以在以前让模型崩溃的任务上实现近乎 100% 的可靠性。

对于学生和开发人员来说,教训很清楚: 不要相信模型能一次性处理复杂的清单。分解它,验证输出,并迭代。控制权不是来自提示词,而是来自流程。