[论文解读一]DeepGauge: Multi-Granularity Testing Criteria for Deep Learning Systems

1、论文介绍

论文下载:https://doi.org/10.1145/3238147.3238202
代码下载:未找到,如果大家找到可以分享给我

2、摘要

深度学习定义了一种新的数据驱动的编程范式。大量的研究结果表明,目前的DL系统都存在各种各样的漏洞。鉴于难以访问到高质量测试数据,目前使用的良好的测试数据精度性很难保证DL系统的测试充分性和通用性。与具有清晰可控的逻辑和功能的传统软件系统不同,DL系统中缺乏可解释性使得系统分析和缺陷检测变得困难。这篇文章提出了 DeepGauge 多粒度测试标准。

3、论文分析

目前研究主要追求DL系统的高精度作为测试标准。以下几点注意事项:

  1. 不对DL内部神经元活动和网络的了解,仅从DL输出结果来测试软件的质量是肤浅
  2. 仅基于DL输出的评价标准严重地依赖于测试数据的代表性,高精度不一定代表通用性好,反之亦然。
  3. 通过系统测试的DL系统应能在一定程度上抵御各种类型的对抗性攻击。

本文在各种粒度级别上监控和测量神经元行为,以及内部网络连接。

3.1 论文工作

不同于传统软件通过控制流来表达它的逻辑,DNN则是通过神经元的权重以及非线性的激活函数来表达。该文提出了一套基于多层次、多粒度覆盖的DNNs测试准则DeepGauge,并对其进行了测试。总结如下:

  1. 该标准有助于理解DNNS,从不同层次和角度评估测试测试数据的质量。文中发现潜在地分布在主要的函数区域以及边界区域的错误。给定一组输入,该标准可以测量输入数据在多大程度上涵盖主要功能和边界情况,在这些情况通常会有错误发生。评估结果发现,现有的测试数据通常更倾向于测试主要函数区,覆盖角落区域的情况相对较少
  2. 通过4种对抗性数据生成算法(快速梯度符号法(FGAM),BIM,JSMA,CW)生成对抗样本。对于原来的测试数据和对抗样本将覆盖标准作为指标来量化测试数据侦察错误的能力。结果表明,该标准可以有效地捕捉原始测试数据和对抗样本的差异,因此说明更高的覆盖率可能意味着更容易检测DNN缺陷。
  3. 目前已经提出的各种标准在DNNS网络复杂度和数据集上表现不同。这是最早提出DL系统多粒度测试标准的研究之一。

4、预备工作

4.1 传统软件测试的覆盖标准

将传统软件的逻辑执行类比于DNN的连接权重。
对于传统软件来说,测试覆盖率高,是软件质量的一个指标和可信度。
传统软件测试常用覆盖率标准:

  1. 语句覆盖,分支覆盖
  2. 数据流覆盖率
  3. 基于模型的覆盖标准

4.2 深层神经网络结构

本文中,将DL系统视为包含一个或多个DNN的软件系统。
DNN可以看作是一个将给定的输入转化为输出的函数,是由其计算单元(即神经元)的聚合效应决定的,每个神经元对整个计算过程都有贡献
如图a显示三层DNN。
DNN

5、DL系统的覆盖测试标准

传统软件测试已经有一套设计良好的覆盖标准(如语句覆盖,分支覆盖),并证明了使用价值,被软件行业广泛,以揭示不同层次的软件缺陷:

  1. 单元级别:函数小片段
  2. 集成级别:测试多个子模块或功能
  3. 系统级别:测试整个软件系统
    为了可以适用于工业级应用,希望测试标准应该是简单,可扩展,足够通用(可以应用于大部分的DNNS,不局限于特定的DNN结构或者激活函数)
    将DNNs行为可以分为两类:major function behaviors(主功能行为) and corner-case behaviors(角落行为)(自己翻译的,可能不准确)

符号表示

  1. 神经元 N = {n1,n2,…}
  2. 测试输入 T = {x1,x2,…}
  3. 在输入x∈T下,神经元n的输出 ϕ(x,n)
  4. DNN层数 l
  5. 第i层的神经元集合 Li

5.1 Neuron-Level Coverage Criteria(神经元级别的覆盖标准)

在神经元层面上,用神经元的输出值来表示行为。通过训练数据分析获得的一个神经元输出分布可大致描述major function区域,这些输出值经常是被与训练数据具有相似分布的输入数据触发。角落案例的输出值很少发生的。

对于实际的DNN,获得每个神经元的精确输出分布需要大量的计算。为了简单和可扩展,本文利用训练数据获得的神经元输出边界来逼近主函数区域和角落区域。

