您的位置  > 互联网

尝试分析机器学习模型在什么时候、以什么方式、由于什么原因失效

NLP任务错误分析现状

但目前人们如何进行误差分析呢? 如果你翻看自然语言处理顶级学术会议ACL的录用论文,基本上会看到这样的叙述:

显然,该领域的研究人员一致采用了这种做法:“我们随机选择了50到100个答案不正确的问题,并将它们大致分为N组。” (斯坦福大学NLP组组长画外音:问答任务论文中选择100个样本进行误差分析的惯例很可能来自于我——最初我们想做200个,但分配给我的一半我从来没有做过)

选择一些误差样本进行分析似乎是有一定道理的,对吧? 但这种做法实际上存在很大的问题。 例如,50到100个样本量就太小了,一般只占总误差的5%。 如此少量的样本很难代表真实的误差分布。 如果某个关键模型问题恰好没有反映在用于错误分析的样本中(例如,聊天助手机器人会对某些语句给出不恰当的答案),则实际部署的是未修复的模型。 ,结果肯定会非常可怕。

那不是全部。 小样本量只是常见实践中的第一个问题。 在ACL 2019论文《:、、和Error》中,作者详细列出了NLP错误分析中的许多关键挑战,同时还提出了三个原则。 他们希望大家能够让错误分析更加准确,拥有更好的能力。 可重复、可扩展且可测试。 作者还设计了一个交互式工具来实现这些原则,并且还可以根据具体情况解决已识别的问题。

论文作者还写了一篇介绍性博客,通过具体的误差分析过程解释了为什么目前基于小批量样本的手工主观误差分析容易产生模糊性和偏差分析,并可能导致错误。 为什么以及如何避免这些错误。 他们的论文中还有更多例子。 雷锋网AI技术评论整理了介绍性博客全文。

让我们从实际例子开始

我们将对 BiDAF () 进行误差分析,BiDAF () 是一个著名的机器阅读理解基准模型 ( )。 在这个任务中,首先给定一个问题和一段文本,机器阅读理解模型需要找到能够正确回答问题的文本片段。

在这个来自 SQuAD 数据集的示例中,Gold 以粗体显示,创建了 2005 年的《神秘博士》特别集。

作为语言理解最重要的测试任务之一,机器阅读理解中的错误分析非常关键,但也存在很多困难:研究人员都希望找到先进模型的弱点并做出改进,但由于模型的输入(问题) 、文本段落)和输出(答案)都是非结构化文本,可用于分析和解释数据集的特征非常少。 BiDAF是研究机器阅读理解任务的学者非常熟悉的模型。 下面给出的误差分析例子均基于研究人员对BiDAF的真实分析。

在刚才的例子中,BiDAF 做出了错误的预测,给出了答案 John(下划线)而不是 Gold。 我们希望能够从这个错误中做出一些概括,并对模型的性能有更全面的了解。

在分析这个误差时,我们首先要问的问题是:为什么模型会出现这个误差? 一位专家对干扰词给出了猜测:BiDAF擅长将问题与各种命名实体类别匹配,但如果同时出现其他同类型实体,BiDAF就会很容易受到干扰。 就拿上面的例子来说,我们问的问题是“谁”,BiDAF 知道我们需要一个人的名字,它也确实回答了一个人的名字,但并不是正确的人名。

考虑到这个假设,我们需要问的下一个问题是:“这个模型经常犯这个错误吗?” 探索该猜想的普遍性需要研究更多相似的样本。 然而,正如我们上面提到的,如果想要探索整个数据集,这些非结构化文本中可用的特征太少,因此研究人员通常会手动标记一些错误样本,并将它们分为不同的组。

这种方法的问题在于,不同分组的定义是主观的,不同的人会提出不同的分组方式。 例如,另一个例子,询问“何时”的问题的标准答案是“当他在大学时”,但模型给出的答案是“1996”,这是一个错误的年份。 可能有人认为这是一个符合干扰词猜想的问题。 毕竟,该问题询问的是时间,这与模型给出的答案类型(也是时间)相匹配。 但有些人可能认为它应该属于另一个错误类别。 毕竟,标准答案“当他在大学时”并不是一个可以识别的命名实体。 如果您只查看此错误示例的名称和文本描述,您可能甚至没有意识到这种差异。

事实上,论文作者发现,即使使用简单的规则来定义不同的错误分组,人与人之间也会出现这种差异/不一致:作者查看了之前发表的错误分析。 一个错误类型及其描述,然后让现在的专家重复实验。 结果,他们分配给该组的错误数量非常不同。 差异最小为13.8%,最大为45.2%; 这一点体现的比较清楚。 它消除了手动注释的歧义。

针对这种情况,论文作者提出了第一个原则:错误的猜想必须准确界定,描述清晰。

原则一:准确

为了避免人为主观性并提高准确性,使用特定于任务的语言(-)来定量描述不同的实例。

简单地说,这种特定于任务的语言使用一系列强大的属性提取器,借助附加的辅助运算符(属性提取器、目标、运算符)来解析特定错误。 例如,可以解析一个问题的长度,要求长度大于20。这样,研究人员就可以客观、系统地将大量错误示例按照特定模式进行分组,推导出某个错误的准确频率。 。 例如,下图就是对这种语言中“干扰词猜测”的准确描述,而“当他在大学时”这个例子可以排除在这个类别之外。

