【论文阅读】ICCV 2023 计算和数据高效后门攻击
文章目录
- 一.论文信息
- 二.论文内容
- 1.摘要
- 2.引言
- 3.主要图表
- 4.结论
一.论文信息
论文题目: Computation and Data Efficient Backdoor Attacks(计算和数据高效后门攻击)
论文来源: 2023-ICCV(CCF-A)
论文团队: 南洋理工大学&清华大学&中关村实验室

二.论文内容
1.摘要
针对深度神经网络(DNN)模型的后门攻击已被广泛研究。针对不同的领域和范式提出了各种攻击技术,如图像、点云、自然语言处理、迁移学习等。在DNN模型中嵌入后门最常用的方法是毒害训练数据。他们通常从良性训练集中随机选择样本进行投毒,而不考虑每个样本对后门有效性的不同贡献,使得攻击不太理想。
最近的一项研究[40]提出使用 遗忘分数 来 衡量每个中毒样本的重要性 ,然后过滤掉冗余数据以进行有效的后门训练。然而,这种方法是经验设计的,没有理论证明。它也非常耗时,因为它需要经过几个训练阶段来进行数据选择。为了解决这些限制,我们提出了一种新的基于置信度的评分方法,该方法可以基于距离后验有效地测量每个中毒样本的贡献。我们进一步引入贪婪搜索算法,以更快地找到信息最丰富的后门注入样本。对二维图像和三维点云分类任务的实验评估表明,我们的方法可以达到相当的性能,甚至超过基于遗忘分数的搜索方法,而只需要对标准训练过程进行几个额外的epoch计算。我们的代码可以在https://github.com/WU-YU-TONG/ computational_efficient_backdoor找到。
2.引言
深度神经网络(dnn)安全威胁的多样性[1,23]阻碍了其在许多计算机视觉(CV)任务中的商业化进程。最严重和最广为人知的威胁之一是后门攻击[23]。对手可以在训练期间向目标模型注入一个与唯一触发器相对应的隐形后门[43,28,25,17,5,10,13]。在推理过程中,妥协模型(Compromised model)在良性样本上表现良好,但在具有触发器的恶意样本上可能出现错误行为。
实现后门攻击最常见的方法是数据中毒,攻击者通过破坏某些训练样本来嵌入后门。成功后门攻击的一个关键标准是中毒样本的比例。从对抗的角度来看,我们希望在保持相同攻击成功率(ASR)的情况下投毒尽可能少的样本,原因有两个:(1)较小的投毒率可以增强攻击的可行性。攻击者只需要破坏一小部分训练数据,因此攻击要求放宽了。(2)中毒样本较少的后门攻击将更加隐蔽。许多工作通过调查训练样本提出了后门检测解决方案[7,15,29,35,38,34,18]。较小的投毒率会显著增加检测难度,降低防御效能。
大多数后门攻击随机选择固定比例的训练样本进行投毒,该比例是启发式确定的[12,16,21,41,24]。这种策略不是最优的,因为它忽略了不同样本对后门贡献的区别。 为了克服这一局限性,最近的一项工作[40]提出了一种新的方法——遗忘评分来优化中毒样本的选择过程。以模型训练过程中每个样本遗忘事件的频率作为得分,表示每个样本对后门注入的重要性。然后,在N个完整的训练周期内,通过过滤和更新策略(FUS)过滤出得分较高的样本;与随机选择策略相比,遗忘分数可以有效降低中毒率25 ~ 50%,同时达到相近的ASR。验证了不同样本对攻击性能的不同影响。
遗忘分数可以提高数据效率,但以计算效率低为代价。 具体来说,它根据经验计算每个样本在训练期间被遗忘的次数,以定位对中毒贡献更大的关键样本。遗忘分数的计算需要多个完整的训练周期([40]中的ImageNet-10的N = 10)来减少中毒样本的数量,这引入了大量的工作,对于攻击大规模数据集是不切实际的。因此,一个有趣的问题出现了:是否可能在后门中毒中同时实现数据效率和计算效率,即毫不费力和精确地识别关键中毒样本?
本文提出了一种新的攻击方法来验证上述问题。我们的贡献是双重的。提出了表示距离(RD)分数,一种新的触发无关和结构无关的度量,以识别对后门攻击成功更关键的中毒样本。具体来说,我们的目标是定位那些与目标类有较大距离的中毒样本,因为它们将在训练期间对重塑决策边界的形成做出更多贡献(后门嵌入)。通过采用该RD分数,我们可以过滤掉对后门感染不敏感的中毒样本,以降低中毒率。其次,RD分数可以在模型训练的早期阶段(即训练开始后的几个epoch)使用贪婪搜索方案来选择中毒样本。与遗忘分数相比,这显著减少了计算量。
我们在5个最先进的模型和4个常见的数据集上进行了广泛的实验,用于2D图像和3D点云分类任务。评估表明,我们的解决方案可以有效地减少毒化样本的数量,从而成功地进行后门攻击。最重要的是,与基于遗忘分数的方法相比,我们的解决方案可以使用得分模型找出重要的有毒样本,只需要几次训练,与基于遗忘分数的方法相比,这是一个很小的成本。因为后者需要经过整个培训过程才能达到同样的目标。
3.主要图表

