
-
论文链接:https://arxiv.org/pdf/2509.10833 -
论文标题:Towards Automated Error Discovery: A Study in Conversational AI
TL;DR
今天分享一篇 EMNLP 2025 主会论文《Towards Automated Error Discovery: A Study in Conversational AI》。
这篇论文研究对话式 AI 中的错误检测问题,尤其关注如何发现和定义那些未知的、新出现的错误类型。作者提出了一个名为“自动化错误发现”(Automated Error Discovery)的框架,并将这个问题形式化为广义类别发现(Generalized Category Discovery)的一个特例。
为此,他们设计了一个名为 SEEED (Soft Clustering Extended Encoder-Based Error Detection) 的模型。SEEED 的核心思想是结合一个开源的语言模型(用于生成对话摘要)和轻量级的编码器来进行错误检测。技术上的主要贡献点有两个:
一是提出了“基于标签的样本排序”(Label-Based Sample Ranking, LBSR),这是一种用于对比学习的样本选择策略,通过利用训练过程中的标签信息来挑选更具挑战性的正负样本。
二是对“软近邻损失”(Soft Nearest Neighbor Loss, SNL)进行了改进,引入了一个边距参数(margin)来放大负样本在损失计算中的影响。
实验结果显示,在多个错误标注对话数据集上,SEEED 在识别已知和未知错误方面的性能超过了包括 GPT-4o 和 Phi-4 在内的基线模型。此外,该方法在未知意图检测任务上也表现出了不错的泛化能力。论文还探讨了利用大语言模型为新发现的错误类型自动生成定义的可行性。
1. 引言
基于大语言模型 (LLM) 的对话代理在流畅度和连贯性方面取得了长足的进步,但它们仍然会产生各种不期望的行为,即“错误”。这些错误,例如事实不一致、逻辑矛盾或社交能力缺陷,如果被部署到面向用户的系统中,会严重影响用户体验和信任度。
当前的研究方向之一是利用 LLM 本身来检测和纠正这些错误。一种常见的模式是“反馈引导的响应生成”(Feedback-guided response generation),如论文图 1 所示。其流程大致如下:
-
响应生成:一个模型负责生成初步的候选响应。 -
错误评估:另一个 LLM(反馈 LLM)或生成模型自身,借助外部工具(如网络搜索)来评估候选响应是否存在错误。 -
反馈提供:如果检测到错误,反馈 LLM 会生成一段指导性文本,解释错误的性质并给出修改建议。 -
响应修正:生成模型根据反馈修正其输出,最终将优化后的响应呈现给用户。

这个流程虽然有效,但存在一个前提:反馈 LLM 必须被明确告知要检测哪些类型的错误,或者有相应的外部工具来辅助判断。换言之,现有方法在处理那些未在指令中明确定义的错误时会遇到困难。这些“未知错误”可能源于多种情况,比如响应生成模型的更新引入了新的行为模式,或者用户行为发生了变化,导致了新的交互问题。当错误类型超出了预定义的范围,LLM 的检测能力就会下降。
本文正是为了应对这一挑战,即如何自动化地发现和定义对话 AI 中的未知错误。
2. 自动化错误发现
为了系统性地解决未知错误检测问题,作者提出了一个名为“自动化错误发现”的框架。他们将这个问题定义为“广义类别发现”(Generalized Category Discovery, GCD)的一个特例。GCD 的目标是训练一个模型,该模型在训练时只能接触到一部分类别(已知的错误类型),但在推理时需要能够区分来自已知类别和未知类别的数据。
在此基础上,“自动化错误发现”框架包含两个核心子任务:
-
错误检测 :给定一段对话上下文,模型需要判断最后一个代理响应是否包含错误,并确定其所属的错误类型(无论是已知的还是未知的)。 -
错误定义生成 :当模型识别出一个新的、未知的错误类别时,它需要为这个新类别生成一个清晰、准确的文本定义。
下面是该问题的形式化定义:
-
设 为所有错误类型的集合,它由已知错误类型集合 和未知错误类型集合 组成,即 ,且 。 -
已知错误类型集合 ,其中 是错误类型的标识符, 是对应的文本定义。 -
设 为所有对话上下文的集合,它由与已知错误关联的对话集合 和与未知错误关联的对话集合 组成,即 ,且 。 -
对话上下文 被定义为一系列用户和代理之间的对话轮次。 还可以关联一些额外的特征 ,例如在知识密集型对话中,这可能是相关的外部知识文档。
错误检测任务可以表示为一个函数 :
其中,,。关键约束是,在训练过程中,函数 不能接触任何来自未知集合 的数据。
错误定义生成任务则是在 的情况下,根据与该未知错误 相关的所有对话上下文集合 ,生成一个定义 。
3. 模型架构 SEEED
为了实现上述框架,作者提出了 SEEED (Soft Clustering Extended Encoder-Based Error Detection) 模型。该模型由三个主要部分组成:摘要生成、错误检测和错误定义生成。

