安全文章研读:深度学习对抗攻击防御策略的一些实现

article/2025/4/22 12:46:50

本文整理自哈尔滨工业大学硕士论文:深度学习对抗攻击防御策略的研究与实现

0x01 太长不看

深度学习在表现优异的同时,还存在易受攻击的缺陷。多数防御策略只能应对特定的攻击方法,普适性比较低,另外这些防御策略多为全局过滤扰动,浪费了大量算力。所以,本文:

  1. 认为对抗扰动中存在敏感点,敏感点的波动影响深度学习模型的分类。我们提出一种仅过滤对抗样本中敏感点的防御策略。
  2. 提出了一种基于差分进化算法寻找敏感点的方法,采用黑盒的方式去寻找对抗样本中的敏感点,避免了对深度学习模型的结构、参数等的依赖,可以适用于未知模型细节时的防御,增加了普适性。用邻域平均的方法把敏感点过滤掉。

0x02 Intro

道高一尺,魔高一丈。为使得基于深度学习的应用能够安全运行,必须要加快防御策略的研究并且要让防御策略尽可能的能够抵御多种对抗攻击。

当前,有两种防御方法:数据层面防御和模型层面防御。

  • 数据层面防御:训练阶段修改模型参数(如对抗训练),或者测试阶段修改输入数据(如图像压缩)。对抗训练普适性差,图像压缩只能防御扰动较少的对抗样本。(搞一个高频滤波器?)
  • 模型层面防御:修改网络(更改损失函数或激活函数、防御蒸馏和正则化等),使用附加网络(GAN,增加额外的前置网络学习图像校正。)

对抗攻击相关概念:

  • 黑盒攻击:只需要知道模型的输入输出就可以完成攻击;
  • 白盒攻击:知道防御模型的结构和参数;
  • 目标攻击:例如正确的分类类别是A,目标攻击不仅要让分类结果错误,还要使它误判成不同的类别,比如类别B;
  • 非目标攻击:只要扰动后的类别不是原来的类别就行。

几个常见的对抗攻击方法:

  1. FGSM(快速梯度符号方法):假设损失函数是J(x),那么我们对J求个梯度之后再对每一维取一下sign,然后加入到x中:在这里插入图片描述但是如果做黑盒攻击的话,这里的 θ \theta θ 不知道,也就没法求梯度了。
  2. BIM:对FGSM的改进,使用迭代方式,每一次修改一点像素值,并且做一下修剪,确保其再原始图片X的给定区间内:在这里插入图片描述
  3. PGD:可以看作是 FGSM 的迭代版本。我们知道 BIM 也是 FGSM 的迭代版本,这两者的区别是,PGD 的迭代次数更多而且加了随机化操作,使得 PGD 的攻击效果比 FGSM 要好,相比 FGSM 能够生成更加不易察觉的对抗扰动。

0x03 基于对抗攻击的防御策略

攻击方法:

  • 全局攻击:例如前文的FGSM和BIM。概括一下,干的是这个事情:在这里插入图片描述
  • 局部攻击:对整张输入样本中某一个或多个像素点添加扰动,像素点的个数或百分比往往是个超参数,可以人为指定。往往利用演化算法求出对深度学习模型输出影响较大的关键分量,然后在关键分量上添加微小的扰动生成对抗样本。这种攻击方法的优点是,不需要了解深度学习模型的参数等信息,对一些不可微分的网络模型也可以成功攻击。常见的比如one-pixel attack。

两类对抗样本生成方法本质上都在找一些关键分量,然后在这些关键分量之上加一些扰动,并且在关键分量之上所加的扰动通常会明显一些,目的就是达到欺骗深度学习模型的目的。

为了防御,我们可以:找出敏感像素点或者关键分量然后处理掉它。具体地:

  1. 用演化算法找到敏感点;
  2. 对敏感点做一手过滤,求一手平均

0x04 防御策略的设计和实现

输入样本在传入模型之前会先做敏感点过滤,过滤之后就会把数据扔到预测模型里。

差分进化算法:

