Towards Improved Testing for Deep Learning [ICSE 2019]——阅读笔记

深度学习测试-DeepXplore 深度学习测试-DeepXplore背景介绍想法对抗生成当前存在的挑战论文整体思路神经元覆盖率(NC:Neuron coverage)联合优化问题特定的约束 背景介绍 Deep Learning system目前很火,已经应用于多个领域,包括图像识别、语音识别,同时自动驾驶及流氓软件的检测等问题上也已经开始使用。尤其是类似自动驾驶问题,对安全性要求极强,所以迫切需要对DL system有效的测试方法... 阅读详情

Towards Improved Testing for Deep Learning [ICSE 2019]–阅读笔记

经过一学期高可信软件技术的课程学习,我对软件测试和修复的相关理论知识和技术都有了基础性的了解。一直以为测试和修复只能应用于“传统”的代码,而在阅读这篇论文之后才认识到,如今热门的神经网络也可以进行测试。除了直观的、可以很容易理解的黑盒测试,前沿研究中还有基于逻辑覆盖等方法的白盒测试。这篇论文中提出的一个测试准则就是基于逻辑覆盖的原则。

接下来让我们带着几个问题出发,一起来了解这篇论文的主要内容。
论文链接:Towards Improved Testing for Deep Learning [ICSE 2019]

一、为什么需要对神经网络进行测试?

随着硬件设备的迅速发展和大数据的热门使用,深度神经网络(简称DNN)迅猛发展,越来越多的领域都注意到了其优越的性能并将其引进。例如自动驾驶、医疗诊断、安全等安全关键领域也与DNN的结合越来越紧密。但此类应用程序的安全性至关重要,因此在部署之前必须要充分衡量其安全性。需要从现有技术方面思考如何对这些DNN进行充分的测试。

二、目前的测试技术可以直接用于神经网络吗?为什么?

在传统软件程序中,程序逻辑必须由程序员手动描述。于此不同的是,DNN是通过对大型数据集的训练来学习决策策略。DNN是在输入层和输出层之间具有多个隐层的神经网络,它没有一个清晰的控制流结构,通常使用各种方法逐步调整参数,以达到预期的精度。

如下图所示,传统的软件测试方法无法直接应用于DNN领域,因为DNN的代码不包含其内部决策逻辑的信息。因此,传统的覆盖准则如代码覆盖、分支覆盖、功能覆盖等也不能应用于DNN。
在这里插入图片描述

三、相关的DNN测试方法和标准都有哪些?

1. 黑盒测试

之前的DNN测试方法通常采用黑盒测试方法,例如Nina Narodytska和Shiva Prasad Kasiviswanathan提出的规则是:在给定正确输入的附近寻找关键信息,具体而言就是随机搜索哪些修改会导致分类错误。然而,这些黑盒测试方法不仅缺乏覆盖标准,也忽略了DNN的内部逻辑。

2. 白盒测试

直到最近,有人提出了用于DNN的白盒测试方法。例如DeepXplore,DeepCover,DeepMutation和DeepCT等。现有测试方法的输出通常要么是对系统正确性的度量,要么是对比值的度量。例如在DeepXplore中,作者引入了神经元覆盖率的概念作为测试DNN的覆盖率指标。

下图显示了目前大多数现有的DNN白盒测试方法的高级表示。测试过程的输入是DNN、测试输入和覆盖率度量,主要用于确保程序逻辑的所有部分都经过了测试。而oracle(基本事实)决定DNN的行为对于测试的输入是否正确。除了这些以外,还可以使用指导测试输入生成方法来生成具有更大覆盖率的测试输入,同时可以发现更接近边角的实例。
在这里插入图片描述

四、目前的这些对DNN测试的方法或标准有什么局限性?有什么可以改进的地方?

作者从三个方面来阐述了目前DNN的测试标准还存在一些问题,并且根据这些问题提出一些可以改进的工作。