原则2:覆盖所有数据

对BiDAF中的所有错误执行此过滤后,总共发现了192个符合“干扰词猜想”的例子,这意味着标准答案和错误答案的命名实体类型是相同的,然后模型给出了错误的实体。 值得注意的是,在达到这种准确性的基础上,使用特定于任务的语言还可以大大扩展错误分析的规模:而不是通常实践中分析总共 50 到 100 个错误样本,现在单个错误类别的样本量达到了192个。这也减少了抽样误差。

从总数来看,这192个错误样本占错误总数的6%。 这个干扰词猜想似乎得到了证实。 有了具体的数据之后,误差分析的说服力就强多了不是吗?

然而,当我们执行所有步骤中的过滤器并构建详细分组时,我们实际上会发现一张新图片:对于所有样本,BiDAF 可以在 68% 的样本中给出正确的实体; 对于标准答案是实体样本,模型的准确率将提高到80%; 当文本中存在其他相同类型的实体时,BiDAF的准确率仍然为79%; 当要求其预测正确类型的实体时,其准确率高达 88%,远高于整个样本的准确率。 这意味着对于实体类型匹配和干扰词的情况,模型的性能仍然优于整体性能。 这种情况并不是模型性能的缺点。 因此,如果您只是注意到出现问题并决定先修复它,您可能需要重新考虑,因为您可能会忽略模型性能非常差的情况。

因此,这种特定于领域的语言可以帮助分析整个数据集,包括检查样本没有错误。 这种误差分析更加系统化,可以支持更大的规模; 与只看小样本相比,你得到的结论可能完全不同。

那么,第二个原则可以正式表述为:错误频率的分析应该在整个数据集上进行,其中需要包括正例(true)。

原则 3:测试不正确的猜想并验证因果关系

现在我们已经建立了一组干扰词。 然而,错误发生时存在干扰字并不一定意味着干扰字是错误的根本原因。 回到前面的例子,我们可以简单地认为错误的根本原因是因为干扰词,但也可能是因为我们需要做多句推理,需要连接《神秘博士》和《系列》 ”,或者也许还有其他原因。

这就导致了我们目前的情况还有一个问题:很难有效隔离错误的根本原因。要找出原因,我们需要第三个原则

原则 3:错误的猜测应该通过显式测试来验证

借助论文,作者想回答这个问题:这192个错误是由干扰词引起的吗? 验证的方法是提出并验证一个相关的假设问题:“如果没有这个干扰词,模型能否给出正确的答案?” 作者使用重写规则并使用反事实分析( )来寻找答案。

根据这种特定于领域的语言,组内的所有实例都可以按照一定的规则进行重写。 例如,这里为了验证干扰词是否是根本原因,根据重写规则将文本中的干扰词替换为无意义的占位符“#”,从而不再将其检测为实体。

重写完成后,让模型再次进行预测。 在之前的《神秘博士》示例中,即使错误答案 John 已被替换为“#”,模型仍然给出了另一个错误答案 Ron。 似乎另一个分散注意力的词仍然让模型感到困惑。

对于组中的其他样本,在 29% 的情况下,模型给出了另一个相同类型的错误实体(另一个干扰词); 在 48% 的情况下,模型给出了正确的预测。 这部分样本中确实是噪声词造成了错误的预测; 在剩下的 23% 中,模型给出了与之前相同的预测 - 只不过现在这些字符已被“#”替换,因此模型的预测将包括这个“#”字符没有实际含义! 可以推测,这可能是因为问题和预测答案高度重叠,因此模型实际上正在做一些更接近于直接字符匹配的事情,而不是寻找实体。 仅通过分组无法获得这种反事实分析得出的结论。

准确+可重复+可重复应用

在上述错误分析过程中,我们需要使用准确的查询语句来构造属性、分组并执行重写规则。 经过分析,我们发现BiDAF在有干扰词的情况下性能并没有那么差,而且一些我们认为是干扰词引起的问题实际上还有其他根本原因。

此外,准确的查询语句的一个非常大的好处是它们可以轻松地与其他人共享,重现实验结果,并将其应用到其他模型甚至其他任务中。

最后,论文作者还表示,该工具具有清晰、易用、多功能的图形用户界面,并具有语句演示、属性分布图等实用功能。

要点总结

一个常见的(但有偏见的)错误分析来自

(改进)错误分析

对 NLP 领域之外的错误分析的影响

目前的实现(尤其是特定领域语言部分)仅针对 NLP 任务。 然而,机器学习系统也经常需要处理非文本数据。 论文作者认为,即使他们的实施目前很难扩展到其他领域,但他们的三个原则可以而且必须应用于其他领域,以帮助大家部署正确的模型并朝着正确的研究方向前进。 挖。

基于这三个原则创建一个新工具并不难,只要能够支持相应的三点即可:

作者表示,该软件架构可以支持扩展到其他 NLP 任务,欢迎更多 NLP 领域的研究人员和开发人员加入到开发和扩展中。 而且,如果类似的工具出现在其他领域那就太好了。