AI软件测试|人工智能测试中对抗样本生成攻略

从医疗诊断、自动驾驶到智能家居,人工智能技术为各个行业领域带来无限可能的同时,挑战也日益显现。特别是在人工智能安全领域,随着恶意攻击和数据欺骗的不断演变,确保AI系统的安全性和可靠性成为亟需解决的重要问题,对抗防御等应对技术相继被提出。在 AI软件测评过程中,对抗样本攻击和防御技术作为保障 AI系统可靠性和安全性的重要利器,近年来备受瞩目。下面,我们一起从基本概念、原理和应用价值、对抗流程三个方面,了解一下 AI系统测试中对抗样本攻击和防御技术的相关内容。

一、AI测试对抗样本的基本概念

对抗样本(adversarial examples)是通过在原始输入数据中添加微小的、往往难以察觉的扰动,创建出来的样本。 这类样本旨在通过精心设计的输入,欺骗AI系统以高置信度给出与原样本不同的分类输出,产生错误的输出结果。例如,在图像识别任务中,仅仅只修改图片中的一个像素,这种微小的扰动对人类是不可见,但可能导致神经网络将修改后的图像错误地分类为完全不同的类别。而构造和使用对抗样本的过程被称为对抗攻击。

对抗样本的数学语言可以描述为:设x是原始输入(例如图像的像素值),yx 的真实标签,J(x,y) 是模型对于输入 x和标签 y计算的损失函数。对于一个给定的模型,生成对抗样本的目标是寻找一个微小的扰动 δ,使得x+δ 能够导致模型输出错误的预测。这个过程可以通过求解以下优化问题来实现:

maximize J(x+δ,y)

同时需要对扰动δ的大小进行约束,以保证其对人类不可察觉。这通常通过限制δLp​范数来实现,即:

||δ|| p ​≤ ϵ

其中,ϵ是一个小常数,p通常取无穷大(表示无穷范数,即扰动的最大值),也可以取其他值如 22 或 11,分别对应L2​范数和L1​范数。

二、AI测试对抗样本的原理和应用价值

那么,为什么要使用对抗样本?对抗样本在智能系统测试中作用是什么呢?

我们知道,深度神经网络是深度学习中最常用的模型之一,在自然语言处理、语音识别、图像识别等领域扮演着至关重要的角色。相较于传统的机器学习模型,深度神经网络虽然在特征提取和建模方面具有显著优势,但其直接对输入和输出建模,学到的特征往往不具有可解释性,并且在处理高维度数据时具有保持线性关系的能力。这种黑盒性特别是高维度线性使得深度神经网络的学习效果高度依赖于数据集的质量和模型的特性,对输入数据较为敏感,即使是轻微的输入扰动也可能导致特征的变化,进而影响模型的预测结果。

也就是说,深度学习模型在理论上存在被垃圾样本误导的风险,导致网络分类器出现较高的误分类率。对于涉及生命安全的智能系统,如自动驾驶和医疗辅助诊断,任何微小的失误都可能带来无法挽回的严重后果。因此,我们需要在测试阶段检测出这些人工智能模型可能存在的偏差。

而对抗样本生成技术的出现,将深度学习模型的这种局限性和潜在风险展现在我们面前,也为AI系统的可靠性测试提供了新的途径。利用对抗样本生成技术,我们可以在测试阶段,故意构造一些异常数据来测试AI系统的性能,揭示人工智能模型的漏洞和弱点,并利用对抗训练等防御方法,通过不断暴露模型于对抗样本的攻击,让模型学会识别并抵御这些攻击,以便在实际业务场景中更好地应对各种复杂和异常的数据输入,保证AI系统的鲁棒性和安全性。

三、AI测试对抗样本的对抗流程

在明确了对抗样本的概念、原理和应用价值后,我们一起来看一下,在AI系统测试过程中,对抗样本应用的大致流程是什么?

1.确定攻击目标

这一阶段与传统软件测试中的需求分析和测试计划环节有相似之处。我们要分析客户需求和系统需求,了解AI模型和AI系统的功能和性能,明确制定攻击计划、攻击频率(单次攻击/迭代攻击)、攻击范围,考虑攻击环境等要求。

在确定攻击目标阶段,我们借鉴了传统软件测试中的需求分析和测试计划环节。通过深入分析客户需求和系统需求,我们深入了解了AI模型和AI系统的功能与性能特性。在此基础上,我们制定了详尽的攻击计划,明确了攻击的频率(单次或迭代)、范围以及攻击环境等关键要素。