1. 覆盖标准方面

类似于传统软件程序的覆盖标准中的代码覆盖率和分支覆盖率,DNN的任何覆盖标准必须要能够保证完整性。也就是说,DNN的覆盖标准必须能够确保DNN的内部决策结构的所有部分已经由至少一个测试输入来执行。

  1. DeepXplore的局限性:
    典型的前馈深度神经网络包含多个非线性处理层,每个隐含层使用前一个隐含层的输出作为其输入。神经元的状态表示为激活或未激活。
    神经元覆盖根据输入激活的神经元数量衡量测试输入所使用的DNN逻辑部分。但是,它无法完全解释DNN可能出现的所有行为。 有实验能够证明神经元覆盖相当容易实现:25个随机测试输入能够实现接近100%的神经元覆盖。同时,作者在实验中还发现:在模型架构的某些情况下,可以通过两个测试输入获得100%的神经元覆盖。因为对于大多数测试输入,神经元总是处于激活状态。因此,神经元覆盖是相当粗糙和不充分的标准。

  2. DeepCover的局限性:
    DeepCover的覆盖标准考虑了DNN相邻层中的条件判定依赖性。该方法除了时在相对较小的网络上测试之外,它的前提条件还要求DNN是前馈全连接的神经网络。而且它不能推广到诸如RNN、LSTM、attention网络等的架构。DeepCover不考虑神经元在其所在层的环境,即同一层中神经元输出的组合。

  3. DeepCT的局限性:
    DeepCT的组合测试是启发于覆盖标准:根据每层激活的神经元比值描述测试输入所使用的逻辑比值。它没有考虑DNN中的层级之间的关系,并且也没有被证实可以扩展到具有不同类型层的、能用于真实世界的DNN。

2. 测试输入生成的方面

测试输入可以通过指导方式生成或选择得到,它通常有两个主要目标:最大化未覆盖故障的数量,并最大化覆盖范围。 目前测试输入生成方法存在一些主要缺点:

(1)修改现有测试输入直到找到满足标准的测试输入的迭代过程单次执行耗时长。

(2)与总的测试和生成的输入数量相比,那些能够导致覆盖范围和/或发现的角落案例增加的测试输入数量相当低。

3. Oracle选择的方面

测试DNN的正确性需要一些基本事实(oracle),我们可以理解为基线或者正确答案,主要是用于确定输入的行为是否正确。目前用于测试DNN的现有规则受到以下几个限制:

(1)数据驱动的方案中最直接的方法是收集尽可能多的实际数据并手动标记以检查其是否正确。但是,这样的过程需要大量的手动工作。

(2)在某些工作中,会使用同一任务的多个实现作为oracle,并将其中的的差异行为标记为角落案例行为。然而,我们观察到这种方法会错误地将某些角落情况分类为正确的行为,此外,此方法仅在具有多个高精度且相似的实现的应用程序中有效。

五、作者提出的新的方法或者准则是什么?与传统测试技术相比有什么优势?

在本文中,作者基于对内部决策逻辑的覆盖提出了一个包含两个因子的覆盖标准——每个神经元单独对下一层神经元值的条件影响以及上一层中神经元值的组合对下一层神经元值的影响。

基于这些定义,我们的覆盖标准被定义为DNN中由第k-1层的第i、j个神经元n_(i,k-1)、n_(j,k-1)和第k层第q个神经元n_(q,k)三元组的2-路覆盖:(n_(i,k-1),n_(j,k-1),n_(q,k))。

第一个覆盖更多地受到MC/DC和其他传统软件覆盖标准的启发,但第二个覆盖的灵感来自组合测试。这种测试基于以下事实:并非每个参数都会导致每次失败,而经验数据表明几乎所有失败都是由相对较少的参数之间的相互作用引起的。

