深度学习对抗样本的防御方法

article/2025/8/14 9:48:36

作者: 19届 lz

论文:《深度学习对抗样本的防御方法综述》



问题

2013年 ,Szegedy 等 人 [1]首先通过添加轻微扰动来干扰输入样本,使基于深度神经网络(Deep neural network, DNN)的图片识别系统输出攻击者想要的任意错误结果,此过程称为对抗攻击.
研究人员表明,现代深度神经网络模型极易受到人类视觉系统几乎无法察觉的微小扰动的对抗攻击。这种攻击可以造成神经网络分类器对原始图像进行错误预测。如果将其应用于现实世界,如恶意代码检测、无人驾驶系统、生物医学领域,将会带来极为严重的后果

贡献:

本文根据对抗攻击的分类,从模型和数据两个层面对防御策略进行了分类和介绍。通过对相关研究工作的调研和分析,未来针对对抗深度学习的研究可以从两个角度展开。



相关工作

对抗样本指的是攻击者在数据集原始输入样本通过添加人类无法察觉的细微扰动来形成新的输入样本,导致模型以高置信度给出一个错误的输出,以欺骗机器学习模型。

深度神经网络( DNN )是典型的深度学习模型,其他深度学习模型在其基础上进行扩展 。 DNN 本质是一个函数链,是由多个神经网络层累加起来的结构,神经网络层由多个人工神经元构成,每个神经元都是一个感知器,可以将一组输入映射到具有激活功能的输出值上 。 DNN 每个函数是由每一层上的神经元组成,其目标是使训练的模型与真实的数据生成过程相匹配。函数表达如下所示:
在这里插入图片描述
深度神经网络的强表达能力使其在许多领域取得了巨大的成功。CNN被广泛应用于计算机视觉领域,RNN在处理具有可变长度的顺序输入数据上,具有很好的处理效果。深度学习解决某些复杂问题的能力已经超出了人类水平,但研究表明,深度学习技术也面临多种安全性威胁。



对抗攻击方法分类

根据敌手知识可分为白盒攻击和黑盒攻击 :
白盒攻击指攻击者完全了解神经网络模型和参数;
黑盒攻击指攻击者无法获取模型全部信息,只能通过对模型的使用来观察输入输出并展开攻击。

根据对抗特异性可以分为针对目标攻击和非针对目标攻击 :
针对目标攻击中对抗样本的分类结果会错分到指定分类;
非针对目标攻击的对抗类输出是任意的。
在这里插入图片描述



对抗防御方法分类

对对抗样本的典型防御方法从模型数据两个方向从模型入手的防御方法主要分为两种。

模型层面的防御策略可分类为修改网络使用附加网络,通过在训练阶段修改原始DNN模型的结构,或者不改变原始模型用外部模型作为附加网络,使得防御后的DNN分类器能够检测出对抗样本或将其识别为正确标签;

数据层面的防御策略主要通过在训练阶段将对抗样本注入训练数据集后重新训练模型,或预测阶段对样本进行修改,进行重建并将转换后的对抗样本输入到原模型来进行预测。

模型层面防御方法

从模型入手的防御方法主要分为两种。
(1)修改网络:仅修改原始模型的结构。
(2)使用附加网络:在保持原始模型所有
信息的情况下,用外部模型作为附加网络。

修改网络

1)防御蒸馏
Distillation(蒸馏)最早由Hinton提出,是指将复杂网络的知识迁移到简单网络上。该知识以训练数据的类概率向量形式提取,并反馈给原始模型。Papernot提出了防御蒸馏,是蒸馏算法的扩展。如图 1 所示,利用蒸馏算法为原始模型训练一个蒸馏模型。训练蒸馏模型时,输入是训练原始模型所需的样本集合。
在这里插入图片描述
可以理解为softmax层的输出,除了正例之外,负标签也带有大量的信息,比如某些负标签对应的概率远远大于其他负标签。而在传统的训练过程(hard target)中,所有负标签都被统一对待。也就是说,KD的训练方式使得每个样本给Net-S带来的信息量大于传统的训练方式。

2)正则化
正则化方法是指在训练过程中在目标函数上惩罚输出对于输入的变化程度,可以在一定程度上使小的对抗扰动不会对输出有显著影响。Moosavi-Dezfooli [10]指出对抗训练的主要作用之一是使损失函数的曲率和分类器的决策边界显著减小,所以提出了一种新的正则化策略,即曲率正则化,可以直接最小化损失面的曲率。这种正则化方法被证明可以显著提高神经网络的鲁棒性,甚至达到与对抗训练相当的性能,但可能在一定程度上会使模型的效果(如准确度)变差。此外,正则化方法与对抗训练结合会有很好的效果,但计算复杂度太高。