3.1 摘要生成
直接将完整的对话历史输入编码器可能会引入噪声,因为很多早期的对话轮次可能与最后一个响应中的错误无关。为了解决这个问题,SEEED 首先使用一个 LLM(实验中采用 Llama-3.1 8B-Instruct)来生成对话的摘要。
这个过程通过 few-shot prompting 实现。Prompt 的设计有几个特点:
-
聚焦于错误: 指示 LLM 在生成摘要时,重点关注最后一个代理响应中可能预示错误的信息。 -
规避安全机制: 包含特定的指令以绕过预训练模型的安全限制,从而能够处理和分析那些可能包含不当或有害内容的对话。 -
整合外部知识: 对于知识密集型对话(如 FEDI 数据集中的部分对话),将相关的外部知识文档也一并输入 LLM,以生成更准确的摘要。
值得注意的是,在生成摘要时,模型不会被提供任何已知错误类型的定义。这样做是为了防止模型学习到与特定错误定义相关的“捷径模式”,从而损害其发现未知错误的能力。
3.2 错误检测
错误检测是 SEEED 的核心模块。其流程如下:
-
表示学习:将原始的对话上下文 和生成的摘要 分别输入两个独立的、基于 Transformer 的编码器(例如 BERT)。这一步会得到两个向量表示。 -
表示聚合:将上述两个向量拼接后,通过一个线性层进行融合,得到一个聚合了上下文和摘要信息的最终表示 。 -
软聚类:将聚合表示 输入到一个软聚类算法中,以确定其对应的错误类型。
与传统的硬聚类算法(如 k-Means)不同,SEEED 采用了 NNK-Means(Shekkizhar and Ortega, 2022)。k-Means 将每个数据点强制分配给唯一一个簇,而 NNK-Means 是一种软聚类算法,它允许一个数据点以不同的权重属于多个簇。这是通过非负核回归来建模局部几何关系实现的。作者认为,这种软分配机制更适合处理复杂的对话数据,因为某些错误可能在语义上是模糊的或重叠的,软聚类可以更好地捕捉这种上下文相关的分组关系。
错误检测模块的训练目标是一个联合损失函数,结合了多分类交叉熵损失 和对比损失 :
其中 是一个超参数,用于平衡两项损失。
-
旨在增强模型对已知错误类型的判别能力。 -
则通过对比学习来提升表示空间的鲁棒性,从而帮助模型更好地泛化到未见过的错误类型。
对于对比损失 ,作者采用了软近邻损失 (Soft Nearest Neighbor Loss, SNL) 。SNL 的核心思想是,对于一个样本,其属于某个类别的概率取决于它与该类别中其他样本的距离。通过这种方式,它可以在表示空间中平滑决策边界。其计算公式如下:
这里 是距离函数, 是温度参数。为了进一步改进,SEEED 对传统的 SNL 做了增强。他们观察到,在原始的 SNL 中,所有负样本(即与当前样本类别不同的样本)的权重是相同的。为了放大那些“难以区分”的负样本的影响,他们在计算负样本对的相似度时引入了一个正标量边距 。修改后的相似度计算方式为:
其中 是一个指示函数,当 和 不同时为 1,否则为 0。这个边距 会降低负样本对的相似度得分,使得模型在优化过程中更加关注那些容易混淆的负样本。
3.3 错误定义生成
当检测模块识别出一组属于未知类别的对话样本后,定义生成模块会被激活。该模块同样使用一个 LLM(实验中为 Llama-3.1 8B-Instruct)来为这个新的错误类别生成名称和定义。
输入给 LLM 的内容包括:
-
一组被聚类到同一个未知簇的对话上下文。 -
由摘要生成模块为这些对话生成的对应摘要。 -
从当前数据集中随机抽取的几个已知错误类型的定义作为 few-shot 示例,以引导生成内容的格式和风格。
与摘要生成类似,该模块的 prompt 也包含了绕过安全机制的指令,以处理不当内容。
4. LBSR
除了模型架构,本文在技术层面的一个主要贡献是提出了基于标签的样本排序 (Label-Based Sample Ranking, LBSR) 策略,用于在对比学习中选择高质量的样本。
对比学习的效果很大程度上取决于如何构建正负样本对。一个好的策略是选择那些“困难”的样本,即那些在表示空间中离决策边界很近的样本,因为它们提供了更多的信息来帮助模型学习一个更具判别力的表示空间。
LBSR 建立在 局部不一致性采样 (Local Inconsistency Sampling, LIS) 的思想之上。LIS 假设,如果一个样本的预测结果非常不稳定(即在多次扰动或不同视角下,其聚类分配结果变化很大),那么它很可能位于决策边界附近,是一个“困难”样本。LIS 通过衡量预测的不一致性(inconsistency)和熵(entropy)来识别这些样本。
然而,LIS 是一种无监督的方法。LBSR 的改进之处在于,它在训练阶段利用了已知的标签信息来更精细地对样本进行分类和排序。具体来说,对于一个给定的真实错误类型 ,LBSR 将训练集中的所有样本分为四类(如图 2 所示):
-
软正样本 (Soft Positives) :真实标签为 ,且被模型正确分类为 的样本。 -
硬正样本 (Hard Positives) :真实标签为 ,但被模型错误分类到其他类别的样本。这些样本是模型未能正确理解的“难例”。 -
软负样本 (Soft Negatives) :真实标签不是 ,但被模型错误地分类为 的样本。这些样本位于类别 的决策边界附近,容易与之混淆,具有很高的不一致性。 -
硬负样本 (Hard Negatives) :真实标签不是 ,被模型错误地分类为 ,但它们离类别 的簇中心很近,不一致性较低。
LBSR 首先使用 NNK-Means 对所有训练样本进行聚类,然后根据上述定义对每个类别 的样本进行划分。接着,它会计算每个样本的“相关性分数”(relevance score,综合了不一致性和熵),并根据这个分数对每个类别内的样本进行降序排序。
在训练的每一步中,当模型处理一个样本 (其真实标签为 )时,它会从 hard_pos[y] 或 soft_pos[y] 中挑选一个正样本 ,并从 hard_neg[y] 或 soft_neg[y] 中挑选一个负样本 ,来扩充当前的 mini-batch。通过这种方式,模型被迫学习区分那些最容易混淆的样本,从而优化表示空间。
5. 一个具体的例子:SEEED 如何发现新错误
为了更直观地理解 SEEED 框架的运作流程,我们通过一个具体的例子来展示其如何发现一个未知的错误类型。
假设我们有一个正在运行的客服聊天机器人。在训练阶段,我们已经定义了几种已知的错误类型,存储在系统的“已知错误知识库” () 中:
-
Factual Error(事实错误) -
Repetition(重复) -
Ignore Question(忽略问题)
现在,设想一个真实的交互场景:
用户: "你好,我想找一款适合在公寓里养的宠物,最好是那种不需要太大活动空间的。"
机器人: "当然!金毛寻回犬是一个绝佳的选择。它们是一种需要大量运动和宽敞院子的大型犬,因此非常适合公寓生活。"
该机器人的回答包含了内在的矛盾。这种“在单次回复内自我矛盾”的错误,我们假设它是一种新的、未知的错误类型,不存在于我们的知识库 中。SEEED 框架的目标就是自动发现并定义这个新错误。
5.1 第一步:摘要生成
这段对话被送入 SEEED 框架。Llama-3.1 8B 模型接收到对话和指令后,会注意到“大型犬”、“需要大量运动”和“适合公寓生活”之间的冲突,并生成摘要:
摘要: “用户咨询适合公寓的小型宠物。机器人推荐了金毛寻回犬,一方面描述其为需要大空间的大型犬,另一方面又称其适合公寓,回复内容存在明显的内部矛盾。”
这个摘要提炼了核心错误信息,为后续检测提供了清晰的信号。
5.2 第二步:错误检测与发现
接下来是错误检测模块:
-
表示学习: 原始对话和生成的摘要分别通过编码器,生成聚合后的最终表示向量 V_final。这个向量在数学上代表了这次“金毛寻回犬”对话错误的本质。 -
软聚类与发现: 在一个高维的“错误空间”中,已经存在代表 Factual Error、Repetition等已知错误的点簇。V_final因为其语义与这些已知错误相去甚远,不会靠近任何一个已知簇。NNK-Means 软聚类算法会计算出V_final对所有已知簇的归属概率都非常低。因此,系统判定这是一个未知错误 ()。 -
形成新簇: 当更多类似的“自我矛盾”错误(例如,机器人称“法拉利是顶级的平价跑车”)发生时,它们的表示向量也会被映射到“错误空间”中相近的位置。渐渐地,这些点会聚集在一起,形成一个新的、独立的簇。至此,SEEED 发现了一个新的错误模式。
5.3 第三步:错误定义生成
发现了新簇后,系统需要理解它是什么。
-
输入: 从这个新簇中抽取若干对话样本及其摘要(如“金毛”和“法拉利”的例子),并提供几个已知错误的定义作为 few-shot 示例。 -
处理: LLM 分析这些样本的共同点,摘要中反复出现的“内部矛盾”、“描述与结论不符”等关键词提供了强有力的线索。 -
输出: 基于这些模式,LLM 会生成一个全新的错误定义: -
名称: Internal Contradiction(内部矛盾) -
描述: “当代理在单次回复中,其陈述的部分内容与另一部分内容在逻辑上或事实上相互冲突时,发生此错误。这表明代理未能对其自身的输出进行一致性检查。”
-
这个新生成的定义现在可以被审核并添加到系统的知识库中,完成了一次从发现到定义的闭环。这个例子展示了 SEEED 如何将一个具体的对话问题,转化为一个可识别、可定义的新错误类别。
6. 实验设置
6.1 数据集
-
错误检测: -
FEDI-Error: 一个包含任务导向和文档驱动型对话的数据集,其中的错误是合成生成的。 -
Soda-Eval: 包含从 SODA 数据集中自动提取和标注的开放域对话错误。 -
ABCEval: 包含人与机器人之间的开放域对话,用于评估对话系统的行为。这个数据集规模较小,但数据质量较高,更贴近真实场景。
-
-
意图检测 (用于评估泛化能力): -
CLINC: 用于评估意图检测系统在域外场景表现的数据集。 -
BANKING: 包含真实在线银行客服查询的意图检测数据集。 -
StackOverflow: 一个短文本分类数据集,包含来自 Stack Overflow 的帖子标题,标签为 20 个编程相关的预定义标签。
-
6.2 基线模型
-
LLM Baselines: -
GPT-4o: 通过 in-context learning 进行评估,不使用外部工具。 -
Phi-4: 同样采用 in-context learning,并对其进行了微调(仅在已知错误类型上)的评估。
-
-
Encoder-Based Baselines: -
KNN-Contrastive: 一个基于 k-NN 的对比学习方法。 -
SynCID: 一个用于意图发现的 SOTA 方法,结合了 LLM 生成描述和对比学习。 -
LOOP: 另一个 SOTA 意图发现方法,也采用多阶段训练和对比学习。
-
6.3 评估指标
-
H-Score: 已知类别准确率 (Acc-K) 和未知类别准确率 (Acc-U) 的调和平均数,用于综合评估模型在 GCD 任务上的表现。 -
Acc-K: 模型在已知错误类型上的分类准确率。 -
Acc-U: 模型在未知错误类型上的分类准确率。 -
ARI (Adjusted Rand Index) 和 NMI (Normalized Mutual Information): 用于衡量聚类质量的指标。
实验设置了一个名为“开放度”(Openness)的变量,表示未知类别占总类别数量的比例,实验中分别设置为 25%,50% 和 75%。
7. 实验结果与分析