图1. 对我们洞察力的直观解释。左图显示的是一个干净的模型,没有任何后门。在中间的图中,当样本被下毒时,越靠近决策边界的样本对后门的影响越小。在右图中,当选择样本进行投毒时,远离决策边界的样本可能会给模型带来更显著的变化。

图2. 我们方法论的工作流程。

图3. 干净和有毒样本的例子。

表1. 搜索的预算。

图4. 三种方法在CIFAR-10上的ASR。我们对基于分数的选择策略重复实验3次,对随机选择策略重复实验10次。我们设置α为0.3,N为10。RD评分模型的epochs为6,遗忘分数模型的epochs设置为50。

图5.三种方法在ImageNet-10上的ASR。我们对基于分数的选择策略和随机选择策略分别重复实验3次和5次。我们设置α为0.3,N为10。RD评分模型的epochs为6,遗忘分数模型的epochs设置为30。

图6. 三种方法在三维点云分类任务上的ASR。评分法重复实验3次,随机法重复实验5次。在对两种评分方法进行贪婪搜索时,我们将迭代时间N减少到7。对于ScanObject,我们将训练epoch设置为75,学习率设置为0.01。

表2. 训练过程中超参数黑箱设置下的ASR(%)。利用CIFAR-10数据集在ResNet18模型上进行了实验。我们训练了6个epoch的评分模型,并将迭代次数和过滤比率分别设置为10。Adam中的其他参数与其PyTorch实现保持一致。对于后门模型,我们将其训练设置固定为使用SGD作为优化器,0.05作为学习率,128作为批大小。

图7. 各种模型和任务的ASR和Accuracy。所有的ASR都是使用我们在实验中使用的最高中毒比的RD分数获得的,即CIFAR10的0.0017,ImageNet-10的0.0095,ModelNet40的0.01,ScanObject的0.09。在上述比率下,后门的ASR趋于稳定。

图8. 贪心搜索中α值变化时,不同毒比下RD评分的ASR。每个实验我们重复三次。在所有的实验中,我们将N设置为10,将评分模型的epochs设置为6。
图9. 贪婪搜索中迭代时间N变化时,不同毒比下RD评分的ASR。每个实验我们重复三次。在所有的实验中,我们将评分模型的epochs设置为6。

图10. 评分模型的训练时间对两种方法的影响。所有实验都在CIFAR-10, ResNet18上使用0.001的中毒比进行。