进化算法的一种,其主要步骤与遗传算法基本一致,也包括变异,交叉和选择三种操作。

差分进化通过差分方法实现个体变异。常见的差分方法是从种群中随机选择两个不相同的个体,将其向量做差后乘以一个缩放因子然后与待变异的个体执行向量加法:

hrt
这里 v v v 是变异中间体, x r ( g ) x_r(g) xr(g) 表示第 g g g 代种群的第 r r r 个个体。当然,也需要满足解的合理性。

交叉操作是指g代种群和其变异中间体做交叉,其具体方法如下:
在这里插入图片描述
CR是一个概率值, v j , i ( g + 1 ) v_{j,i}(g+1) vj,i(g+1) 为中间体第j个位置的元素值。即对向量分量做一下调整。

最后,使用贪心思想选择下一代种群个体:

在这里插入图片描述
敏感点:

敏感点是输入样本中特征的数值轻微变动就可能对深度学习造成影响的那些特征。一般地,这种点可能在决策边界附近。

敏感点并非只能由一个像素点组成,敏感点是一个可以使深度学习 𝑓 预测值产生较大波动的像素点的集合,可以有多个像素点。敏感点的寻找可以形式化为带约束的优化问题,即在改变尽可能少的像素的情况下,使得深度学习 𝑓 的预测置信度尽可能低。

上述想法可以表示成一个约束最优化问题:
在这里插入图片描述

其中,d是敏感点的个数。S是对输入的改动。然后我们实现一下差分进化算法即可。


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

相关文章

过拟合与欠拟合的生动理解

文章目录 1、过拟合2、欠拟合3、图像表现4、解决办法 1、过拟合 过拟合(OverFititing):太过贴近于训练数据的特征了,在对应训练集上表现非常优秀,近乎完美的预测/区分了所有的数据,但是在新的测试集上却表…

模型的过拟合与欠拟合

样本数据集:样本数据集总是表现为数据的内在规律(如:yf(x))与随机噪声共同作用的结果。 训练集:训练集是用于训练模型的样本数据集合。我们总是希望通过训练集,找到真实数据的内在规律,同时又希…

如何解决过拟合与欠拟合

如何解决过拟合与欠拟合 根据不同的坐标方式,欠拟合与过拟合图解不同。 1.横轴为训练样本数量,纵轴为误差 如上图所示,我们可以直观看出欠拟合和过拟合的区别: ​ 模型欠拟合:在训练集以及测试集上同时具有较高的误…

机器学习中的过拟合与欠拟合

目录 一、什么是过拟合与欠拟合二、原因及解决方法三、正则化类别四、拓展—原理 问题:训练数据训练的很好啊,误差也不大,为什么在测试集上面有 问题呢? 当算法在某个数据集当中出现这种情况,可能就出现了过拟合现象。…

机器学习之过拟合与欠拟合

1 机器学习中的误差 一般地,将学习器(机器学习模型)的实际预测输出与样本的真实输出之间的差异称为“误差”(error)。 统计学习的目的是使学到的模型不仅对已知数据而且对未知数据都能有很好的预测能力。不同的学习方法会给出不同的模型。当损失函数给定时&…

机器学习过拟合与欠拟合!

↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:胡联粤、张桐,Datawhale面经小组 Q1 如何理解高方差与低偏差? 模型的预测误差可以分解为三个部分: 偏差(bias), 方差(variance)…

机器学习:过拟合与欠拟合问题

本文首发于 AI柠檬博客,原文链接:机器学习:过拟合与欠拟合问题 | AI柠檬 过拟合(overfitting)与欠拟合(underfitting)是统计学中的一组现象。过拟合是在统计模型中,由于使用的参数过…

机器学习知识总结 —— 6. 什么是过拟合和欠拟合