PS:MC/DC MC/DC(修订的条件/判定覆盖)(Modified Condition/Decision
Coverage)准则是一种实用的软件结构覆盖率测试准则,
在每个判定中的每个条件都曾独立的影响判定的结果至少一次。独立影响意思是在其他的条件不变的情况下,改变一个条件,而这个改变会导致最终的结果也改变。总结起来就是在所有的测试用例中,要保证每个条件都能对结果都独立起到作用。

除了提出的这个标准以外,作者还介绍通过实现这个标准,可以不断迭代实现100%覆盖DNN的内部逻辑。下面,举个例子给大家解释一下:

(1)对于一个初始测试输入的结果,我们通过组合优化来实现指导测试输入的生成。任何没有达到100%覆盖率的三元组被随机选择,以确定哪些激活值的组合没有被覆盖。例如考虑DNN某个状态实例未被100%覆盖,这种状态下三元组中n_(i,k-1)被触发(其激活函数值大于假设阈值0)、n_(j,k-1)没有被激活(其激活函数值小于等于0)、决策神经元n_(q,k)被激活。目标变成了:
在这里插入图片描述
其中f是对应神经元的激活函数,为了产生当前状态,激活n_(i,k-1)和n_(q,k)而不激活n_(j,k-1),可以通过最大化n_(i,k-1)和n_(q,k)的激活函数、最小化n_(j,k-1)的激活函数,以使它们分别大于或小于一定阈值从而变为激活或未激活状态。

(2)因为F_(n,t)(见下式)中的个体项是某些层中某些神经元的激活值,而任何n的∅(t,n)(表示对于输入为t时神经元n的激活状态)是复合函数,所以可以使用链式法则逐层计算偏导数直到到达输入t的输入层,从而逐步修改t以生成测试输入。
在这里插入图片描述
(3)通过这种迭代修改输入的方式最大化目标函数,以达到期望的三元组某种激活状态,从而覆盖三元组不同的激活状态。

作者接下来在评估中体现了他们提出的标准相对于前面的工作更细粒度。

作者评估了三个DNN——LeNet-1,LeNet-4和LeNet-5——的覆盖度量,这三个DNN对手写数字的MNIST数据集进行了分类。并确定覆盖标准有效性的指标是:

(1)10个随机测试输入获得的覆盖率
(2)边角案例数与总测试输入数的比率

结果显示,前面工作在相同的指标下获得了更高的覆盖率和对比值,而使用作者提出的标准时覆盖率直线下降,体现出作者提出的标准较于先前工作粒度更细。

六、总结

深度神经网络在安全关键应用领域的应用越来越多,从各方面考虑都必要进行充分的测试,以检测和修正其错误行为。但是由于深度神经网络缺乏明确的控制流结构,使得传统的软件测试标准如代码覆盖率等无法应用于深度神经网络。

在这篇论文中,作者研究了目前现有的深度神经网络测试方法、存在的局限和改进的机会,以及对快速、可扩展的端到端测试方法的需求。最后,作者还提出了一个深度神经网络的覆盖准则,该准则试图覆盖深度神经网络内部逻辑。但是覆盖方法对更大尺寸的真实DNN的可扩展性及其对不同网络架构的适应性尚待测试。

此笔记为小组作业,由本人撰写,特别感谢周悦同学的意见和提供的部分内容修改。公式没有调整格式,之后有空再改。

CNN神经元覆盖率使用记录 关于神经元覆盖率的概念和使用方式,详情见https://www.52cs.com/archives/2809,当然本文的实验方式有缺陷,不能很好的得到结论,因为每次加50样本,随着样本数量增多即新增样本的影响准确率会自然稀释,但是也一定的说明问题,先行记录,等有空闲再完善 计算步骤 关于CNN的神经元覆盖率,分两部分计算: convolution部分: 卷积部分,在卷积核计算卷积之后,一般会... 阅读详情

相关推荐

Towards Service Robots for Everyday Environments

