阅读《DialTest: Automated Testing forRecurrent-Neural-Network-Driven Dialogue Systems》

DialTest: Automated Testing forRecurrent-Neural-Network-Driven Dialogue Systems

摘要:

随着递归神经网络(RNN)的巨大发展,对话系统得到了长足的发展。许多rnn驱动的对话系统,如Siri、谷歌Home和Alexa,已经被部署来协助各种任务。然而,伴随着这种出色的性能,rnn驱动的对话系统,本质上是一种软件,也可能产生错误的行为,导致巨大的损失。同时,支持对话系统的RNN模型的复杂性和难驾驭性使得它们的测试具有挑战性。
本文设计并实现了第一个rnn驱动的对话系统的测试工具DialTest。DialTest使用一系列转换操作符对种子数据进行实际更改,同时适当地保留它们的oracle信息。为了提高故障检测效率,DialTest进一步采用Gini impurity来指导测试生成过程。我们进行了大量的实验来验证DialTest。我们首先在自然语言理解的两个基本任务上进行实验,即意图检测插槽填充。实验结果表明,DialTest能够有效地检测对话系统中不同rnn驱动的自然语言理解(NLU)模块的数百种错误行为,并通过对生成的数据进行再训练来提高其准确性。进一步,我们以一个工业对话系统为例,研究DialTest在真实使用场景下的性能。研究表明,DialTest能够有效地检测错误,提高rnn驱动对话系统的鲁棒性。

背景

1.The Workflow of Dialogue Systems

对话系统的一般工作流程如图所示。用户输入文本或语音到系统中,系统经过一系列处理后输出文本或语音信息作为反馈。与基于文本的对话系统相比,基于语音的对话系统采用语音信息进行交互,并通过自动语音识别(ASR)模块将语音信息转换为文本。类似地,在系统生成输出文本后,基于音频的对话系统将文本消息转换为语音,并通过文本到语音(TTS)模块将它们播放出来。文本处理工作流程分为自然语言理解(NLU)、对话管理(DM)和自然语言生成(NLG)三个主要模块。
在这里插入图片描述
作为输入对话系统的句子,NLU模块首先识别其意图,并识别其是否包含与预定义任务相关的关键字。这两个任务被表示为插槽填充意图检测。意图检测是通过分类将输入句子分类成相应的意图类型。在确定句子的意图后,可以有效地缩小后面几个模块的处理范围。填槽是在输入句子中搜索合适的词,并将其填入预定义的语义填槽中。如表1所示,用户请求将曲目添加到指定的播放列表中。这个句子的目的是添加播放列表。语义槽可以根据句子的语义填入相应的词,如播放列表的名称可以填入 “classical relaxations”。
在这里插入图片描述

然后将DM模块细分为对话状态跟踪模块和策略学习模块。对话状态跟踪模块的功能是管理每一轮的输入和对话历史,然后输出当前的对话状态。而对话政策学习模块的设计往往是根据当前的对话状态来学习下一步行动。该模块通常根据规则生成相应的动作。例如,在在线购物场景中,如果对话状态为łrecommended“,那么将触发łrecommended”操作,系统将从产品数据库检索产品。最后,NLG模块的功能是将抽象的对话动作转换成自然语言的表达式供用户理解。
意图检测和插槽填充任务是对话系统工作流程的基础,对最终行为有重要影响。在本文中,我们使用这两个任务来评估DialTest的性能。

APPROACH

如图3所示,DialTest首先与相应的算子应用一系列变换方法,特别适应NLU模型的插槽填充和意图检测任务。该转换可以在不改变原句语义的情况下生成新的测试句。DialTest在生成测试用例时,计算Gini impurity,然后量被测模型对测试数据测的不确定度。在Gini杂质指导下,DialTest可以有效地选择模型中最有可能触发潜在缺陷的测试数据。最后,生成的转换测试数据可用于评估模型的稳健性。另外,DialTest可以通过对转换后的训练数据进行再训练来提高模型的准确性。
在这里插入图片描述

