【论文转述】DeepGini: Prioritizing Massive Tests to Enhance the Robustness of Deep Neural Networks

DeepGini: Prioritizing Massive Tests to Enhance the Robustness of Deep Neural Networks

image-20200928211534475

论文:https://arxiv.org/abs/1903.00661

细节: https://github.com/deepgini/deepgini.

摘要

给定输入定义正确输出的测试oracle在自动化测试中通常是不可用的。为了获得oracle信息,基于DNN的系统的测试任务通常需要花费大量的人力来标记测试数据,这大大降低了质量保证的过程。

为了缓解这个问题,作者提出了DeepGini,一种基于DNN统计观点设计的测试优先化技术。这样的统计视角允许我们将测量误分类概率的问题简化为测量集合杂质的问题,这允许我们快速识别可能误分类的测试。

介绍

深度学习的能力尽管很高,但可靠和质量方面仍存在重大问题。DNN软件测试与传统软件测试完全不同,因为DNN是基于数据驱动所构建的,因此,有效的测试数据+oracle信息,对于发掘DNN软件的不当表现至关重要。不幸的是,类似于传统软件的测试技术,DNN测试也面临着自动化测试技术oracle通常不可用的问题。

特别的,在测试基于DNN的系统中,测试者通常关注于造成系统表现错误的测试,因为这些错误可以带来对于程序不同问题的洞察。这一事实很自然的促使我们去提出一种技术,来帮助区分测试的优先级,从而可以在测试之前标记和分析导致错误的测试。从而,我们可以从人工的努力中获得最大的效益。

以往的两类覆盖技术:1. 总覆盖率:倾向于喜欢覆盖了更多程序元素的用例 2. 覆盖附加:倾向于喜欢能覆盖更多以前没有的元素的用例

但是这类基于覆盖的技术并没有那么有效:

  • 首先,这类标准是为了衡量测试充分性,但实际上,我们尚不清楚如何用它来提高DNN的质量。
  • 一些覆盖标准无法区分不同测试的故障检测能力。因而无法使用覆盖-总优先级方法,来为测试用例进行有效的优先级排序。
  • 第三,对于现有的大多数神经元覆盖准则,只有一个测试集中的几个测试能够达到该集合的做大覆盖率。例如,top-k神经元覆盖率,我们只需1%的测试就可以达到最大覆盖率。在这种情况下,我们对于测试进行的优先级排序,也只能进行1%就停止。
  • 通常覆盖-附加方法的时间复杂度过高O(mn^2),其中m是元素个数(神经元个数),n是测试用例数。这两个值通常都比较庞大,这也就导致了模型过于庞大。

为了克服以上问题,并有效的提高DNN的质量,本文种,我们提出了DeepGini方法,主要针对于图像分类类的DNN。DeepGini主要基于DNN的统计特性,而非卷积覆盖率。这种方法使得我们将误分类问题简化为一个衡量测试集合杂质的问题。

该测量基于的直觉是,如果一个DNN为每类输出相同的概率时,测试会很容易被DNN错误分类。因此,当DNN为每个类输出相同的概率时,该度量产生最大值。

<0.5,0.5>对应的度量值 大于 <0.9,0.1>对应的度量值

这一方法有如下好处:

  • 利用该方法进行度量比基于神经元覆盖率的度量要更有区分度,因为测试用例通常都有着不同的输出向量,但却很可能拥有相同的覆盖率
  • 该度量不用记录中间信息来计算覆盖率。而只需要对测试进行优先排序,所以更为安全,易用。
  • DeepGini的时间复杂度于总覆盖率类似,但远低于覆盖附加方法。同时和总覆盖方法一样可扩展。
  • DeepGini在前的测试集,优于该度量在后的测试集,也优于使用覆盖范围度量在前的测试集。

该方法需要运行所有测试来获得输出。但实际上运行DNN的时间要远小于训练DNN。

作者从两个方面来论证的方法的有效性。

首先,计算了故障检测的平均百分比值(APFD),这是评估优先排序技术的标准方法。

其次,为了评估该技术能否有效提高DNN质量,将排序靠前的测试集重训练,并对比准确性。

贡献如下:

  • 提出了一种有效且高效的方法,以排序DNN测试集。
  • 证明该度量较大的测试集能更有效的提高DNN质量。
  • 证明了基于神经元覆盖率的方法,在测试优先级和DNN优化上的不足。

方法

分类纯度

image-20200929113101779

大致思想:右侧比左侧更容易被分类,左侧更容易被混淆。

计算方法\Sigma x_i^2 前者为0.25+0.25=0.5,后者为0.81+0.01=0.82