Springer Tracts in Advanced Robotics Volume 76 - Towards Service Robots for Everyday Environments Recent Advances in Designing Service Robots for Complex Tasks in Everyday Environments

[论文解读]Towards Improved Testing For Deep Learning

Towards Improved Testing For Deep Learning 文章目录Towards Improved Testing For Deep Learning简介摘要初步背景先验文学改善的机会为什么我们需要更好的覆盖标准?为什么我们需要更好的测试输入生成?为什么我们需要一个更好的oracle呢?初步探讨和结果结论 简介 论文标题 Towards Improved Testing For Deep Learning 走向深度学习的改进测试 2019 提出了一种组合测试的覆盖方法,以三元

年糕的博客 1150

SAP FB03凭证修改实战:巧用BAPI FI_DOCUMENT_CHANGE更新抬头与行项目

本文详细介绍了SAP FB03凭证修改的实战技巧,重点解析了BAPI FI_DOCUMENT_CHANGE的使用方法。通过该接口,用户可以在不冲销原凭证的情况下直接更新抬头文本(BKTXT)和行项目文本(SGTXT),确保凭证编号连续且符合审计要求。文章包含核心机制解析、完整实现步骤、错误处理方案以及高级应用场景,帮助开发者高效完成SAP财务凭证修改。

weixin_29251567的博客 426

神经元覆盖率(NC)对于测试深度神经网络有意义吗?

阅读论文《Is Neuron Coverage a Meaningful Measure for Testing Deep Neural Networks?》。记录阅读笔记。 全文内容总结: 在以往研究中,基于增加NC可以提高测试集质量的隐含假设,NC被用于指导测试生成。 本文设计了一种新的促进多样性的正则化算法,该算法可以嵌入现有的对抗性攻击算法(CW、PGD)中。并评估增加NC是否能生成测试套件满足: 能检测对抗性攻击 产生自然输入 对特定类别预测没有偏见 结果却发现:增加NC会使生成有

qq_40479372的博客 2622

STM32 BootLoader 入门教程:从原理到 APP 跳转实现

在 STM32 项目开发中,BootLoader 通常用于实现固件升级、程序引导和应用程序校验。本文从最基础的 BootLoader 原理开始,讲解 STM32 内部 Flash 分区设计、APP 地址偏移、向量表重定位、BootLoader 跳转 APP 的核心代码,以及实际开发中常见的问题。本文适合刚开始接触 STM32 BootLoader、IAP 在线升级、串口升级、OTA 升级的开发者阅读。

lidecong133的博客 1675

Open5GS实战:从零搭建树莓派5G核心网并与商用终端联调

本文详细介绍了如何在树莓派5上从零开始搭建基于Open5GS的5G核心网,涵盖系统准备、依赖安装、源码编译、关键配置修改及服务启动全流程。通过整合SDR基站与商用终端进行端到端联调,为开发者和研究者提供了一个低成本、可实践的5G网络实验平台,助力物联网与边缘计算应用的本地化测试与验证。

weixin_29194255的博客 161

软件测试与质量学习笔记——白盒测试2

最近学习了mooc上的课程:软件测试与质量,看完这门课之后感觉自己对软件测试系统的了解加深了一个层次,下面我给大家分享一下我学习课程时记录的笔记。 白盒测试技术2 判定节点 对于路径的测试 基于等价路...

卑微小厉的博客 311

懒人精灵手游内存技术分析

教学声明:全套教程教学用到的游戏采用手游私服网游进行测试,不针对任何游戏。教学只做计算机技术研究,不做其他用途。

yizhihaoren123的博客 1657

人车密度估计--Towards perspective-free object counting with deep learning

Towards perspective-free object counting with deep learning ECCV2016 https://github.com/gramuah/ccnn本文针对人车密度估计问题,主要做了两个工作:1)提出了一个 novel convolutional neural network:Counting CNN (CCNN),将图像块回归到密度图,2)

AI小作坊 的博客 3302

