人工智能在教育领域的潜力令人心驰神往: 为地球上的每一位学生提供一位全天候在线、耐心且知识渊博的个性化导师。随着像 GPT-4 和 Llama 这样的大型语言模型 (LLM) 的兴起,我们似乎比以往任何时候都更接近这一现实。这些模型在解决复杂的数学问题和生成流畅文本方面表现出色。

然而, 解决问题和教授问题之间存在着巨大的鸿沟。

想象一下,一个学生正在为一道几何题犯愁。他们错误地计算了正方形的面积而不是周长。人类老师会立即注意到这个特定的逻辑错误。他们不会直接给出答案,而是会说: “看起来你计算的是面积,但题目问的是形状周围的距离。”

然而,目前基于 LLM 的导师往往难以处理这种细微差别。它们可能会产生幻觉,在学生错误时告诉他们是正确的,或者提供一个忽略错误根本原因的笼统提示。这是因为大多数当前的模型试图一次性完成所有事情: 理解学生、解决数学问题、识别错误并生成教学回复——所有这些都在单次“前向传递”中完成。

在达姆施塔特工业大学和苏黎世联邦理工学院最近发表的一篇题为 “Stepwise Verification and Remediation of Student Reasoning Errors with Large Language Model Tutors” (大型语言模型导师对学生推理错误的逐步验证与修复) 的论文中,研究人员提出了一种受人类认知启发的解决方案。他们建议将过程解耦: 先验证,后生成。

通过构建一个模块化系统,首先严格检查学生的作业是否存在特定错误,然后将该信息输入到回复生成器中,研究人员实现了幻觉的显著减少,并大幅增加了针对性强、可操作性高的反馈。

图 1: 直接基于对话历史生成导师回复可能会导致幻觉。为了缓解这个问题,作者将该过程分解为两个连续的任务: 验证和生成。

问题所在: “多合一”的幻觉陷阱

要理解 AI 导师为何会失败,我们需要看看它们通常是如何构建的。在标准的“对话式辅导”中,模型接收对话历史 (上下文) ,并被要求生成下一个回复。

从数学上讲,如果 \(\mathcal{H}\) 是历史记录,\(\mathbf{k}\) 是背景知识 (数学问题) ,模型试图最大化回复 \(\mathbf{y}\) 的概率:

\[ p _ { \pmb { \theta } } ( \mathbf { y } \mid \mathcal { H } , \mathbf { k } ) = \prod _ { i = 1 } ^ { | \mathbf { y } | } p _ { \pmb { \theta } } ( \mathbf { y } _ { i } \mid \mathbf { y } _ { < i } , \mathcal { H } , \mathbf { k } ) . \]

公式 1: 标准方法,其中生成直接以历史记录为条件。

这里的问题在于认知负荷。模型必须隐式地评估学生上一条信息的正确性,同时决定如何组织下一个句子的措辞。先前的研究表明,这会导致“幻觉”——例如,模型可能会因为学生听起来很自信而称赞一个错误的答案,或者纠正一个并不存在的计算错误。

人类导师不是这样工作的。有效的教学法涉及一个顺序过程:

  1. 关于错误的推理: “学生到底哪里做错了?”
  2. 策略选择: “我应该给个提示、问个引导性问题,还是直接纠正他们?”
  3. 沟通: “我该怎么表达?”

研究人员假设,如果他们能强制 AI 显式地执行第 1 步——首先生成“验证”输出——第 3 步就会变得更加可靠。

解决方案: 模块化架构