7.1 错误检测性能
从表 1 可以看出,SEEED 在所有三个数据集和不同开放度设置下,其 H-Score、Acc-K 和 Acc-U 指标均一致地优于所有基线模型。
-
对比 LLM Baselines: LLM(尤其是 Phi-4)在直接进行错误检测时表现不佳,有时甚至低于随机猜测的基线。即便是经过微调,Phi-4 对未知错误的检测能力提升也有限。这表明,在没有明确指令的情况下,LLM 难以识别和泛化到新的错误类型。GPT-4o 表现稍好,但仍逊于 SEEED,并且论文指出 GPT-4o 容易混淆定义重叠的错误类型(例如 ABCEval 中的 Commonsense Contradiction和Uninterpretable)。 -
对比 Encoder-Based Baselines: SEEED 的性能也超过了 SynCID 和 LOOP 等专门为类别发现设计的模型。论文分析认为,这主要得益于 SEEED 的几个关键设计。首先,使用 LLM 生成的摘要提供了更集中的错误信息,减少了长对话历史的干扰。其次,LBSR 提供了比 LIS(LOOP 使用)和 kNN 过滤(SynCID 使用)更有效的对比学习样本。最后,使用 NNK-Means 软聚类比硬聚类更适合处理语义模糊的错误。
7.2 消融实验