手把手教你学simulink(26.8)--控制算法场景示例:基于强化学习的无人机姿态稳定控制系统

首先,我们需要定义无人机的姿态稳定控制环境。环境包括无人机的状态(姿态角、角速度等)和动作(电机转速)。我们还需要定义奖励函数,用于评估控制器的表现。matlab深色版本% 定义环境% 定义状态空间% 12个状态变量% 定义动作空间% 电机转速范围奖励函数用于评估控制器的表现。我们可以根据无人机的姿态误差、角速度误差以及控制输入的变化率来设计奖励函数。具体来说,当无人机的姿态接近设定值时,给予正奖励;当姿态误差较大或控制输入变化剧烈时,给予负奖励。matlab深色版本。

MHD0815的博客 496

芯片标称具备8kVESD能力却在8kV测试中失效?

芯片级ESD(HBM模型)与系统级ESD(IEC 61000-4-2)存在本质差异:

硬核科技 647

[阅读笔记]Programming Models for Deep Learning

原文:Programming Models for Deep Learning 这篇文章的主题是深度学习的编程模型. 现在有很多深度学习库.这篇文章编程模型来分析的优缺点.符号式 vs 命令式 编程不同点在于符号式编程,C=B∗AC = B * A执行的时候,并没有真正计算,而是生成一个计算图命令式编程更加灵活本事原因在于,命令式编程更加native符号式编程效率更高效率包括内存和运行效率 命

casmaster的专栏 329

【ComfyUI】Animate 保留原视频背景角色替换视频生成

本文介绍了智能创作与视频生成的工作流设计,强调其作为围绕业务目标、数据流转和模型能力的有机整体。工作流由数据输入、模型处理、结果合成和输出展示构成,通过节点化连接实现高效复用与扩展。文章重点解析了核心模型(如CLIP Vision、WanVideo等)的功能和协作方式,以及各类节点(输入、处理、控制、输出)的作用。最后展示了工作流在视频角色替换、虚拟试衣等场景的应用价值,并提供了相关开发资源链接。该设计通过模块化实现了灵活适配不同业务需求的能力。

Mr数据杨 1869

[论文阅读笔记]Towards Deep Learning Models Resistant to Adversarial Attacks

Towards Deep Learning Models Resistant to Adversarial Attacks(CVPR 2017) 文章简述: 本文主要是在研究防御的问题,并提出了PGD这种first-order攻击方法,其中增强模型robust的方法有以下两种: 增大网络容量 使用PGD方法进行对抗训练 如何训练更加robust的模型? 下面这个公式可以看成一个鞍点的问题,即i...

Invokar的博客 1万+

【ComfyUI】Wan2.2 Animate 动作迁移重绘视频生成

本文介绍了一个基于ComfyUI的Wan2.2 Animate视频生成工作流,通过动作迁移和视频重绘技术实现高质量视频创作。该系统融合视频帧重建、动作迁移、图像重绘和音频合成等多种AI技术,核心采用Wan2.2 Animate 14B_fp8模型配合专属VAE解码器和LoRA微调模块。工作流程包含输入预处理、模型加载、特征提取、动作采样生成、解码输出和资源清理六个阶段,通过WanVideo系列节点实现从图像/视频输入到最终视频输出的完整处理。系统支持对参考图像进行视觉特征提取和嵌入生成,结合文本/动作嵌入进

Mr数据杨 2451

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SE4AI测试 备受争议的覆盖率法

SE4AI测试 备受争议的覆盖率法

EnsDoflamingo的博客 1334

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

《Guiding Deep Learning System Testing using Surprise Adequacy》论文笔记

