A Quantitative Analysis Framework for Recurrent Neural Network
文章目录
简介
论文标题
- A Quantitative Analysis Framework for Recurrent Neural Network
- 一种递归神经网络的定量分析框架
- 2019
短文,讲DeepStellar工具的
附DeepHunter的短文名称: Coverage-guided Fuzzing for Feedforward Neural Networks
摘要
摘要-递归神经网络(RNN)在自动语音识别、自然语言处理和机器翻译等应用中处理顺序输入方面取得了巨大的成功。然而,RNN的质量和可靠性问题使其容易受到敌意攻击,阻碍了其在实际应用中的部署。本文提出了一个定量分析框架DeepStella,为RNNs驱动的软件系统进行有效的质量和安全性分析铺平了道路。DeepStella是通用的,可处理各种RNN架构,包括LSTM和GRU,可扩展以在工业级RNN模型上工作,并可扩展以开发定制的分析器和工具。我们演示了,使用DeepStella,用户能够设计高效的测试生成工具,并开发有效的敌意样本检测器。我们在三个真实的RNN模型上测试了所开发的应用程序,包括语音识别和图像分类。DeepStella在生成缺陷触发测试方面的性能是现有方法的三百倍,并且在检测对手攻击方面达到了97%的准确率。展示“深星”主要功能的视频演示可在以下网址获得:https://sites.google.com/view/deepstellar/tool-demo.
动机
在过去的几十年里,我们见证了深度学习的出现和快速发展。DL已经成功地部署在许多现实应用中,包括人脸识别、自动语音识别(ASR)和自动驾驶等。然而,由于DL系统固有的脆弱性和缺乏严格的验证,DL系统受到质量和安全问题的困扰,如Alexa/Siri操纵和自动驾驶车祸,这些问题都是从开发和部署阶段引入的[1]。
由于与传统软件有着根本不同的编程范例和逻辑表示,现有的质量保证技术很难直接应用于DL系统。最近,人们对特定于DL系统的技术进行了大量的研究,包括测试[2]、[3]、[4]、[5]、[6]、验证[7]和对抗性样本检测[8]。现有的工作主要集中在前馈神经网络(FNNS)方面,对递归神经网络(RNNs)的研究较少。模糊神经网络采用前馈设计,将输入作为一个整体,其内部的每一层在特征提取过程中起着固定的作用。相反,RNN逐段消耗顺序输入并以迭代方式工作,如图1A所示。在每次迭代中,RNN处理单个元素,演化成新的状态,记录状态信息并将其转发到下一次迭代。这一关键特性使RNN能够处理时间信息丰富的数据,如自然语言文本、音频和视频。由于各层的作用是可以互换的,这就使得RNNs的定量分析变得更加困难,甚至在处理两个样本时也难以衡量其行为差异。
为了弥补这一差距,我们提出了一个通用的定量分析框架DeepStella,它使人们能够对基于RNN的DL系统进行有效的安全和质量分析。DeepStella的核心是对RNNs唯一的隐藏状态空间进行抽象,将RNNs的内部行为建模为离散时间马尔可夫链(DTMC)。DeepStella是通用的,可以处理各种RNN架构,包括LSTM[9]和GRU[10],并且可以扩展来为RNN开发定制的分析器和测试工具。为了验证DeepStella的有效性,我们在DeepStella的基础上开发了一个高效的RNNs测试生成工具和有效的敌意样本检测器。我们将这两种工具应用于三个真实的RNN模型,包括ASR和图像分类,并在生成数百倍的敌意样本的情况下观察到了令人振奋的结果,在敌意攻击检测中的准确率为97%。DeepStella方便了基于RNN的DL系统的开发人员、用户和研究人员,使他们能够更好地理解RNN的行为,定义量化度量,并开发更有用的工具包,使系统更加健壮和安全。
THE DeepStellar FRAMEWORK
图1b显示了DeepStella的概述,它包括三个组件:抽象模型构建模块和两个应用程序-对抗性样本检测器(DeepStellarASD)和覆盖引导测试工具(DeepStella-CGT)。抽象模块将目标RNN及其训练数据(的一部分)作为输入,构建抽象模型。DeepStella提供API来访问抽象模型中的状态和转换信息,以及样本遍历的抽象跟踪。通过这种方式,用户可以通过扩展DeepStella(类似于DeepStella-ASD和DeepStella-CGT)来为RNN开发定制的分析器和测试工具。
三个组件,图中深黄色部分
论文中有用的就是这张图了
抽象模型构建
对于RNN,DeepStella通过三个步骤来生成抽象模型(即DTMC模型):1)状态和跃迁剖析,2)状态抽象,3)跃迁抽象。
步骤1:分析。DeepStella使用来自训练数据的输入来执行分析,因为它们可以显示训练好的RNN模型的特征。通过在输入上执行RNN,生成由状态向量组成的轨迹。这样,从训练数据中,我们获得了一组轨迹,记录了在训练阶段访问的具体状态和进行的具体转换。基于具体的状态和转换,我们进行状态和转换的抽象。
步骤2:状态抽象。我们首先对所有的具体状态向量进行分组,并应用主成分分析(PCA)来识别最大限度地区分向量的前k个主成分。然后,我们将具体的状态向量投影到k维分量基上。这是为了降低状态空间的维数并提高计算效率,因为具体的状态向量可能具有非常高的维数。接下来,我们通过将每个轴划分为m个等长的间隔来执行间隔抽象,并且k维空间被分割成mk个规则网格[11]。最后,我们将落入同一网格的具体状态映射到相同的抽象状态。注意,状态抽象的精度可由参数(k,m)配置。
步骤3:转换抽象。我们在状态抽象的基础上对具体的转换进行了抽象。抽象转换表示共享相同源和目标抽象状态的一组具体转换。对于每个抽象转移t,我们通过在与t共享相同源抽象状态的所有传出具体转移的数目上取映射到t的具体转移的数量来计算其转移概率。
应用
在抽象模型的基础上,我们开发了两个应用:1)敌意样本检测(DeepStella-ASD);2)覆盖引导RNN测试(DeepStella-CGT)。在这里,我们对它们的设计和使用做一个简单的描述。
1)对抗性样本检测:对抗性样本能够用人类无法察觉的扰动来欺骗RNN。我们推测,与良性样本相比,对抗性样本在预测过程中存在一些异常行为。例如,当一张受干扰的熊猫图片被识别为大猩猩时,RNN的行为轨迹应该与真正的大猩猩不同,因为这两张图片之间存在明显的差异。使用DeepStella,我们可以捕获RNN的更细粒度的行为,甚至可以测量样本之间的差异,只需稍加扰动。具体地说,我们设计了两个踪迹相似度度量,并在此基础上提出了一种检测敌意样本的算法。
**跟踪相似性度量。**这两个相似性度量(详见[12])分别来自状态和转换两个层次,即基于状态的轨迹相似度(SBTSIM)和基于转换的轨迹相似度(TBTSIM)。它们的导出是为了比较样本之间的踪迹相似性,这些痕迹相似性来自其所覆盖的抽象状态或转变的Jaccard指数。给定两个样例,我们可以利用DeepStella来获取每个样例所覆盖的状态或转换的集合,并计算这两个集合之间的Jaccard指数。
用法。DeepStella-ASD将一组对抗性样本和一组(部分)测试数据(图1B中的步骤2突出显示)作为输入,并输出检查给定样本(步骤3)是否为对抗性的检测器。
为了检查给定样本(步骤3)是否具有对抗性,DeepStella-ASD首先生成具有与目标相同的预测输出的参考样本。原始样本和参考样本之间的踪迹相似度被用作区分良性样本和敌意样本的指标。基本上,良性样本与其参考样本之间的相似性大于对抗性样本。以大熊猫为例,它的参考样本都是大猩猩,因此相似度会比大猩猩图片之间的相似度大得多。对于图像分类任务,我们根据原始样本的标签,从训练数据中提取50个参考样本。对于ASR模型,我们使用现成的文本到语音转换引擎,从原始样本的抄本生成标准音频。
2)覆盖率制导测试:通过对训练数据中的样本进行剖析,DeepStella能够捕获正常情况下的主要行为空间和转换。测试的目标是系统地生成测试用例,测试用例还可以探索主要行为空间之外的区域。我们推导了一套覆盖标准,以便于指导测试RNN,目的是提高测试数据集的充分性,发现更多的缺陷。
覆盖标准。对于覆盖标准,设计了基本状态覆盖(BSCOV)、加权状态覆盖(WSCOV)、基本转移覆盖(BTCOV)和加权转移覆盖(WTCOV)来量化任何测试数据集所访问的抽象状态/转移的部分(或考虑访问概率的加权部分)。它们指示内部状态/转换的行使程度。
用法。DeepStella-CGT从一组初始种子开始(图1B中的步骤4),并返回一组扩充的测试数据和一组发现的对抗性样本。首先将初始种子数据放入种子队列,然后DeepStellarCGT迭代,通过样本变异和选择来增加种子队列的选择覆盖准则。在每次迭代中,我们从队列中选择一个种子并生成一系列突变体。分别针对图像、自然语言和音频设计了扩充测试数据的变异策略。突变遵循变质关系,因此应用的扰动很小,并且不会改变真理标签。对于新生成的样本,如果它们是对抗性的,我们将它们保留在对抗性样本组中。否则,我们检查它们对特定覆盖标准的贡献,并保留覆盖新状态或转换的测试用例。DeepStella-CGT迭代地继续上述步骤,直到给定的时间预算耗尽。
实施和功能
我们已经在基于Keras2.2.4和TensorFlow-1.11的Python中实现了DeepStella。它的命令行界面提供了三个关键功能:(1)RNN抽象模型构建;(2)RNN恶意实例检测;(3)RNN覆盖引导测试。这些功能可以帮助终端用户直接进行RNN的质量和安全分析。此外,DeepStella提供了一套全面的API来帮助RNN分析的进一步应用程序开发:(1)用于检索抽象模型的详细信息的API,以及(2)用于可视化RNN预测的运行时轨迹的API。
为了验证DeepStella的实用价值,我们将DeepStella-ASD应用于检测由最先进的攻击技术生成的敌意样本。我们进一步将DeepStella-CGT应用于利用MNIST数据集训练的图像分类RNN模型,并有效地生成了大量的对抗性样本。结果表明,DeepStella对于揭示和评估基于RNN的DL系统的缺陷是有用的。通过这些工程努力和实验结果,我们相信DeepStella在攻击和防御真实世界的RNNs方面是可扩展的和有效的。
评估
我们在语音识别和图像分类领域的三个RNN上展示了DeepStella应用程序的有效性。主题模型的详细信息可以在表I中找到。使用的ASR模型是Mozilla的DeepSpeech 0.1.1实现,具有工业级的性能。对于图像分类,我们在MNIST数据集上分别使用LSTM和GRU体系结构训练了两个RNN。两种模型都达到了98%以上的测试准确率。它们涵盖了不同的RNN体系结构,包括LSTM、双向LSTM和GRU。最大的模型DeepSpeech 0.1.1包含超过1亿个可训练参数,状态向量为4096维。此外,我们在两个应用任务上评估了所提出的量化措施的有用性,即检测敌意示例和覆盖引导的RNN测试。有关实验设置和结果的更多详细信息,请参阅[12]。
(1)对抗性样本检测。每个模型的对抗性样本都是用最先进的攻击方法生成的。我们使用C&W音频攻击[13]为DeepSpeech 0.1.1生成对抗性音频,并使用FGSM、BIM和DeepFool为图像分类模型生成对抗性样本。对于每个RNN,我们在多粒度(k,m)抽象配置下生成13个抽象模型。最后,对于每种攻击方法,我们生成了5000个对抗性样本,并随机选择了相同数量的良性样本。利用这些样本,我们分别对SBTSIM和TBTSIM度量进行采样,并训练线性回归分类器来检测敌意示例。我们在表II中给出了两个RNN-DeepSpeech 0.1.1和MNIST-LSTM的AUROC结果,最好的检测准确率分别达到了89%和97%。结果表明,不同抽象程度的模型可以达到不同的检测精度。DeepStella通过选择合适的抽象模型来检测敌意示例。
(2)覆盖率导向测试。我们用BSCov制导和BTCov制导评估了DeepStella-CGT在增加复盖率和对抗例数方面的有用性。我们选择了配置为(k=3,m=10)的抽象模型。MNIST模型的结果显示在表III中。对于每个覆盖指南,我们分析了所有测试标准(ı.E.,第一列)的覆盖增加。列“SEED”显示了初始种子的初始覆盖范围。覆盖范围来自州覆盖和过渡覆盖指导显示在“S-Guid”列下。和“T-Guid”。为了进行比较,我们在没有覆盖率指导的情况下进行了随机测试(列“RAN”)。和现有的基于展开的RNN的神经元覆盖引导测试工具3。我们可以看到,DeepStella-CGT在复盖标准增加和生成对抗性样本方面都优于所有的基线方法。具体地说,DeepStellarCGT发现的敌意样本比随机测试多3到40倍,比DeepTest多300倍左右。
相关工作
RNN的抽象。关于RNNs的抽象技术已经有了一些开创性的研究,但大多使用有限状态自动机(FSA)来捕捉RNNs的内部动态,缺乏DTMC中的转移概率分布。在现有文献中,已有的研究大多关注内部状态空间划分策略,而内部状态空间划分是抽象中最重要的技术之一。所提出的划分策略包括规则网格的每个维度的均匀划分[11]、非监督分类算法,如k-均值及其变体[14]、[15]和带有核算法的动态划分方案[7]。然而,当它们应用于现实世界的RNN时,它们都受到可扩展性问题的困扰,在现实世界中,RNN的内部状态空间可能非常大,而且是高维的。取而代之的是,DeepStella使用PCA进行更便宜的抽象。
RNN敌意实例检测。RNNs的敌意实例检测仍处于早期阶段。专门为前馈神经网络设计的技术[8]、[16]、[17]不能应用于RNN。基于SoftMax概率的方法[16]可能仅用于检测分类问题的RNN对抗性示例。据我们所知,DeepStella-ASD是第一个专门为顺序输出的RNN检测敌意样本的工具。
深度学习测试。近年来,DNN测试得到了广泛的研究,包括对测试标准[2]、[4]和测试工具[2]、[3]、[5]、[6]、[18]的研究。然而,目前的研究主要集中在前馈神经网络方面。通过展开,可以在RNN上使用DeepTest[3]。但是,它以固定迭代展开RNN,并且不可伸缩。TensorFuzz[18]可以用于RNN,因为它只考虑logits层的输出。然而,它缺乏对RNN的内部分析。
总结与下一步工作
DeepStella提供了一个基本的基础设施,支持对RNN的多种分析。我们使用测试生成工具和敌意样本检测器演示了DeepStella的两个典型应用。在未来的工作中,我们打算用转换标签来增强抽象,即触发转换的输入,并且抽象技术可以处理来自连续空间的输入。我们还有兴趣研究在抽象模型上可以验证什么以及如何验证关键属性,以揭示RNNs中深埋的缺陷。