3)深度压缩网络
深度压缩网络 Deep contrac-tive network, DCN),在训练过程中采用正则化方法使用压缩自编码器的平滑惩罚项,使得模型的输出更加平滑。
高阶表征引导去噪器(High-level representation guided denoiser, HGD),训练一个基于神经网络的去噪器来消除对抗扰动。该方法使用U-Net作为去噪网络,相较于编码器和解码器结构,U-Net在同分辨率的编码层和解码层之间直接相连,网络只需学习如何去除噪音,而无需重建整张图。

使用附加网络

1)防御通用扰动
Akhtar等人提出了一种防御框架,该框架将额外的神经网络层附加到目标网络中,并重新训练网络来完成对对抗样本的校正,使目标网络对图像的原始版本与相应对抗样本的预测相同。通过这种方式不需要调整系数,而且能有效防御对抗样本。

2)基于GAN的防御
Lee等 人[15]利用生成对抗网络(GAN)来训练一个可以抵抗FGSM攻击的网络。直接在生成的网络上训练,在训练过程中,生成网络不断尝试对原始和对抗图像进行正确分类。
Shen等人使用网络的生成器部分来修正一个受干扰的图像。
Samangouei等人提出一种新的防御策略Defense-GAN,利用GAN来增强分类模型对白盒和黑盒对抗攻击的鲁棒性。实验表明,Defense-GAN可以有效抵抗对抗攻击,但如果GAN没有得到适当的训练和调整,Defense-GAN会受到原始输入样本和对抗样本的影响。

3)对抗样本检测
上述使用附加网络的防御方法可以使得防御后的DNN分类器能够将对抗样本识别为正确的标签,而对抗样本检测只需判断输入样本是否为对抗样本,而无须将对抗样本识别为正确标签。

Feature Squeezing方法通过对输入样本压缩简化来检测输入样本是否为对抗样本,该方法在 DNN 分类器中添加了两个外部模型,分别用来减少每个像素的颜色位深度和进行像素值的空间平滑。将原始输入图片和用两种Squeezing方法压缩后的图片经过分类器预测后的两个结果进行比较,如果距离很大,则输入样本会被认为是对抗样本。

且有研究表明Feature Squeezing方法与对抗训练结合,分类结果会有更高的准确性。
Feature Squeezing

数据层面防御方法

1)训练阶段修改模型参数(对抗训练)
自从发现深度神经网络的对抗样本以来,相关文献中普遍认为,防御对抗样本的神经网络的鲁棒性会随着对抗训练而提高。对抗训练方法从训练数据集入手,在每个训练步骤中产生对抗样本,并将它们注入训练集,构建鲁棒性更好的模型。Goodfellow等 人[21]和Huang等人[22]使用对抗训练防御方法MNIST数据集上进行评估,实验表明这种混合了合法样本和对抗样本训练出的模型有更强的鲁棒性。

对抗训练在训练过程中只能加入由已知攻击产生的特定类别的对抗样本,因此对抗训练防御通常不具备对其他攻击产生对抗样本的泛化能力。此外,对抗训练防御方法在训练阶段需要大量的正常样本和对抗样本,训练的成本较高,使得该方法很难在大规模数据集上使用,这是对抗训练防御方法亟待解决的难题。

2)测试阶段修改输入样本

(1)输入转换
输入转换方法不需要改变训练数据集和模型结构,而是对预测样本进行各种转换方法来减少可能存在的扰动,之后将转换后的样本输入到原模型中预测,使对抗样本重新被正确分类 。输入转换防御方法需要对预测样本进行转换处理,实验表明,目前这种方法在对抗样本预测上的误报率和漏报率较大。

(2)数据压缩
Dziugaite 等人发现在图像领域应用中最广泛的图像压缩技术是 JPG 图像压缩技术。受此启发,他们研究了JPG 压缩技术对由 于FGSM 攻击扰动带来的网络模型识别率的影响。Das 等人使 用 JPEG 压缩方法,提出一种针对 FGSM 和 DeepFool 攻击方法的集成防御手段,但这种图像压缩技术无法面对更加强力的攻击,如 C&W 等。
L i和Wang提出了一种新的深度去噪神经网络,用于消除对抗样本上的噪声。Liu等人运用数据压缩技术来防御对抗图像的攻击,实验结果表明所提出的防御策略只有在添加的扰动较小时才有一定的效果。
在这里插入图片描述