Transformation Operators

  • 同义词替换(Synonym Replacement, SR):该族运算符通过用同义词替换单个单词来实现句子的转换,从而保持句子的意思不变。DialTest利用大型英语词汇数据库WordNet查找和替换同义词。在WordNet中,名词、动词、形容词被分成几组认知同义词,每组词表达一个不同的概念。
  • 反向翻译(BT):这类操作符将目标句子翻译成一种中间语言,然后再将其翻译回原语言。由于机器翻译一般是对句子结构进行重组,因此转换后的数据在保持句子意义不变的同时,也提高了句子结构的丰富性。对于中间语言,我们选择汉语、法语和西班牙语,因为它们的字母和语法完全不同
  • 单词插入(WI):这类操作符通过插入单词来转换句子。当NLU模型执行意图检测和插槽填充时,它实际上是在试图理解输入语句。因此,如果在保持语法正确的同时,在句子中加入一些与意图无关的词,可能会造成模型的潜在干扰。语言表示模型,如BERT,ROBERTA和ALBERT已经被提出用于自动生成自然语言。隐藏语言模型(MLM)任务根据上下文的语义预测隐藏词,用于句子转换。在转换算子上,我们选择了三种具有不同参数配置的预训练语言表示模型,在原句子上插入新单词。同时,我们控制字数从1到3。因此,一个单词和一个短语都可以插入
    在这里插入图片描述
    注意,测试的NLU模型同时处理意图检测和插槽填充任务。特别是句子的意图检测可以看作是一个句子分类任务,即为输入的句子标注预定义的意图类别。槽填充可以看作是一个序列标注任务,即用标签集中的某个标签标记线性输入序列中的每个元素。表1展示了一个标签数据的示例,它取自Snips数据集。模型输出句子中每个单词的标记结果,标记格式为BIO格式,即每个元素标记为"B-X",“I-X"或"O”。其中"B-X”表示该词属于X类型,位于这一段的开头。“I-X"表示对应的单词属于类型X,位于片段的中间,而"O"表示该单词不属于任何类型。
    DialTest在进行SR变换时,将非实体词随机替换为同义词,即槽标为"O”。由于被替换的单词原本没有实体标签,因此slot和intent标签与原始数据保持一致。在应用BT变换时,由于句子翻译时,可能会出现替换词和顺序的变化,所以槽标很难与原槽标保持一致。因此,DialTest只使转换后的句子的意图标签与原始标签保持一致。在应用WI转换时,DialTest将插入字的槽标签标记为"O",并将意图标签保留为其原始意图

Gini-Guided Sentence Transformation

我们探索了另一种解决方案,Gini impurity,以指导句子转换过程。我们选择DeepGini,这是一个特定于dnn的Gini杂质,来实现DialTest。DeepGini可以用来评估分类模型中测试用例的质量,最后一层通过softmax函数计算标签的概率,然后输出分类结果。由于DeepGini系数的计算只能应用于一维softmax矩阵,因此填槽任务由于输出的是二维softmax矩阵,不能直接计算DeepGini系数。因此,我们计算模型处理意图检测任务的DeepGini系数。
DeepGini coefficient is defined as:
ξ ( t ) = 1 − ∑ i = 1 N p t , i 2 ξ(t)=1-\sum\limits^N_{i=1}p^2_{t,i} ξ(t)=1i=1Npt,i2
where 𝑃 𝑡 , 𝑖 𝑃_{𝑡,𝑖} Pt,i represents the probability that the test case 𝑡 belongs to the class 𝑖 𝑖 i.
对于意图分类测试模型的softmax层,由于测试用例导致的DeepGini系数较高,说明模型对预测结果不确定,更容易发现模型的潜在缺陷。
与传统软件基于代码覆盖率的测试方法类似,DialTest试图生成一个可以增加DeepGini系数的测试集。由于我们的测试目标是生成更多可能导致模型预测结果错误行为的数据,所以我们使用DeepGini来引导句子转换,而不是神经元覆盖。

Combining Transformations to Increase DeepGini Coefficient

由于一个句子的一次转换可以增加数据样本的丰富性,所以一个明显的问题是,它们是否可以结合起来进一步提高测试样本的DeepGini系数。在生成测试集时,DialTest结合多个转换来增加被测试模型的DeepGini系数,从而检测出更多模型的错误行为。但是,如果将所有的转换方法组合到原始测试集,会产生大量的测试样本,导致测试效率低,存储空间成本高。此外,如果组合的数量不受限制,从理论上讲,组合是无穷无尽的,导致数据质量的不确定性。DialTest提供了一种gini引导的技术来生成转换后的数据,它可以有效地找到趋向于丰富文本数据语义的转换组合。
算法1给出了结合变换增加DeepGini系数的过程。当生成转换后的数据时,DialTest应用DeepGini函数作为指导,以确保生成的测试数据比原始测试更有可能发现系统中的潜在bug。R算法的测试模型,和一个句子转换列表T和相应的参数作为输入,和一组种子句子美国这个算法的主要实现过程是先将种子句子由一个随机变换,然后计算DeepGini系数的测试模型。如果指定的阈值휏DeepGini系数增加,然后生成的句子句子添加到种子列表。相反,生成的句子被直接丢弃,因为它的DeepGini系数小,说明R对这个输入句子的置信度高,不容易产生错误行为。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值