图11. 遗忘分数和RD分数的ASR。我们使用ResNet18作为受害者模型,并将评分模型的架构改为MobileNet和VGG16。
4.结论
在本文中,我们提出了一个新的分数,通过评估给定中毒样本对目标类的L2范数来衡量中毒样本对后门学习过程的贡献。通过过滤掉得分较低的样本,我们的方法获得了比随机选择策略更好的后门ASR。我们在各种数据集和模型架构上进行了广泛的实验,以显示与先前工作相比,我们的方法的通用性和可移植性。
对于未来的工作,我们认为虽然RD分数具有很高的适应不同任务的能力,但其在某些场景中的有效性尚未得到充分的研究。在未来,我们希望将我们的研究兴趣转向两个方向。首先,对于像目标检测这样的高级任务[33],评分机制应该处理以下独特的挑战:(1)多任务,如目标定位和分类,如何通过同时采取这些方面来减少有毒预算是一个关键问题;(2)多实例,如一个样本可能包含多个对象,在设计评分方法时,如何衡量给定中毒样本的重要性使问题变得更加复杂。其次,对自然语言生成等非分类任务的中毒效率研究较少[9]。搜索方法需要满足多种损失函数。因此,调整类似的方法来选择重要的毒物样本可能是具有挑战性的。
相关文章:
【论文阅读】ICCV 2023 计算和数据高效后门攻击
文章目录 一.论文信息二.论文内容1.摘要2.引言3.主要图表4.结论 一.论文信息 论文题目: Computation and Data Efficient Backdoor Attacks(计算和数据高效后门攻击) 论文来源: 2023-ICCV(CCF-A) 论文团…...
JavaAPI常用类03
目录 java.lang.Math Math类 代码 运行 Random类 代码 运行 Date类/Calendar类/ SimpleDateFormat类 Date类 代码 运行 Calendar类 代码 运行 SimpleDateFormat类 代码一 运行 常用的转换符 代码二 运行 java.math BigInteger 代码 运行 BigDecimal …...
SpringBoot/Java中OCR实现,集成Tess4J实现图片文字识别
场景 Tesseract Tesseract是一个开源的光学字符识别(OCR)引擎,它可以将图像中的文字转换为计算机可读的文本。 支持多种语言和书面语言,并且可以在命令行中执行。它是一个流行的开源OCR工具,可以在许多不同的操作系…...
【深度学习目标检测】十九、基于深度学习的芒果计数分割系统-含数据集、GUI和源码(python,yolov8)
使用深度学习算法检测芒果具有显著的优势和应用价值。以下是几个主要原因: 特征学习的能力:深度学习,特别是卷积神经网络(CNN),能够从大量的芒果图像中自动学习和提取特征。这些特征可能是传统方法难以手动…...
骑砍战团MOD开发(48)-多人联机模式开发环境搭建
一.多人联机模式网络拓扑图 <1.局域网网络拓扑图 <2.互联网网络拓扑图 二.多人联机模式配置 MOD目录下module.ini修改配置项 has_multiplayer 1 has_single_player 1 三.服务端创建 引擎内置presentation页面: prsnt_game_multiplayer_admin_panel start_multi…...
Java+SpringBoot+Vue+MySQL:美食推荐系统的技术革新
✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…...
【服务发现--ingress】
1、ingress介绍 Ingress 提供从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源所定义的规则来控制。 Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP。 Ingress 可以提供负载均衡、SSL 终结和基于名称的虚拟…...
Yolov8有效涨点:YOLOv8-AM,添加多种注意力模块提高检测精度,含代码,超详细
前言 2023 年,Ultralytics 推出了最新版本的 YOLO 模型。注意力机制是提高模型性能最热门的方法之一。 本次介绍的是YOLOv8-AM,它将注意力机制融入到原始的YOLOv8架构中。具体来说,我们分别采用四个注意力模块:卷积块注意力模块…...
苹果分拣检测YOLOV8NANO
苹果分拣,可以检测成熟、切片、损坏、不成熟四种类型,YOLOV8NANO,训练得到PT模型,然后转换成ONNX,OPENCV的DNN调用,支持C,PYTHON 苹果分拣检测YOLOV8NANO,检测四种类型苹果...
使用 Verilog 做一个可编程数字延迟定时器 LS7211-7212
今天的项目是在 Verilog HDL 中实现可编程数字延迟定时器。完整呈现了延迟定时器的 Verilog 代码。 所实现的数字延迟定时器是 CMOS IC LS7212,用于生成可编程延迟。延迟定时器的规格可以在这里轻松找到。基本上,延迟定时器有 4 种操作模式:…...
戏说c语言文章汇总
c语言的起源GNU C和标准C第一篇: hello c!第二篇: 为什么需要编译第三篇: 当你运行./a.out时,发生了什么?第四篇: 简单的加法器第五篇: 两个正数相加竟然变成了负数!第六篇: 西西弗斯推石头(循环)第七篇: 九九乘法表(双循环)第八篇: 如果上天…...
面试redis篇-12Redis集群方案-分片集群
原理 主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决: 海量数据存储问题高并发写的问题 使用分片集群可以解决上述问题,分片集群特征: 集群中有多个master,每个master保存不同数据每个master都可以有…...
【Java EE初阶二十三】servlet的简单理解
1. 初识servlet Servlet 是一个比较古老的编写网站的方式,早起Java 编写网站,主要使用 Servlet 的方式,后来 Java 中产生了一个Spring(一套框架),Spring 又是针对 Servlet 进行了进一步封装,从而让我们编写网站变的更简单了;Sprin…...
c++ http操作接口
很简单的使用libcurl来操作http与服务器来通讯,包含http与https,对外只开放 #include "request.h" #include "response.h" #include "url.h" 三个头文件,简单易用,使用的实例如下: vo…...
oracle官网下载早期jdk版本
Java Downloads | Oracle JDK Builds from Oracle 以上压缩版,以下安装版 Java Downloads | Oracle 该链接往下拉能看到jdk8和jdk11的安装版 -- end...
Python爬虫实战:图片爬取与保存
引言: 在本文中,我们将学习如何使用Python创建一个简单的图片爬虫。 我们将利用requests库来发送HTTP请求,BeautifulSoup库来解析HTML页面,以及os和shutil库来下载和保存图片。通过这个教程,你将学会如何爬取网…...
CMS垃圾回收器
CMS垃圾回收 CMS GC的官方名称为“Mostly Concurrenct Mark and Sweep Garbage Collector”(最大-并发-标记-清除-垃圾收集器)。 作用范围: 老年代 算法: 并发标记清除算法。 启用参数:-XX:UseConMarkSweepGC 默认回收…...
【力扣白嫖日记】184.部门工资最高的员工
前言 练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。 今日题目: 184.部门工资最高的员工 表:Employee 列名类型idintnamevarcharsalaryvarchardepartmentIdint …...
JAVA讲解算法-排序算法-选择排序算法-02
一、定义 选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素&a…...
【初始RabbitMQ】高级发布确认的实现
在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败, 导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢? …...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