文章目录 过拟合欠拟合泛化能力避免过拟合的一般方法从数据集上规避从训练模型上规避从训练过程上规避 作为从「统计学(Statistics)」跟「计算机科学(Computer Science)」交叉而诞生的新学科「机器学习(Machine Learni…

VGG16网络结构要点

学习BCNN的过程时遇到,VGG16的网络结构如下图示意: 13个卷积层(Convolutional Layer),分别用conv3-XXX表示3个全连接层(Fully connected Layer),分别用FC-XXXX表示5个池化层(Pool …

VGG-16网络结构解析

VGG,也叫做VGG-16网络。这个网络结构很有意思,相必实现这个网络的作者是有点强迫症,不然整个网络为什么能够如此的协调一致。基本上每一次的内容都大同小异,2层或3层卷积层,激活一下,池化一下,就…

VGGNet网络结构

深度神经网络一般由卷积部分和全连接部分构成。卷积部分一般包含卷积(可以有多个不同尺寸的核级联组成)、池化、Dropout等,其中Dropout层必须放在池化之后。全连接部分一般最多包含2到3个全连接,最后通过Softmax得到分类结果&…

VggNet网络结构详解

VggNet网络结构详解 #图像识别网络结构详解 一、概述 VGG在2014年由牛津大学著名研究组VGG (Visual Geometry Group) 提出,斩获该年ImageNet竞赛中 Localization Task (定位任务) 第一名 和 Classification Task (分类任务) 第二名。 二、网络详解 VGG16相比Al…

VGG11、VGG13、VGG16、VGG19网络结构图

VGG11、VGG13、VGG16、VGG19网络结构图 前言 前言 VGG网络采用重复堆叠的小卷积核替代大卷积核,在保证具有相同感受野的条件下,提升了网络的深度,从而提升网络特征提取的能力。 可以把VGG网络看成是数个vgg_block的堆叠,每个vgg_…

VGG网络结构详解与模型的搭建

首先贴出三个链接: 1. VGG网络结构详解视频 2. 使用pytorch搭建VGG并训练 3. 使用tensorflow搭建VGG并训练 VGG网络是在2014年由牛津大学著名研究组VGG (Visual Geometry Group) 提出,斩获该年ImageNet竞赛中 Localization Task (定位任务) 第一名 和…

【深度学习】VGG16网络结构复现 | pytorch |

文章目录 前言一、VGG16介绍二、VGG16网络复现——pytorch 前言 这篇文章按道理来说应该是很简单的,但是因为一个很小的bug,让我难受了一晚上,直到现在我也没找出原因。后面我会提到这个bug。 今天这篇文章主要用来手动搭建vgg16这个网路&am…

经典卷积神经网络---VGG16网络

VGG16网络结构及代码 下图为VGG网络结构图,最常用的就是表中的D结构,16层结构(13层卷积3层全连接层),卷积的stride为1,padding为1,maxpool的大小为2,stride为2(池化只改…

VGG16网络结构复现(Pytorch版)

VGG有6种子模型,分别是A、A-LRN、B、C、D、E,我们常看到的基本是D、E这两种模型,即VGG16,VGG19 为了方便阅读,并没有加上激活函数层 from torch import nn import torch from torchsummary import summaryclass VGG…

手动搭建的VGG16网络结构训练数据和使用ResNet50微调(迁移学习)训练数据对比(图像预测+前端页面显示)

文章目录 1.VGG16训练结果:2.微调ResNet50之后的训练结果:3.结果分析:4.实验效果:(1)VGG16模型预测的结果:(2)在ResNet50微调之后预测的效果: 5.相关代码和知…

卷积神经网络——vgg16网络及其python实现

1、介绍 VGG-16网络包括13个卷积层和3个全连接层,网络结构较LeNet-5等网络变得十分复杂,但同时也有不错的效果。VGG16有强大的拟合能力在当时取得了非常的效果,但同时VGG也有部分不足:1、巨大参数量导致训练时间过长&#xf…

VGG16系列III: 网络模型结构

目录 Part I: CNN的基础构件 一张图片如何作为输入? 什么是卷积 什么是Padding 什么是池化(pooling) 什么是Flatten 什么是全连接层 什么是Dropout 什么是激活函数 VGG16的整体架构图 Part II: VGG 网络架构 典型VGG网络结构 VGG 网络参数数量计算: P…