为了验证 SEEED 各个组件的有效性,作者在 FEDI-Error 数据集上进行了一系列消融实验。
-
摘要的作用 (w/o summaries): 移除对话摘要后,模型性能大幅下降。这证实了摘要确实起到了聚焦错误信息、减少噪声的作用。 -
SNL 的作用 (w/o SNL): 移除 SNL 损失(即只使用交叉熵损失)后,性能进一步下降。这表明对比学习对于学习一个鲁棒的、可泛化到未知类别的表示空间至关重要。 -
边距参数的作用 (SNL w/o margin): 在 SNL 中去掉边距参数 后,性能有所下降,说明放大难分负样本的权重是有效的。 -
LBSR 的作用 (w/o LBSR): 将 LBSR 替换为随机采样后,性能显著降低。这突显了高质量样本选择策略在对比学习中的核心地位。 -
软聚类的作用 (w/o NNK-Means): 将 NNK-Means 替换为 k-Means 硬聚类后,性能也有所下降,验证了软聚类在处理此类任务时的优势。
7.3 泛化能力:意图检测

为了测试 SEEED 方法的普适性,作者将其应用于开放世界意图检测任务。结果显示,SEEED 在 CLINC、BANKING 和 StackOverflow 数据集上同样取得了最佳性能,尤其是在未知意图的发现准确率 (Acc-U) 上提升显著。例如,在 StackOverflow 数据集上,相比 LOOP,Acc-U 提升了 17 个百分点。这表明 SEEED 的核心思想(摘要+编码器+LBSR+软聚类)不仅仅适用于错误检测,对于其他广义类别发现任务也具有泛化潜力。

