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

news2024/11/24 14:11:15

从医疗诊断、自动驾驶到智能家居,人工智能技术为各个行业领域带来无限可能的同时,挑战也日益显现。特别是在人工智能安全领域,随着恶意攻击和数据欺骗的不断演变,确保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.coloradmin.cn/o/1952996.html

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

相关文章

【游戏制作】使用Python创建一个完整的2048游戏项目

目录 项目运行展示 项目概述 项目目标 项目结构 安装依赖 代码实现 1. 导入库 2. 创建 Game2048 类 3. 设置UI界面 4. 加载二维码图片 5. 创建菜单 6. 游戏逻辑和功能 7. 运行应用 总结 创建一个完整的2048游戏项目 项目运行展示 项目概述 在这个项目中&#xff…

常用sql:删除表中重复的数据

在平常的开发工作中,我们可能经常需要对表进行操作。比如某些数据重复了,那么可能需要删除掉重复的数据,保证数据根据业务字段属性相同的数据只有一条,那么应该如何做呢? 1:新建表:用户详情表 …

for循环计算1~100之间3的倍数的数字之和

你要计算1~100之间的数字先得打印出来1~100之间的数字然后在判断是不是3的倍数然后在打印出数字&#xff0c;代码如下 #include<stdio.h> int main() {int i 0;for (i 1; i < 100; i){if (i % 3 0){printf("%d ", i);}}return 0; }

Intellij IDEA多模块分组 实现move to group

新版本idea&#xff0c;没有了move to group的功能&#xff0c;导致模块很多的时候不能分组。2018版本有。 这个分组是虚拟的&#xff0c;不会在磁盘中实际存在。 要实现这个功能&#xff0c;只需要改modules.xml即可。 步骤 1. 找到配置文件 .idea目录下的moudules.xml 2.…

GeoServer GIS 服务器(geoServer离线地图服务器搭建)

文章目录 引言I GeoServer 安装部署版本选择基于war包进行部署II geoServer配置2.1 geoServer新建工作区2.2 geoServer 新建数据源2.3 geoServer图层发布和图层编辑2.4 指定存储层的坐标系2.5 geoServer图层样式2.6 图层组的创建GIS基础知识GeoServerWMTSEPSGEPSG3857相关的数据…

Cadence学习笔记(十三)--设置边框与异形铺铜

直接导入板框用小眼睛可以看到所有的都是线的属性&#xff1a; 那么如何让它变成板框呢&#xff1f;这里先跳转到下图中的层&#xff1a; 将Z--CPOY这一层变成shape区&#xff1a; 之后用Z--copy: Z--COPY设置如下参数&#xff0c;铺铜内缩20mil: 之后选择长方形铺铜就可以了&…

快醒醒,别睡了!...讲《数据分析pandas库》了—/—<5>

一、 1、修改替换变量值 本质上是如何直接指定单元格的问题&#xff0c;只要能准确定位单元地址&#xff0c;就能够做到准确替换。 1.1 对应数值的替换 具体用法如下&#xff1a; replace方法&#xff1a; df.replace(to_replace None :将被替换的原数值&#xff0c;所有…

matlab6.5免安装版,解压即可用【亲测win10可用】

这个版本是咱第一次学matlab的时候用的处女版&#xff0c;如今看着这个界面依然恍如昨日。为甚要分享这种老掉牙古董matlab版本呢&#xff1f;原因在于一款老古董工具箱 —— geatbx。 这款工具箱采用了古老pcode的加密系统加密&#xff0c;而matlab的pcode加密经过几次迭代&a…

数据库开发:MySQL基础(二)

MySQL基础&#xff08;二&#xff09; 一、表的关联关系 在关系型数据库中&#xff0c;表之间可以通过关联关系进行连接和查询。关联关系是指两个或多个表之间的关系&#xff0c;通过共享相同的列或键来建立连接。常见的关联关系有三种类型&#xff1a;一对多关系&#xff0c;…