其他对抗深度学习防御方法

M a 等人利用对抗样本的局部本征维数(Local intrinsic di-mensionality, LID) 值大于正常样本的特性来识别对抗样本和正常样本,提出基于 LID 的检测方法。

Buckman
等人提出使用温度计编码( Thermometer encoding)将连续的输入样本进行离散化。

Prakash等人将像素偏转和小波去噪技术结合提出了新的集成防御方法,利用小波域中的自适应软阈值使模型的输出平滑,该防御方法可以有效抵御最新的对抗攻击。


当前防御方法面临的问题

(1)对抗攻击的防御存在对目标模型参数的依赖问题,模型使用的白盒防御策略为改变目标模型梯度传递过程,而黑盒攻击使用替代模型构造对抗样本,其本身的可迁移性属性使其在黑盒攻击中具有很好的泛化性,使模型使用的白盒防御策略失效。

( 2 )几乎所有的防御方法只能对有限的对抗攻击有效,不能够解决来自未知攻击带来的风险,并且很容易被不断演化的对抗样本绕过。

( 3 )大多数防御都是针对计算机视觉任务中的对抗样本,随着其他领域对抗样本的发展,迫切需要研究这些领域存在的问题。例如在网络空间安全领域,一些深度学习的网络空间安全应用存在的最大问题是健壮性差,容易受到对抗攻击。

(4)正如本文介绍,对抗攻击在物理世界也十分有效,所以研究其在物理世界的防御方法也是非常必要的。


http://chatgpt.dhexx.cn/article/RDvDnNdj.shtml

相关文章

对抗机器学习模型

重磅推荐专栏: 《Transformers自然语言处理系列教程》 手把手带你深入实践Transformers,轻松构建属于自己的NLP智能应用! 1. Attack ML Model 随着AI时代机器学习模型在实际业务系统中愈发无处不在,模型的安全性也变得日渐重要。…

PyTorch 生成对抗网络 01.生成对抗网络

1. 简介 本教程通过一个例子来对 DCGANs 进行介绍。我们将会训练一个生成对抗网络(GAN)用于在展示了许多真正的名人的图片后产生新的名人。 这里的大部分代码来自pytorch/examples中的 dcgan 实现,本文档将对实现进行进行全面 的介绍&#x…

机器学习中火爆的对抗学习是什么,有哪些应用?

1、什么是对抗学习? 机器学习这一技术自出现之始就以优异的性能应用于各个领域。近年来,随着机器学习的快速发展与广泛应用,这一领域更是得到前所未有的蓬勃发展。 目前, 机器学习在计算机视觉、语音识别、自然语言处理等复杂任务中取得了公…

对抗学习概念、基本思想、方法综述

代码实现篇 对抗学习常见方法代码实现篇 对抗学习的基本概念 要认识对抗训练,首先要了解 “对抗样本”,在论文 Intriguing properties of neural networks 之中有关于对抗样本的阐述。简单来说,它是指对于人类来说 “看起来” 几乎一样&am…

【Python】MySQL数据库(安装MySQL、创建数据库、在Python中使用MySQL数据库)

MySQL是一个小巧的多用户、多线程SQL数据库服务器。MySQ是以客户机/服务器结构来实现的,它由一个服务器守护进程和客户程序组成。在Python中,可以使用pymysql模块连接到数据库,对MySQL数据库进行操作。 本文内容: 一、安装MySQL…

Python结合MySQL数据库编写简单信息管理系统