t-SNE 可视化结果也直观地展示了 SEEED 的优势。相比其他方法,SEEED 生成的表示空间中,无论是已知意图还是未知意图(如图中的 Scala 和 Bash),都形成了更紧凑、边界更清晰的簇,这有利于后续的分类和发现。
7.4 错误定义生成

作者对模型生成的错误定义进行了手动分析。结果表明,基于 LLM 的定义生成模块能够产出流畅且信息丰富的定义。与数据集中原始的、有时过于简洁的定义相比,SEEED 生成的定义通常能更好地捕捉错误的本质,并提供更详细的描述。例如,在 Soda-Eval 数据集中,原始定义 Antisocial (包含不安全或不当行为),SEEED 生成的定义是 Disrespectful (以使用攻击性语言、贬义词和攻击性语气为特征,可能导致情绪困扰),后者显然更具体、更具操作性。这得益于 prompt 中包含了与该错误相关的多个真实对话上下文和摘要,为 LLM 提供了丰富的语境信息。
8. 总结
总的来说,这篇论文针对对话 AI 中一个重要且具有挑战性的问题——未知错误的自动化发现——提出了一个系统性的解决方案。其提出的 SEEED 模型,通过结合 LLM 的语境理解能力和轻量级编码器的高效性,并在对比学习中引入了基于标签的样本排序策略(LBSR),在多个基准测试中展现了其有效性。
这项工作为对话系统的持续监控和自我完善提供了一种新的思路。通过自动化地发现和定义新错误,系统可以更快地适应模型更新和用户行为变化,从而构建一个动态的、不断演进的错误知识库。
尽管该论文提出了一套完整的框架和有效的模型,但仍有一些方面值得深入探讨。
-
任务定义的局限性:论文将错误检测框定为一个多分类问题,即一个代理响应只对应一种错误类型。然而在实际应用中,一个响应可能同时包含多种错误(例如,既有事实错误,又缺乏同理心),或者错误的边界本身就是模糊的。将问题简化为单标签分类,可能无法完全捕捉真实世界对话错误的复杂性。
-
LBSR 的前提假设:LBSR 的有效性依赖于 NNK-Means 能够做出一个相对合理的初步聚类。如果初始聚类效果很差,那么“硬正样本”和“软负样本”的识别就可能不准确,从而影响对比学习的效果。此外,LBSR 仍然是在训练阶段利用已知标签,这使得它与纯粹的无监督或自监督发现方法有所区别。
-
数据集的性质:实验使用的数据集(FEDI-Error, Soda-Eval)主要是合成生成的。虽然这类数据集规模较大、错误类型覆盖较广,但其错误模式可能与真实用户交互中自然产生的错误存在差异。ABCEval 数据集质量更高,但规模非常小。因此,模型在更大规模、更多样化的真实世界对话数据上的表现仍有待验证。此外,所有数据集都是英文的,该方法在其他语言上的有效性尚未可知。
-
对超参数的敏感性:整个框架涉及多个超参数,例如联合损失中的 、SNL 中的边距 和温度 、NNK-Means 的参数等。这些参数的选择可能会对最终性能产生较大影响,而论文中对这些参数的选取和敏感性分析讨论有限。例如,边距 是通过一个闭世界实验选定的,它在更复杂的开放世界场景中的最优值可能不同。
-
对簇数量的假设:与许多聚类驱动的类别发现方法一样,该方法在最终进行聚类时,需要预先知道总的类别数量(已知类别数 + 未知类别数)。在真实的、动态变化的对话环境中,未知错误的数量是不可预知的。如何自适应地估计或确定总的簇数量,是这类方法在实际应用中需要解决的一个关键问题。
往期文章:
