Beyond Accuracy: Behavioral Testing of NLP models with CheckList

《 Beyond Accuracy: Behavioral Testing of NLP models with CheckList

ACL2020最佳论文奖

图片

GitHub:https://github.com/marcotcr/checklist

文章链接:https://arxiv.org/pdf/2005.04118.pdf

理解难度:★★★★

图片

◆ 摘要

这篇文章提出了自然语言处理的一种模型无关和任务无关的测试方法,虽然测量精度一直是评价通用化的主要方法,但它往往高估了 NLP 模型的性能,而评价模型的替代方法要么侧重于个体任务,要么侧重于具体行为。受软件工程中行为测试原理的启发,作者介绍了一种测试 NLP 模型的不确定任务方法 CheckList。Checklist 包括一个通用语言能力和测试类型的矩阵,它有助于全面的测试构思,以及一个快速生成大量不同测试用例的软件工具。作者用三个任务的测试来说明 Checklist 的效用,在商业和最先进的模型中识别出了关键的失败。在一项用户研究中,一个负责商业情绪分析模型的团队在一个经过广泛测试的模型中发现了新的、可操作的错误。在另一项用户研究中,具有 Checklist 的 NLP 实践者进行了两倍多的测试,发现的 bug 几乎是没有 checklist 的用户的三倍。

 

◆ 介绍

  • 训练NLP模型的一个主要目标是提升其泛化性。当前的一种标准化的评估方法是将数据集划分为“训练-验证-测试”集,在测试集上评估模型的准确率。这种评估方式存在着一定的局限性,如测试集数据并不全面,和训练集存在同样的偏差。此外,将模型的表现总结为单个指标,很难去找到模型失败的具体原因,也就无法去修复它。

  • 近年来,大量的其他评估方法被提出,但是这些方法基本都专注于具体的任务(如问答)或者是单一的能力(如鲁棒性),并不能提供模型评估的全面指导。在软件工程领域,对于复杂的软件系统通常采用“行为测试”的方法,通过验证输入输出行为来测试一个系统的不同的能力。

  • 本研究借鉴了这一思想,提出了CheckList,一种用于全面测试NLP模型行为的评估方法及配套工具。CheckList通过提供一个“语言学能力”列表告诉用户要测试的内容,其适用于大部分的任务,同时还给出了三种不同的“测试类型”,来满足不同能力的特定行为需求。最后,原文中的CheckList实现还包括了多种“抽象”以帮助用户生成大量的测试用例。

 

详解CheckList

CheckList遵循行为测试中的“将实现与测试分离” 的原则,将模型看作一个黑盒子,从而提升评估方法的通用性。下图1给出了CheckList的一个使用案例,其评估的是一个情感分析模型,以矩阵的形式呈现,矩阵的行代表“模型的能力”,矩阵的列代表“测试的类型”,通过测试用例去填充这个矩阵。

 

图片

图1  CheckList 使用案例
 

通过图1,我们便可知道CheckList的核心其实体现在如下三方面:

  • 能力(Capabilities)

  • 测试类型(Test Types)

  • 生成测试用例(Generating Test Cases at Scale)

     

 

 

能力

 

 

不同于现代 NLP 模型常常仅关注特定的任务,CheckList 希望去评估一个模型的多方面能力,这些能力有的是模型通用的,有的则是面向特定的任务或领域。原文中列举了如下的一些通用性能力:

  • Vocabulary+POS:是否掌握任务相关的词汇及词性

  • Taxonomy:是否理解同义词、反义词

  • Robustness:是否能够应对拼写错误和不相关的变化

  • NER:是否能够识别相关的命名实体

  • Negation:是否理解否定词

  • Coreference:是否理解指代关系

  • Semantic Role Labeling:是否理解各种角色

  • Logic:是否能够处理对称性、前后一致性以及连接词

有时还需要根据具体任务去添加其他特定的能力。上面图1的案例中分别通过不同的测试类型评估了模型的 Negation、NER 和 Vocabulary 能力。

 

 

 

测试类型

 

 