5.1.1 major function region

对于神经元n,highn 和lown 分别为神经元上下界的输出值,应该位于神经元激活函数的函数域范围之内,并且是由训练数据得到的。将[lown ,highn]作为神经元n的major function region。由此给出如下定义
在这里插入图片描述

k-multisection Neuron Coverage

该覆盖衡量给定的测试输入集覆盖[lown ,highn]的程度。
将[lown ,highn]分为k个相等的区间(k>0),Si n 表示在第i个区间的值集合(i∈[1,k])。若 ϕ(x,n)∈Si n ,表示第i区间被x覆盖。

  1. 神经元n的k-multisection Neuron Coverage
    被定义为T覆盖的区间数与区间总数(即k)的比。
    在这里插入图片描述
  2. DNN的k-multisection Neuron Coverage
    在这里插入图片描述

5.1.2 corner-case region

在这里插入图片描述
提出两种针对corner-case region的覆盖标准:neuron boundary coveragestrong neuron activation coverage
对于给定的测试输入x,若ϕ(x,n)∈(-∞,lown)∪(highn ,+∞),则对应的角落区域被覆盖。为了量化,则被覆盖的角落区域的数量定义如下:
在这里插入图片描述

5.1.2.1 Neuron Boundary Coverage

该覆盖衡量给定的输入测试集覆盖角落区域的程度。此时的角落区域包含上下界两个区域。
该覆盖被定义为覆盖角落案例数量比角落案例的数量(2*|N|):
在这里插入图片描述

5.1.2.2 Strong Neuron Activation Coverage

该覆盖测量给定的输入测试集覆盖上界角落区域的程度。
在这里插入图片描述

5.2 Layer-Level Coverage Criteria(层级别覆盖标准)

在层的级别上,本文用顶级活跃的神经元和他们的组合(或序列)来描述DNN的行为。
对于给定测试输入x,和在同一层的神经元n1 和n2 ,当满足如下条件时,称n1 比n2 更积极:ϕ(x,n1) >ϕ(x,n2)
topk(x,i):对于给定的输入x,在第i层输出前k大的k个神经元。

5.2.1 Top-k Neuron Coverage

该覆盖衡量每层多少神经元曾是最活跃的k个神经元。
该覆盖被定义为每层前k活跃神经元总数比在一个DNN的神经元的总数。
在这里插入图片描述

5.2.2 Top-k Neuron Patterns

对于给定的测试输入x,每层top-k神经元的序列可形成一种模式。
如下图,假定图(a)绿色神经元表示的是每层top-2神经元,模式为({n1,n3},{n5,n6},{n8,n9})。
在这里插入图片描述
对于给定测试输入集T,top-k神经模型的数目定义为如下:
在这里插入图片描述

6、实验

Keras 2.1.3
TensorFlow 1.5.0

6.1 评价对象

数据集和DNN模型:MNIST(LeNet-1, LeNet-4, and LeNet-5),ImageNet( VGG-19,ResNet-50)
对抗测试输入生成:FGSM[20]、BIM[31]、JSMA[37]和CW[8]
注:通过对抗技术针对不同DNN模型生成的对抗样本不同,对抗技术是基于模型的。

6.2 实验结果

6.2.1 实验分析

如下图在MNIST数据集实验结果,对于不同覆盖标准,对抗样本的覆盖要高于原始数据。
覆盖值的增加表明对抗样本探索了DNNs新的内部状态,在原来测试没有发现的。说明提高所提出标准的覆盖率而生成的测试可能会触发DNN的更多状态,导致有更高的缺陷测试机会。
在这里插入图片描述
在ImageNet(比MNIST数据更多)上,用VGG-19,ResNet-50对数据集进行训练,得到的覆盖比MNIST小,但是我们并不能得出结论:模型越复杂(由于神经元越多,层数越多),越难以覆盖。因为还存在这样一个事实,对于原始的测试,在ResNet-50可达到22.8%KMNC,但是在VGG-19可达到13.5%。但是ResNet-50有更多的神经元和层。

6.2.2 实验结论

  1. 一般来说,对于neuron boundary coverage 和strong neuron activation coverage,对于角落区域的上界越大(下界越小)所观察到的覆盖增量越小。;对于 top-k neuron coverage,k值越大,覆盖的增量越小;对于top-k neuron patterns,k值越大,在模式的增量越大。(这里应该指的是模式的规模。)
  2. CW所产生的对抗测试难以被测试标准所察觉。与CW的工作原理有关。
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值