【机器学习】智驭未来:机器学习如何重塑制造业的转型与升级

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 机器学习重塑制造业生产流程&#x1f338;预测性维护&#xff1a;减少停机时间&#xff0c;提高设…

JavaScript(17)——事件监听

什么是事件&#xff1f; 事件是在编程时系统内发生的动作或发生的事情&#xff0c;比如用户在网页上单击一个按钮 什么是事件监听&#xff1f; 就是让程序检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立刻调用一个函数做出响应&#xff0c;也称为绑定事件或…

【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件

目录 ​编辑 前言 系统调用 open 参数flags 参数mode write 追加方式 read close 文件描述符 打开多个文件并观察其文件描述符 C语言文件操作 理解一切皆文件 理解open操作 前言 各类语言的文件操作其实是对系统调用的封装 我们经常说&#xff0c;创建一个文件&a…

【 C++ 】 一文搞定——引用、内联、命名空间、缺省、重载

前言&#xff1a;这篇文章将带您了解C基础中的知识点——命名空间、引用、内联、缺省、重载 &#x1f618;我的主页&#xff1a;OMGmyhair-CSDN博客 一、命名空间namespace 1.可以嵌套定义&#xff0c;但是只能定义在全局 namespace ly {int student 1;int age 21;void Pr…

剑和沙盒 6 - 线程辱骂 – 使用线程名称进行攻击

强调&#xff1a; 进程注入是攻击者工具包中的重要技术之一。在下面的文章中 解释了如何滥用线程描述 API 来绕过端点保护产品。提出了一种新的注入技术&#xff1a;Thread Name-Calling&#xff0c;并给出了实施保护的相关建议。 介绍 进程注入是攻击者使用的重要技术之一 。…

Go-知识panic

Go-知识panic 1. 介绍2. 工作机制2.1 panic函数2.2 工作流程2.3 总结 3. 原理3.1 数据结构3.2 gopanic没有deferdefer函数处理嵌套defer 4. 总结 Go-知识error :https://blog.csdn.net/a18792721831/article/details/140430350 Go-知识defer : https://blog.csdn.net/a18792721…

单片机基于TXW8301的Wi-Fi Halow物联网控制

目前市面上基于2.4/5.8G wifi通讯信号干扰很频繁&#xff0c;基于Wi-Fi Halow的sub1g wifi既可以绕过干扰还可以达到公里级别控制&#xff0c;并且实现高清图传非常方便。 什么是Wi-Fi Halow&#xff1f;有何优势&#xff1f; 早在2016年3月&#xff0c;Wi-Fi联盟就针对物联网…

YOLO v8目标检测(二)—v8理论与模型推理

YOLO v8目标检测 数据增强 使用场景&#xff1a;在数据加载器加载数据的过程中会使用到数据增强的相关方法&#xff0c;来构造数据集。模型推理方法进行学习之前首先复习了解图像数据增强的相关方法和步骤。 其中在v8的源代码中 augment.py 的源代码文件。它包含了几个用于数据…

【python】python基于 Q-learning 算法的迷宫游戏(源码+论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

java项目数据库 mysql 迁移到 达梦

目录 一、下载安装达梦数据库 1、下载 2、解压 3、安装 二、迁移 三、更改SpringBoot 的 yml文件 1、达梦创建用户 2、修改yml 一、下载安装达梦数据库 1、下载 下载地址 https://eco.dameng.com/download/ 点击下载 开发版 (X86平台) , 然后选择操作系统并点击立…

重装win10系统,“我们无法创建新的分区 也找不到现有的分区”“我们无法更新系统保留的分区”

重装系统&#xff0c;最开始用这篇教程保留数据的重装系统教程&#xff01;&#xff08;win10系统&#xff09;_win10重装系统保留c盘数据-CSDN博客里win10官方的更新方法。想保留C盘以外的数据来重装系统 然后就会提示“我们无法更新系统保留的分区” 查到网上说这是因为MSR分…