1,项目整体逻辑及使用工具 1.1 项目整体逻辑 本项目主要是使用Python进行编写,利用Python中的pymysql库进行连接数据库,将信息存入MySQL数据库中,然后实现对信息进行增删改查等一系列操作。 1.2 使用工具 (1&#…

十四、python学习之MySQL数据库(一):安装MySQL数据库

一、数据库概述: 1.数据库概述: 数据库是在数据管理和程序开发过程中,一种非常重要的数据管理软件,通过数据库,可以非常方便的对数据进行管理操作。 2.什么是数据: 数据用来描述事物的特征,…

Python操作MySQL库结(MySQL详细下载、安装、操控及第三方库中的使用)

​ 活动地址:CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。 学习日记(4) 目录 学习日记(4) 一、下载和安装MySQL 1、下载MySQL 2…

阿里云钉钉应用python后端开发之安装MySQL数据库

阿里云钉钉应用python后端开发之安装mysqlclient 在本系列文章中,项目需要选择MySQL作为默认数据库。 本篇为在Windows上安装mysqlclient。 在python后端开发中,可以选择的数据库有PostgreSQL, MariaDB, MySQL, or Oracle等,一般情况下&…

使用python对mysql数据库进行添加数据的操作

使用python连接mysql进行添加数据的操作 使用的是python3.6pymysql 1、导入pymysql,并创建数据库连接 import pymysql# 使用python连接mysql数据库,并对数据库添加数据的数据的操作 # 创建连接,数据库主机地址 数据库用户名称 密码 数据库…

基于PYTHON语言的工资管理系统制作(一)--MYSQL数据库的下载和安装

去官网下载MySQL Community Server社区免费版,网址如下:MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/ 因为我的开发环境是WINDOWS64位操作系统,所以我选了Windows版。 下载完毕后直接傻瓜化无脑全部安装…

Python数据库:MySQL数据库的详细介绍与安装

一、数据库的介绍 数据库(Database)是存储与管理数据的软件系统,就像一个存入数据的物流仓库。每个数据库都有一个或多个不同的API接口用于创建,访问,管理,搜索和复制所保存的数据。我们也可以将数据存储在…

python安装出现modify_Python安装MySQL数据库模块

背景 折腾: 的过程中,需要去安装MySQLdb。 下载MySQLdb 去官网: 看到有1.2.4和1.2.3 所以去最新的1.2.4: 下载对应的编译好的版本: 得到1MB的 MySQL-python-1.2.4.win32-py2.7.exe 安装MySQLdb 双击安装&am…

python+mysql搭建信息管理系统(内含源码)

效果展示: 一、环境 开头直接交代环境了 python 3.6pyqt5hashlibsipsystime 都是小包,容易倒,一般不会遇到坑,这里不做过多介绍。 二、搭建步骤与代码实例 2.1 首先需要一个主控台,界面如下: 2.2 登…

Python中使用MySQL

Python中使用MySQL 一、前言二、下载安装MySQL1.下载MySQL2.安转MySQL3.设置环境变量4.启动MySQL5.使用Navicat for MySQL管理软件 三、安装PyMySQL四、连接数据库五、创建数据表六、操作MySQL数据表 一、前言 MySQL是一款开源的数据库软件,由于其免费特性得到了全世…

总结:ubuntu或是win7系统下,利用python语言来使用数据库mysql一

准备:我用的是ubuntu12.04,win7系统。在这ubuntu系统下使用的python2.7.3,MySQL5.5;win7系统下使用的是python2.7.5,MySQL5.6。 这两个系统下,可能ubuntu系统更容易实现,所以先总结ubuntu系统下python使用数据库mysql。 一、ubuntu系统下python使用数据库mysql 1.如果…

Python之MYSQL数据库基础操作(DBeaver安装方法)

Python之MYSQL数据库基础操作 一、基本介绍1.驱动程序2.DBeaver(1)关于DBeaver(2)安装(3)配置镜像和建立连接(4)连接可能出现失败的原因及解决方法 二、数据库基础操作1.数据库连接操…

Python 操作MySql数据库(封装、优雅)

Python 记录操作MySql数据库(封装)——优雅 前言封装代码进行测试结果展示 前言 学了pymysql第三方库(pip install pymysql)来操作MySql数据库后,浅记一下对MySql进行 《关于我的MySql之优雅封装这件事儿》。这里只涉…

【100天精通python】Day32:使用python操作数据库_MySQL下载、安装、配置、使用实战

目录 专栏导读 1 MySQL概述 2 MySQL下载安装 2.1 下载 2.2 安装 2.3 配置 2.3.1 服务类型和网络配置: 2.3.2 连接配置: 2.3.3 账户和权限配置: 2.3.4 配置Windows Service : 2.3.5 服务器文件权限配置: 2.3…

Python 安装mysql数据库模块

方法一:命令行安装mysql模块 先找到Python安装目录下的Script文件 2.当前路径下进入cmd命令窗口,输入pip3 install pymysql 3.如上图所示就是安装成功 方法二:PyCharm下安装mysql数据库模块 1.点击File里的Settings 2.点击Project Interperte…