Surprise Adequacy(SA) 本文提出了SADL,这是一个用于DL系统的惊喜充分性框架,它可以定量地度量每个输入相对于训练数据的相对惊喜,我们称之为惊喜充分性(SA)。使用SA,我们还开发了惊喜覆盖(SC),它衡量离散输入惊喜范围的覆盖,而不是具有特定激活特征的神经元的计数。我们的实证评估表明,SA和SC能够准确地捕捉到输入的惊喜,是DL系统对未知输入做出反应的良好指标。SA与DL系统找到输入的难度相关,可以用来准确地对对抗性例子进行分类。

yh991314的博客 5141

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ICSE (2022). Nessie的阅读记录

题目: Nessie: Automatically Testing JavaScript APIs with Asynchronous Callbacks 问题 :几个不理解的名词 1:什么是JavaScript APIs? 2:什么是Asynchronous ?与synchronous的区别? 3:什么是 Callbacks ? Asynchronous Callbacks ? 一、ABSTRACT 第1句 原文: Previous algorithms for feedback-direc

bing_Max的博客 4676

【论文阅读】ICSE-Workshop 2020 神经元覆盖率对深度强化学习有影响吗?一项初步研究

深度学习算法是一个强大的算法家族(powerful family of algorithms),用于各种各样的问题和系统,包括安全关键系统(safety critical systems)。因此,分析、理解和测试DL模型吸引了更多的从业者(practitioners)和研究人员(researchers),他们的目的是实现健壮(robust)、可靠(reliable)、高效(efficient)和准确(accurate)的DL系统。

计算机科研杂货铺 1113

【ICSE 2021】ATVHUNTER: Reliable Version Detection of Third-Party Libraries for Vulnerability 论文笔记

【ICSE 2021】ATVHUNTER: Reliable Version Detection of Third-Party Libraries for Vulnerability Identification in Android Applications 阅读笔记

Juruo@Security 1209

基准缺陷程序集论文阅读:[ICSE 2019 Demo] Defexts: A Curated Dataset of Reproducible Real-World Bugs for Modern..

在此阅读[ICSE 2019 Demo] Defexts: A Curated Dataset of Reproducible Real-World Bugs for Modern JVM Languages。 在下载这篇文章的时候,上面标注的是ICSE 2019 Demo,想必不会错,且出自软件测试领域大牛之手,值得一读。

the Blog of 等不到天亮丶等时光 1342

模糊神经网络_DeepHunter:深度神经网络覆盖导向的模糊测试框架

1、引用Xiaofei Xie, Lei Ma, Felix Juefei-Xu, Minhui Xue, Hongxu Chen, Yang Liu, Jianjun Zhao, Bo Li, Jianxiong Yin, and Simon See. 2019. DeepHunter:a coverage-guided fuzz testing framework for deep ...

weixin_39984201的博客 2037

[论文解读]Structural Coverage Criteria for Neural Networks Could Be Misleading

Structural Coverage Criteria for Neural Networks Could Be Misleading 简介 论文标题 Structural Coverage Criteria for Neural Networks Could Be Misleading 神经网络的结构覆盖标准可能具有误导性 2019 核心 adversary-oriented searc...

年糕的博客 800

[论文笔记] SIGCOMM 2019 Neural Packet Classification

首先来看看RL 深度强化学习—— 译 Deep Reinforcement Learning 任何可以被视为或转变为顺序决策问题的问题,RL都可能会有所帮助。

iroy33的博客 1669

软件工程学习笔记——第一章 概述

前言    本笔记基于东北大学计算机专业软件工程课程。于本人学习和复习软件工程课程期间所记录。禁止转载(尤其禁止转载于百度)        笔记涵盖绝大多数内容。个人能力有限,如有错误多多包涵!        希望对学弟学妹们学习复习或者对软件工程学习有兴趣的朋友有所帮助!第一章 概述部分软件工程:是以质量为核心,以满足客户需求为基础,以提高生产率和降低开发成本为目的,研究、建立和应用的贯穿整个软...

ArrowQin的博客 1446
上一篇: ASTParser中binding没有成功绑定,导致resolveTypeBinding()返回null
下一篇: TexStudio中文字体编译
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值