这篇论文的核心贡献是 “先验证后生成” (Verify-then-Generate) 框架。该系统不再是一个接收输入并吐出回复的黑盒子,而是被分解为两个不同的模块。

  1. 验证器 (Verifier \(v_{\theta'}\)) : 该模型查看学生的逐步推理 (\(\mathbf{s}_{\mathbf{q}}\)) 并将其与参考答案 (\(\widehat{\mathbf{s}}_{\mathbf{q}}\)) 进行比较。它的唯一工作是输出验证状态 \(\mathbf{v}\)——识别是否存在错误以及错误在哪里。
  2. 生成器 (Generator \(p_{\theta}\)) : 该模型接收对话历史、数学问题,以及更重要的,来自上一步的显式验证输出 \(\mathbf{v}\)。

这将概率公式变为:

公式 2: 模块化方法。回复 y 的概率以验证 v 为条件,而 v 是单独确定的。

这种分解允许生成器“信任”验证结果。它不需要猜测学生是否错了;它被明确告知: “学生在第 3 步因计算错误失败了。”

我们如何验证?

研究人员探索了三种不同的验证模块方法,从简单的分类到复杂的算法对齐。

1. 基于分类的验证

这是最简单的方法。模型充当二元分类器 (正确/不正确) 或多类分类器,以识别包含错误的哪一步索引 (例如,“错误在第 2 步”) 。虽然效率很高,但这种方法给生成器提供的上下文很少——知道第 2 步错了是有帮助的,但知道为什么错会更好。

2. 错误描述

在这里,验证器是一个 LLM,被提示生成错误的自然语言描述。例如: “学生错误地假设三角形的高度为 5,但实际上是 10。”

这为生成器提供了丰富的语义信息。它模仿了老师诊断问题的内心独白。

3. 步骤对齐 (算法方法)

这是本文提出的技术上最新颖的验证方法。在多步数学问题中,学生的推理链可能很混乱。他们可能会跳过步骤,将两步合并为一步,或者添加不必要的多余步骤。简单地将“学生步骤 1”与“参考步骤 1”进行比较通常会失败,因为它们可能无法对应。

为了解决这个问题,作者改编了 Needleman-Wunsch 算法 , 这是一种经典的动态规划算法,通常用于生物信息学中比对蛋白质或 DNA 序列。

它在数学中如何工作: 该算法不是比对氨基酸,而是比对推理步骤。它构建一个网格,将学生解答的每一步与正确参考解答的每一步进行比较。

  • 代价函数: 为了确定两个步骤是否“匹配”,系统不寻找完全相同的文本。相反,它使用 Sentence-BERT (SBERT) 嵌入来计算步骤文本之间的语义相似度。
  • 优化: 算法在网格中找到最大化对齐的最佳路径,同时也考虑了“缺口” (遗漏步骤) 或“不匹配” (错误) 。

结果是一个结构化的输出,准确告诉生成器哪些学生步骤与参考步骤匹配,哪些缺失,哪些是错误的。

构建数据集

为了训练和测试这些验证器,研究人员不能依赖现有的数据集,因为很少有数据集包含学生在哪里出错的明确标注。他们扩展了 MathDial 语料库,这是一个基于数学应用题的辅导对话集合。

他们招募了人类教师作为标注员。这些教师面对错误的学生解答,被要求:

  1. 识别发生第一个错误的确切步骤
  2. 对错误进行分类 (例如,计算错误、误解问题) 。
  3. 编写错误的文本描述。

图 2: 用于标注第一个错误步骤的用户界面。教师标记了逻辑失败的具体行并对错误类型进行了分类。

由此产生的数据集包含 1,000 多个推理链。正如下面的分布所示,学生的错误分布广泛,尽管大多数发生在推理过程的前几步。

图 3: 数据集分布,显示了包含第一个错误的步骤索引和学生解答的总长度。

实验结果

研究人员进行了两个阶段的评估: 首先单独测试验证器,然后测试完整的“先验证后生成”流程。

第一阶段: LLM 能发现错误吗?

第一个问题是 LLM 是否能可靠地发现学生数学作业中的错误。作者比较了“少样本 (Few-shot) ”模型 (通过示例提示的 GPT-3.5、Llama-2-70B、Llama-3-70B) 与较小的“微调 (Fine-tuned) ”模型 (在其新数据集上专门训练的 Llama-2-7B) 。

他们测试了两种设置:

  1. 逐步验证: 准确识别哪一步是错的。
  2. 整体验证: 仅仅说明整个解答是对还是错。

表 1: 验证结果。提供参考答案极大地提高了性能。微调后的小模型通常优于大型的提示模型。

验证的主要结论:

  • 很难: 如果没有参考答案 (用于比较的正确答案) ,即使是像 GPT-3.5 和 Llama-2-70B 这样强大的模型也会非常吃力。
  • 参考答案至关重要: 提供正确答案 (表中的“+ solution”) 在所有方面都大幅提升了性能。
  • 微调胜出: 一个 7B 参数的小模型,在这个特定的错误检测数据上进行微调后,在多个指标上击败了巨大的 70B 参数模型。这表明“教授”逻辑是一项专业技能,可以从有针对性的训练数据中受益。

第二阶段: 验证能改善辅导吗?

接下来,研究人员将这些验证结果输入到回复生成器中。他们将自己的方法与基线 (直接生成) 和一种称为“错误原因 (Error Reason) ”的方法 (仅给出错误的类别,例如“计算错误”) 进行了比较。

他们使用标准文本指标 (BLEU, BERTScore) 评估输出,更重要的是,使用了 LLM 作为裁判 (LLM-as-a-Judge) (使用 Llama-3-70B 为导师的回复打分) 和 人工评估 (真正的老师对 AI 进行评分) 。

表 2 & 3: 结果显示验证导致了更具针对性、更正确且更具可操作性的回复。

主要发现:

  • 针对性反馈: 错误描述 (Error Description) 方法 (验证器编写文本解释) 是明显的赢家。它帮助导师模型专门针对错误的根本原因 (针对性为 62%,而基线仅为 29%) 。
  • 减少幻觉: 基于验证的模型在事实正确性上要高得多。
  • 可操作性: 学生需要可操作的建议,而不仅仅是“你错了”。错误描述方法显著提高了反馈的“可操作性”。
  • 文本 vs. 类别: 有趣的是,提供错误的完整文本描述比仅提供错误类别 (“错误原因”) 或对齐数据 (“步骤对齐”) 效果更好。生成器似乎比抽象类别更能消化自然语言解释。

两个导师的故事

为了观察实际效果,请看下面的定性示例。在基线示例中,AI 导师模糊地告诉学生他们在 \(x\) 的值上犯了一个“小错误”。

在提出的 错误描述 方法 (Ours) 中,验证器首先明确指出: “学生错误地将培根条的数量写成了… 2 + 2x… 而不是 2 * 2 = 4。” 以此为条件,生成的回复非常精确: “请记住,早餐盘里的培根条数是鸡蛋的两倍… 你能试着重新计算吗?”

表 10: 生成的回复示例。基线含糊不清,而错误描述方法指出了具体的计算错误。

为什么有效: 对齐的重要性

研究人员进行了消融实验以更好地理解其机制。一个有趣的发现涉及 步骤对齐 算法。他们测试了计算对齐“代价” (相似度得分) 的不同方法。

他们比较了:

  • 随机 (Random) : 随机分配代价 (作为合理性检查) 。
  • 解答匹配 (Solution Match) : 仅当数字完全相同时才匹配步骤。
  • SBERT: 使用语义嵌入 (理解文本的含义) 。
  • Roscoe: 一个专门为推理对齐训练的模型。

表 4: 步骤对齐代价函数的比较。语义相似度 (SBERT/Roscoe) 优于简单的数值匹配。

结果表明语义相似度 (SBERT/Roscoe) 至关重要。学生可能会写“我把 10 除以 2”,而参考答案写的是“10 / 2 = 5”。这些在文本上看起来不同,但含义相同。嵌入捕捉到了这一点,使验证器能够正确对齐逻辑。

错误验证的代价

系统的强度取决于其最薄弱的一环。研究人员分析了生成的回复质量与验证正确性之间的相关性。

表 5: 验证正确性的影响。如果错误描述是正确的,回复就具有高度针对性 (82-87%) 。如果验证错误,性能就会崩溃。

如上表所示,如果验证器正确识别了错误 (标记为“correct”的行) ,导师的回复就具有高度针对性和正确性。如果验证器失败,导师的表现就会显著下降,往往比基线还差。这强调了虽然模块化方法更优越,但其成功在很大程度上依赖于验证模块的质量。

结论与启示

论文“Stepwise Verification and Remediation of Student Reasoning Errors”为教育领域的模块化 AI 设计提出了令人信服的论据。通过将“发现错误”和“教导学生”视为独立的认知任务,我们可以构建出具备以下特点的导师:

  1. 更准确: 不太可能产生正确性的幻觉。
  2. 更有帮助: 能够针对逻辑失败的确切步骤提供具体反馈。
  3. 类人化: 模仿专业教师的教学过程。

引入 Needleman-Wunsch 算法来对齐推理链是生物信息学在 NLP 中的一个极具创造性的应用,它提供了一种稳健的方法来处理学生展示作业时混乱、非线性的方式。

对于对教育科技感兴趣的学生和开发者来说,这篇论文标志着从“黑盒”生成向结构化、可解释的流水线转变。随着这些验证器变得更好 (可能通过更好的微调数据或更高级的推理模型) ,我们可以期待 AI 导师从有用的家庭作业助手转变为真正有效的教学智能体。

如需进一步阅读,完整论文详细介绍了使用的具体提示 (prompt) ,并为希望训练自己的验证器的人提供了完整的数据集。