对于每种能力,CheckList给出了三种可能的测试类型:最小功能测试、不变性测试以及定向期望测试。

  • 最小功能测试(MFT)

    受启发于软件工程领域的单元测试,通过大量简单但是具有针对性的样例对目标能力进行测试。在上面图1的案例A中,通过模板(下一节介绍)生成了具有否定词的测试用例来测试模型的否定能力。

  • 不变性测试(INV)

    受启发于软件蜕变测试,INT对模型输入做一些不影响结果的轻微变化,期望模型的输出保持不变;

  • 定向期望测试(DIR)

    同样受启发于软件蜕变测试,而DIR则是对原有数据做少许改动,期望模型的输出朝一个期望的方向变化。

在上面图1的案例(B & C)中,对于 NER 能力使用了 INV 进行测试,通过替换地名相关的命名实体检测模型的输出是否发生变化;对于词汇能力则使用 DIR 进行了测试,通过加入消极的短语,判断模型是否不会变得更积极。对于 INV 和 DIR,其可以基于「无标签数据」进行测试,因为我们关注的不是真实结果,而是加入扰动前后输出结果的变化关系。

 

 

 

生成测试用例

 

 

CheckList通过提供一系列的抽象来帮助用户快速地生成大规模「测试用例」,这些用例可以直接创造,也可以通过改动已有数据得到。原文介绍了两种抽象方式:模板和扩展模板。

  • 模板

    提供了一个通用的句式,其中的成分只给出其词性,每个成分下用户可以创造一系列的可选词语,系统会基于笛卡尔积(即所有可能的组合)生成测试用例。

    在上面的案例中,I {NEGATION} {POS_VERB} the {THING} 就是一个模板。其中{NEGATION}={didn’t, can’t say I, ...},{POS_VERB}={love, like, ...},{THING}={food, flight, service, …}。

  • 扩展模板

    基于模板生成的用例需要依赖用户为每个缺失成分添加可选词语列表,CheckList还提供了一种生成词语的方式,用户可以将一个模板的某个部分遮挡起来,CheckList会自动为被遮罩的部分生成一些可选词语(基于RoBERTa实现),用户可以将这些词语过滤为特定的词语列表(如积极、消极、中性词语)用于多个测试,有时候生成的词语可能不需要过滤。RoBERTa 的生成建议也可以和 WordNet 结合在一起输出一些特定的近义词或反义词列表。此外,原文表示还提供了一些现成的常用填充词语,如姓名和地点的命名实体。下图给出了一个基于 MLM 的模板的例子:

     

    图片


◆ 对比SOTA模型

原文针对三个 NLP 任务对当前的一些 SOTA 模型进行了 CheckList 测试,具体如下所示:

  • 情感分析(Sentiment Analysis)

    共测试了五个模型,包括商业界的微软、谷歌和亚马逊的付费 API,以及学术界的 BERT-base 和 RoBERTa-base(在 SST-2 数据集上微调,acc 分别达到 92.7% 和 94.8%)。

    图片

  • 重复问题检测(Quora Question Pair)

    测试了 BERT-base 和 RoBERTa-base(在 QQP 数据集上微调,acc 分别达到 91.1% 和 91.3%)。在部分任务(如 Negation)上,所有模型的表现都很糟糕。

  • 图片

  • 机器阅读理解(Machine Comprehension)

    测试了基于 SQuAD 的 BERT-large,F1 值达到 93.2%。

    图片

 

用户评估

本节通过用户评估进一步验证 CheckList 的有效性和灵活性,原文中面向两类用户进行了评估,一类用户已经对待测试的模型进行过基于其他方法的仔细评估,另一类用户则对待测试的任务(模型)缺乏了解。

第一类用户表示他们可以通过 CheckList 进一步测试模型,发现一些之前没有考虑到的问题;第二类用户虽然缺乏经验,但是依然可以通过 CheckList 进行一系列测试,并发现一些模型的问题。具体的评估过程请阅读原文。


◆ 总结

传统的基于准确率的评估并不足以完全评估NLP模型的真实表现,本文借鉴软件工程中行为测试的思想,提出了CheckList,一种模型无关和任务无关的测试方法,其通过三种不同的「测试类型」测试模型的各种「语言学能力」。为了说明其有用性,文章在三种不同的任务上测试了多个模型,暴露了大量传统的评估方法难以发现的问题。用户评估表明,CheckList非常易于学习和使用,对各类用户都是有帮助的。此外,CheckList的开源实现所提供的抽象方法和工具能够更加轻松地创造测试用例,进行面向各种任务的测试。

 

图片

点赞+关注 就是最好的打赏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值