特别是,我们需要根据需求,明确攻击的目标是通过添加微小扰动实现模型的错误分类。根据不同的攻击目的,可以将对抗攻击分为定向攻击和非定向攻击两类:定向攻击是指针对目标对象进行指定标签的攻击,限定了将模型中某类标签错分;非定向攻击是指诱导模型分类错误,但不指定错分为哪一种类别。

2.收集训练数据

训练和检测目标模型中重要问题是要形成自己的数据库。通常会考虑不同的业务场景,借助检测客户提供、互联网公开数据集形成数据库,比较常用的数据集包括MNIST数据集、CIFAR-10、ImageNet dataset、IMDB,也可以利用人工智能生成测试数据,但数据要满足一定的行业标准。关于人工智能测试的数据集和开源框架,我们将在后续文章进行详细介绍,欢迎大家继续关注。

3.生成对抗样本

对抗扰动与原始图像共同构成了对抗样本。这一阶段需要攻击者使用训练数据和对抗样本生成技术生成干扰样本。随着生成对抗样本的迭代算法涌现,对抗样本的生成方法日益丰富,大致包含基于梯度的生成方式如 FGSM、基于优化的生成方式如JSMA、基于GAN的生成方式三类。总体来说,对抗样本的生成与检测包含了以下几个基本步骤:

1) 训练网络分类器:使用正常的样本数据来训练一个网络分类器,建立一个能识别和分类正常样本的模型。

2) 添加扰动:训练完成后,对原始样本添加一定的扰动。

3)输入分类器:将加入扰动后的对抗样本输入到训练好的分类器中进行分类,分类器很可能会出现分类误差。„…†

4) 对抗训练:通过对抗训练训练模型,包括使用分类误差调整模型参数。

5) 重复输入分类:重复第③步,使用新的扰动生成更多对抗样本,输入到分类器中,持续评估和提高模型对对抗样本的鲁棒性。

对抗样本生成与检测流程图

4.评估对抗样本

这一阶段攻击者需要对生成的对抗样本进行评估,确保样本满足要求。对抗样本需要涵盖微小性和破坏性的基本要求:

(1)必须确保干扰的微小性,即扰动添加后使人们检测不到,达到肉眼几乎无法察觉的程度,在攻击时保持自身的隐蔽性。扰动大小的度量标准最常见的是基于范数(lp范数)、基于Wasserstein距离、基于视觉感知三类度量指标。

由于文本是离散的序列,对文本的修改很容易引起人们的注意。因此,文本领域添加干扰的另一个思路是——不像图像那样产生人类完全不可见的修改,而是产生人类判断正确却会使神经网络预测错误的样本,并利用欧氏距离、余弦相似度和词移距离三大指标衡量语句真实性和扰动幅度的文本相似性。

(2)微小扰动需精确作用于原有图像的特定像素,使得经过扰动的新图像具备欺骗原有分类深度模型的能力,即破坏性。随着对抗样本研究的深入,越来越多的度量方式在研究中被采用。对于对抗样本针对目标模型破坏程度的评价指标,除了准确率、混淆矩阵和AUC面积等传统评价模型效果的指标外,攻击成功率、扰动变化曲线和攻击强度曲线等一些衡量对抗样本攻击破坏程度的指标被相继提出。

5.开展测试工作/对抗攻击

利用对抗样本测试集、不同来源的输入数据、易出错样本、业务不相关样本等形成数据库,准备好测试数据和环境后,我们就可以开展AI系统的可靠性测试工作了。测试流程和传统软件的流程大致相同,测试工作还要对测试结果进行一定针对性的分析。

需要注意的是,这一阶段,攻击者需要尝试将不同的对抗样本输入目标模型,找到最有效的攻击方式。对抗样本攻击根据是否了解模型参数可以分为白盒攻击和黑盒攻击两种。通常情况下,智能系统的模型结构或参数等内部信息的情况无法获得,因此多采用黑盒攻击对人工智能模型进行攻击测试。

针对图像对抗样本的攻防技术研究是当前人工智能安全领域的研究热点,我们以智能视觉系统为例,主要了解下对抗样本攻击中黑盒攻击的两类方法:

(1)基于查询的攻击方法,其核心思想是通过反复访问目标模型,收集模型的响应数据,并利用这些数据来近似估计模型的梯度信息。这种方法通过不断地修改输入数据,观察模型输出的变化,来逐步生成能够误导模型的对抗样本。基于查询的攻击方法在攻击效果上相当有效,但由于需要频繁地与目标模型进行交互,因此在实际应用中容易被目标模型察觉到,从而引发防御机制或导致攻击被拦截。

(2)为了克服基于查询方法的上述缺点,基于模型迁移的攻击方法应运而生。基于模型迁移的方法通常首先攻击与目标模型具有相似任务或功能的替代模型,生成对抗样本,然后利用这些对抗样本去攻击目标模型。这种方法的理论基础在于对抗样本在同一任务的不同模型之间具有迁移性。也就是说,针对某一模型生成的对抗样本,很可能也能对另一模型产生同样的误导效果。整个过程中无需直接访问目标模型,这种方法能够更隐蔽地实施黑盒攻击,降低被目标模型察觉的风险。

基于查询的方法和基于模型迁移的方法在对抗样本攻击中各有特点。此外,基于梯度的攻击是局部搜索攻击中一种特殊形式,该策略也较为常用。在实际应用中,我们可以根据具体情况选择以下合适的方法来进行测试攻击。

图像分类数字域的黑盒攻击方法

以上就是人工智能测试中对抗样本的基本概念、原理和应用价值、对抗流程的全部内容。我们依托医学数据库,在医学人工智能工具测试数据集方面做了大量的训练工作,产生了成熟的医学领域人工智能测试数据集,如果您需要一起交流探讨可私信我。有关其他行业的数据集训练也可以私信交流。

参考资料

[1]李自拓,孙建彬,杨克巍等.面向图像分类的对抗鲁棒性评估综述[J].计算机研究与发展,2022,59(10):2164-2189.

[2] 潘文雯,王新宇,宋明黎等.对抗样本生成技术综述[J].软件学报,2020,31(01):67-81.

[3]王志波,王雪,马菁菁等.面向计算机视觉系统的对抗样本攻击综述[J].计算机学报,2023,46(02):436-468.

[4]杜小虎,吴宏明,易子博等.文本对抗样本攻击与防御技术综述[J].中文信息学报,2021,35(08):1-15.

[5]汪欣欣,陈晶,何琨等.面向目标检测的对抗攻击与防御综述[J].通信学报,2023,44(11):260-277.

[6]Yuan X,He P,Zhu Q,et al.Adversarial examples: Attacks and defenses for deep learning[J].IEEE transactions on neural networks and learning systems,2019,30(9):2805-2824.

(本文引用部分内容版权属于原作者,仅作交流探讨,如有侵权请联系删除。谢绝转载。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/50794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建现代化农业产业服务平台的系统架构

随着全球农业产业的发展和技术的进步,农业生产管理面临着越来越复杂的挑战和机遇。建立一个现代化的农业产业服务平台系统架构,不仅能够提高农业生产效率和管理水平,还能促进农民收入增长和可持续发展。本文将探讨如何设计和实施这样一个系统…

【计算机网络】期末实验答辩

注意事项: 1)每位同学要在下面做过的实验列表中选取三个实验进行答辩准备,并将自己的姓名,学号以及三个实验序号填入共享文档"1(2)班答辩名单"中。 2)在答辩当日每位同学由老师在表…

C# 使用pythonnet 迁入 python 初始化错误解决办法

pythonnet 从 3.0 版本开始,必须设置Runtime.PythonDLL属性或环境变量 例如: string pathToVirtualEnv ".\\envs\\pythonnetTest"; Runtime.PythonDLL Path.Combine(pathToVirtualEnv, "python39.dll"); PythonEngine.PythonHom…

vue路由跳转时改变路由参数组件不渲染问题【已解决】

效果展示 解决 router路由为了组件复用,防止组件的频繁销毁与创建,在遇到跳转的路由不一致才会进行重新渲染,路径参数变了他是不会管的,只会改变this.$route对象而已 就这个东西/:xxx 我们可以写一个watch监视this.$route对象。…

SQL语句(以MySQL为例)——单表、多表查询

笛卡尔积(或交叉连接): 笛卡尔乘积是一个数学运算。假设我有两个集合 X 和 Y,那么 X 和 Y 的笛卡尔积就是 X 和 Y 的所有可能组合,也就是第一个对象来自于 X,第二个对象来自于 Y 的所有可能。组合的个数即为两个集合中…

python爬虫-事件触发机制