这种想法于基尼指数的含义十分接近。因此作者考虑引入基尼系数来进行度量。

DeepGini

定义:给定一个测试t和它在DNN下的输出<p_{t,1},p_{t,2},...,p_{t,N}>\Sigma^N_{i=1}p_{t,i}=1),定义\xi(t)来度量t可能被错误分类的概率。

\xi(t)=1-\Sigma^N_{i=1}p^2_{t,i}

之后作者证明了这一度量的极值也是最值,在各分类概率相等时取到

利用每个测试所对应的度量,我们可以直接用快排来给它进行排序,以较低的时间效率来完成。

同时由于度量计算只需要输出向量,因此该方法基本不会对原有的DNN进行干涉

利用DeepGini增强DNN

DeepGini 的有效性背后的原则实际上是遵循主动机器学习理论,该理论更喜欢决策边界附近的测试。

因此,作者认为DeepGini不仅提供了一种测试优先级的办法,同时还提供了一种在有限时间预算内增强DNN稳健性的技术。

实验设计

数据集和模型选择

数据集:MNIST,CIFAR-10,Fashion,SVHN

模型:不同神经元数量的模型,以展现对于不同层次模型的效果

image-20200929140938095

对抗测试生成

除了对于数据集中的原始数据进行优先排序,本文还对对抗性测试进行了一个优先级排序。分别选择了四种SOTA方法生成对抗测试数据,FGSM,BIM,JSMA,CW.

Q: 按照基尼系数的含义,良好分类的数据集,也能够得到很高的分数。如何分辨:全都分错,错的彻底;不太对也错的不彻底;全都分对,对的彻底。

基线方法

通过将本文的度量与基于覆盖的11种方法进行对比。

主要基于四种模式,两个方面来计算:

  1. 利用CTM或CAM来进行测试优先级排序
  2. 对原始数据集中的测试进行优先排序,或对原始+对抗测试数据集进行优先级排序

研究问题

RQ1 有效性

DeepGini能否找到比基于神经元覆盖的方法更好的测试排序么?

通过比较不同方法的APFD(平均错误发现率)来论证。

  • APFD值不够接近于1,并不意味着优先级排序不够有效。因为理论上,该值通常要比1小得多。

对于一系列测试n个,其中有k个会被误分类,设o_i表示第i个误分类测试的下标。APFD表示为:

APFD = 1 - \frac{\Sigma^k_{i=1}o_i}{kn}+\frac{1}{2n}

更准确的来说,假设APFD理论最大最小值为minmax,我们将APFD值归一化排序后,值越接近1,就说明排序方法越好。

RQ2 效率

DeepGini是否比基于神经元覆盖的方法更有效?

通过记录时间花销来回答这一问题。排序方法通常都更耗时,因为测试集数量通常很大。基于我们的分析,一些优化排序方法甚至要花费数个小时,这在工业中是难以接受的。

RQ3 指导性

DeepGini是否能够指导DNN的重训练以帮助提升其准确性?

一般的DNN网络通常准确性都足够强,因此本文是通过引入对抗测试来回答该问题。对每个模型,向测试集T中加入相同数量的对抗测试样本,并构造一个验证集V用于以下实验。

在对T进行优先级排序后,将前1%,2%,...,10%的测试数据代回训练集,并训练一个新的DNN。(不加入更多是因为,更多的测试数据,无法再带来模型明显的变化。)然后利用验证集V,度量新DNN的准确性。利用不同的度量,来判断重训练的DNN的准确率。基于实验结果,我们可以回答,DeepGini能够更有效的指导重训练。

结果分析

RQ1&RQ2 效率和有效性

与NAC,NBC,SNAC比较
image-20200929144050922

关于DeepGini的结论:速度快,且APFD得分高。

关于覆盖率的结论:0.5%的测试就足以达到这三类方法的覆盖率上限了。

image-20200929144523959

以随机分类为基线,有些覆盖方法的效果甚至会比随机还要差。而其中DeepGini能够最快的达到最高的错误检出率。

与TKNC,LSC,DSC,KMNC对比
  1. 难以良好进行排序:CTM无效,CAM很快达到最大后,也无效。
  2. 这几种方法的效率普遍比DeepGini要慢20倍以上,再工业中基本都属于无法接受的速度。

RQ3指导性

image-20200929145236351

其中KMNC的运算速度过慢无法完成实验。对比其他方法,可以发现DeepGini在生成优先级序列提高DNN准确性方面更为有效。

image-20200929145945051

表六:10%的优先数据代回。基线效果大致在0.83-0.85,DeepGini可以达到0.9以上。

讨论

image-20200929150534912

额外的提了安全性,和可扩展性。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353