今天想爬取一些政策,从政策服务 (smejs.cn) 这个网址爬取,html源码找不到链接地址,通过浏览器的开发者工具,点击以下红框 分析预览可知想要的链接地址的id有了,进行地址拼接就行 点击标头可以看到请求后端服务器的api地…

GraphHopper路径规划导航(Android源码调试运行)

本文主要记录在运行graphhopper安卓版路径规划导航源码的步骤和遇到的问题。 成功运行了程序,但是路劲规划一直不成功,问题一开始是服务地址,后来又是key的问题,在这个项目中涉及到了graphhopper、mapbox、mapilion的key&#xff…

html+css+js 实现马赛克背景按钮

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 文…

前端练习<HtmlCSS>——照片墙(附完整代码及实现效果)

这个小练习也来源于b站up小K师兄,大家可以通过下面的链接学习哦~up讲的非常详细。 纯CSS写一个简单酷炫的照片墙效果~ 先看一下这个照片墙的效果: 1.鼠标没有放到图片上时,照片同比例,每张照片都有倒影的效果。 2.然…

生成式AI和LLM的革命:Transformer架构

近年来,随着一篇名为“Attention is All You Need”论文的出现,自然语言处理(NLP)领域经历了一场巨大的变革。2017年,在谷歌和多伦多大学发表了这篇论文后,Transformer架构出现了。这一架构不仅显著提升了N…

【BUG】已解决:ERROR: Failed building wheel for jupyter-nbextensions-configurator

ERROR: Failed building wheel for jupyter-nbextensions-configurator 目录 ERROR: Failed building wheel for jupyter-nbextensions-configurator 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我…

第 3 章 数据和 C

目录 3.1 示例程序 3.1.1 程序中的新元素 3.2 变量与常量数据 3.3 数据: 数据类型关键字 3.3.1 整数和浮点数 3.3.2 整数 3.3.3 浮点数 3.4 C 语言基本数据类型 3.4.1 int 类型 1. 声明 int 变量 2. 初始化变量 3. int 类型常量 4. 打印 int 值 5. 八进制和十六进…

Linux I2C驱动程序

Linux I2C驱动 前言 主要目的记录一下我在野火的i.MX6ULL mini开发板上面编写了一个Linux I2C设备驱动去驱动SSD1306 OLED屏幕的开发过程。源码用的是野火提供的内核源码。 SSD1306 OLED和I2C接口 这块OLED屏幕大家应该都比较熟悉了,小巧迷你,DIY很好…

习题2.24

没啥好说, 先看解释器给出的结果 说起来也简单,这是一个多层的列表,第一个元素是1 第二个元素是(2 ( 3 4)) 第二层第一个是2 第二个是 (3 4) 第三层第一个是 3 第二个…

stm32入门-----ADC模数转换器(理论篇——上)

目录 前言 一、ADC模数转换器 1.简介 2.ADC的结构 3.输入通道 4.转换模式 5.触发控制 6.数据对齐 7.转换时间 8.校准 前言 本期就开始学习ADC模数转换器,这个大家在学习51单片机的时候应该就接触过了,实际上就是把模拟电压转换为…

YOLOv5改进 | 卷积模块 | 即插即用的递归门控卷积gnConv

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录: 《YOLOv5入门 改…

认识到自己的无知,需要一定的智慧

知识本是补药,却被变成毒药——“新无知”的三种表现 今天,一个人如果把评书、演义、宫廷剧当作真实历史,把当年从教科书上学来的过时理论当做“观世界”的金科玉律,并以此嘲笑别人“无知”的,属于典型的“新古人”—…

线程的同步和优先级

文章目录 前言一、优先级和同步各是什么?二、使用方法 1.线程的优先级2.线程的同步总结 前言 线程不仅可以实现代码的单线程运行和并发运行,在线程安全的情况下,还可以实现共同处理相同的系统资源。该篇文章还介绍了开发者如何设置线程运行的…

【数据结构】单链表带头双向循环链表的实现

一、链表的概念及结构 1.链表的概念 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。 2.链表的结构 一般讲的链表包括数据域和指针域: 二、链表的种类 实际中链表的结构…

昇思25天学习打卡营第1天|简单深度学习

前言 昇思MindSpore是一个全场景深度学习框架,旨在实现易开发、高效执行、全场景统一部署三大目标。 其中,易开发表现为API友好、调试难度低;高效执行包括计算效率、数据预处理效率和分布式训练效率;全场景则指框架同时支持云、边…