DeepFool对抗算法_学习笔记

2023-05-16

前言

本篇博客出于学习交流目的,主要是用来记录自己学习中遇到的问题和心路历程,方便之后回顾。过程中可能引用其他大牛的博客,文末会给出相应链接,侵删!


DeepFool算法
特点:提出鲁棒性评估指标
论文原文:DeepFool: a simple and accurate method to fool deep neural networks

正文

之前的博客讲了FGSM算法,但是有人可能会有疑问,怎么确定 ε ε 的大小,取值大小这会对算法效果产生很大影响,那么今天的这个算法可以避免这个问题。
文章首次提出了一个分类器鲁棒性的评估指标:
图像样本: x x xRn
分类器: k^(x) k ^ ( x )
对抗扰动: r r
分类器在x处的鲁棒性 Δ(x;k^) Δ ( x ; k ^ )

Δ(x;k^):=minr||r||2  s.t.k^(x+r)k^(x) Δ ( x ; k ^ ) := min r | | r | | 2     s . t . k ^ ( x + r ) ≠ k ^ ( x )
即x到分类边界的距离,下文会更详细理解。

分类器 k^(x) k ^ ( x ) 的鲁棒性:

ρadv(k^)=ExΔ(x;k^)||x||2 ρ a d v ( k ^ ) = E x Δ ( x ; k ^ ) | | x | | 2

样本离分类边界越远,样本2范数越小,评测数值越大表示越鲁棒。


我们先从二分类器看,多分类器可以看做是多个二分类器的共同作用。
二分类问题
二分类器: k^(x)=sign(wTx+b):=sign(f(x)) k ^ ( x ) = s i g n ( w T x + b ) := s i g n ( f ( x ) )
图为sign()函数

分类边界: F={x:f(x)=0} F = { x : f ( x ) = 0 } ,分界线两边分别为正负类
扰动向量:
r(x0):=argminr||r||2 r ⋆ ( x 0 ) := arg ⁡ min r | | r | | 2
s.t. sign(f(x0+r))sign(f(x0)) s . t .   s i g n ( f ( x 0 + r ) ) ≠ s i g n ( f ( x 0 ) )
=f(x0)||w||22w = − f ( x 0 ) | | w | | 2 2 w

借助原文中的图例来看公式可以很好理解

其实这个公式可以理解为样本到分类边界的最短距离 f(x0)w2 f ( x 0 ) ‖ w ‖ 2 乘上法线方向的单位向量 ww2 w ‖ w ‖ 2 ,因为始终指向分类边界方向,所以有个负号。

这里写图片描述

如果是迭代算法,那么扰动计算公式将变为:

argriminri2 subject to f(xi)+f(xi)Tri=0 a r g r i m i n ‖ r i ‖ 2   s u b j e c t   t o   f ( x i ) + ▽ f ( x i ) T r i = 0

多分类问题
类标数: c c ,即映射空间RnRc
分类函数: f(x)=WTx+b f ( x ) = W T x + b
分类器: k^(x)=argmaxkfk(x) k ^ ( x ) = arg ⁡ max k f k ( x ) fk(x) f k ( x ) 是向量 f(x) f ( x ) 的第 k k 个维度,也可看做是第k个子分类器。
扰动向量:
argminr||r||2 arg ⁡ min r | | r | | 2
s.t.k:wTk(x0+r)+bkwTk^(x0)(x0+r)+bk^(x0) s . t . ∃ k : w k T ( x 0 + r ) + b k ≥ w k ^ ( x 0 ) T ( x 0 + r ) + b k ^ ( x 0 )
其中 wk w k W W 的第 k k 列,即第k个子分类器的权值向量。
要使得分类结果改变,必须保证至少存在一个非原始类标的分类器结果大于原始分类函数结果。
k k 个分类边界:Fk={x:fk(x)fk^(x0)(x)=0}
x0 x 0 与所在的凸区域可由超平面 P P 围成:

P=k=1c{x:fk^(x0)(x)fk(x)}

这时候我们需要得到一个点到某分类函数边界的最小距离,即:

l^(x0)=argminkk^(x0)|fk(x0)fk^(x0)(x0)|||wkwk^(x0)||2 l ^ ( x 0 ) = arg ⁡ min k ≠ k ^ ( x 0 ) | f k ( x 0 ) − f k ^ ( x 0 ) ( x 0 ) | | | w k − w k ^ ( x 0 ) | | 2

同样用原文的图来帮助理解:

假设有4个类, x0 x 0 属于原本第4类,那么我们可以根据 Fk={x:fk(x)f4(x)=0} F k = { x : f k ( x ) − f 4 ( x ) = 0 } 确定一个超平面如图绿线围成。然后计算分别距离各个分类器的最小距离。

那么我们就得到最小扰动 r(x0) r ⋆ ( x 0 )

r(x0)=|fl^(x0)(x0)fk^(x0)(x0)|||wl^(x0)wk^(x0)||22(wl^(x0)wk^(x0)) r ⋆ ( x 0 ) = | f l ^ ( x 0 ) ( x 0 ) − f k ^ ( x 0 ) ( x 0 ) | | | w l ^ ( x 0 ) − w k ^ ( x 0 ) | | 2 2 ( w l ^ ( x 0 ) − w k ^ ( x 0 ) )

如果是迭代则公式变为如下:
P=k=1c{x:fk(xi)fk^(x0)(xi)+fk(xi)xfk^(x0)(xi)x0} P = ⋂ k = 1 c { x : f k ( x i ) − f k ^ ( x 0 ) ( x i ) + ▽ f k ( x i ) ⊤ x − ▽ f k ^ ( x 0 ) ( x i ) ⊤ x ≤ 0 }

小结

由线性推广到非线性也一样,文章还给出了由2范数推广到 lp l p 范数,以及和FGSM算法的实验对比,有兴趣的可以详细看原文。

代码

在cleverhans团队给的demo上修改了一下,可以下载运行mnist数据集进行测试,如果想测试其他数据集或者有任何问题,我们都可以随时探讨。在原库中有些bug或者版本兼容问题已经修改,utils_tf.py中训练是可能会遇到shape不匹配问题。将输入reshape一下就可以了。
下载地址:DeepFool对抗算法
注:依赖cleverhans集成库,或是我资源中的FGSM算法也可以。
cleverhans_github地址:https://github.com/tensorflow/cleverhans

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DeepFool对抗算法_学习笔记 的相关文章

  • CKS32F103C8T6最小系统板调试记录——SWD下载

    cks32f103是国产芯片 xff0c 由中科芯研发 xff0c 比起ST公司F103多了一个刹车功能 它有keil的器件安装包 xff0c 支持keil的开发 器件安装包链接 xff1a 链接 百度网盘链接 提取码 xff1a 0xyu
  • React useEvent:砖家说的没问题

    之前写了一篇文章 React Hooks 使用误区 xff0c 驳官方文档 1 xff0c 文中抛出了两个观点 xff1a 不是所有的依赖都必须放到依赖数组中deps 参数不能缓解闭包问题 这两个观点引起了剧烈的讨论 xff0c 当然大多数
  • Disabled PicPipeline: ImagesPipeline requires installing Pillow 4.0.0 or later

    目录 一 scrapy是什么 二 问题以及原因 三 解决办法 1 确保系统已经安装了 Pillow 库 2 安装 Pillow 库 3 在项目根目录中添加 Pillow 的 pth 文件 一 scrapy是什么 Scrapy是一个用于从网站
  • ERROR 1129 (HY000): Host ‘192.168.0.1‘ is blocked because of many connection errors; unblock with ‘m

    MySql远程链接报错 问题 xff1a mysql u root h 192 168 0 1 p Enter password ERROR 1129 HY000 Host 39 192 168 0 1 39 is blocked beca
  • JVM虚拟机详解

    一 JVM简介 JVM是Java Virtual Machine Java虚拟机 的缩写 简单来说JVM是用来解析和运行Java程序的 虚拟机是一种抽象化的计算机 通过在实际的计算机上仿真模拟各种计算机功能来实现的 Java虚拟机有自己完善
  • 云计算OpenStack详解

    一 OpenStack简介 1 OpenStack发展历程 2002年 美国著名的电商公司亚马逊 Amazon 干了一件 不务正业 的事 他们向客户推出了一项全新的业务 包括存储空间 计算能力等资源服务的Web nbsp Service 这
  • Linux虚拟化网络之vlan配置

    问题描述 Linux主机划分两个vlan 服务器server1的物理网卡的IP地址为1 1 1 1 24 服务器server2的物理网卡的IP地址为1 1 1 2 24 物理网卡下要虚拟化出来两个Vlan子接口 vlan10中主机的IP地址
  • 部署SDN控制器对接OVS网元实现转控分离实战 附ODL控制器

    1 云计算对网络的需求 1 多租户网络隔离 云中包含多个租户 不同租户可以自己设计自己的内部网络 172 16 0 0 10 0 0 192 168 0 存在安全隐患 要让不同租户网络要分隔开 nbsp 不同租户的网络需要互相二层隔离 三层
  • Python 数据采集、清洗、整理、分析以及可视化实战

    一 数据分析思路 大概可以分为下面这几个步骤 数据采集 原始数据完整性检查 数据清洗 整理 从不同角度对数据进行分析 数据可视化 总结 主要使用 Python 来进行分析 数据采集 主要涉及的 python 库包括 requests Bea
  • ERROR: torch-1.6.0+cu101-cp37-cp37m-win_amd64.whl is not a supported wheel on this platform.

    目的 xff1a 使用混合精度训练模型 方法 xff1a 最新版pytorch1 6已封装进混合量化的模块 xff0c 只需几句代码就可以提高batch size 速度会有非常大的提升 安装pytorch xff1a pip install
  • Clash开启系统代理System proxy后无效,无流量

    在注册表目录 xff1a HKEY LOCAL MACHINE SOFTWARE Policies Microsoft Windows CurrentVersion Internet Settings 设置ProxySettingsPerU
  • Proximal Policy Optimization(PPO)算法原理及实现!

    Proximal Policy Optimization PPO 算法原理及实现 xff01 这两天看了一下李宏毅老师的强化学习课程的前两讲 xff0c 主要介绍了Policy Gradient算法和Proximal Policy Opti
  • 树莓派4b ubuntu 20 设置阿里源

    前言 设置国内源其实很简单 xff0c 但是由于我是下载的 64位 操作系统 xff0c 并且树莓派是arm架构 xff0c 所以有一点不同 执行 lsb release a 查看发行版本 ubuntu 64 ubuntu etc netp
  • CAS登录流程

    访问 http localhost analysis 请求会被ngixn如下配置拦截 location analysis root D work dist index index html index htm try files uri u
  • 解决centos7 sshd端口修改后,重启服务器sshd无法连接的问题

    针对centos7的变化 xff0c 修改sshd端口需要修改 etc ssh sshd config selinux 防火墙 1 修改 etc ssh sshd config 执行命令 xff1a vi etc ssh sshd conf
  • osmWebWizard.py: error: typemap file “E:\SUMO\tools\data\typemap\osmPolyconvert.typ.xml“ not found

    在使用sumo的时候 xff0c 根据官方文档 xff08 OSMWebWizard SUMO Documentation dlr de xff09 显示 xff0c 在tools目录下使用python osmWebWizard py 来生
  • 内核与驱动_08_键盘驱动原理及代码

    文章目录 技术原理Windows中从击键到内核流程 键盘硬件原理键盘过滤的框架搭建应用设备扩展键盘过滤模块的动态卸载键盘过滤的请求处理通常的处理 PNP的处理读的处理读完成的处理从请求中打印出按键信息从缓冲区中获得KEYBOARD INPU
  • LCD 12864B V2.0的使用

    内置ST7920控制器和中文字库的LCD12864的使用 前言 大家好 xff0c 我是小灬贱 今天我给大家带来LCD12864的使用方法以及我的一些经验 文章里面如有不妥之处或者表达不清晰的地方还请各位多多指教 可以在文下评论或者私信我
  • Unity:内存管理、GC优化

    目录 一 GC简介 1 堆内存分配和回收机制 2 垃圾回收时的操作 3 何时会触发垃圾回收 xff1f 4 GC操作带来的问题 二 GC优化 1 降低GC影响的方法 2 减少内存垃圾的数量 3 造成不必要的堆内存分配的因素 1 字符串 2
  • C# 常用的文件IO操作

    目录 一 IO流 1 文件夹操作 Directory类 2 文件操作 File类 3 路径操作 Path类 4 读取文件 StreamReader类 5 写入文件 StreamWriter类 二 动态链接库kernel32 1 写入文件 2

随机推荐

  • OutLine源码解析 -- 为什么要尽量避免使用OutLine

    相信很多人在刚入职Unity的时候都被告诫过尽量避免使用OutLine xff0c 只知道它很费性能 xff0c 但是很多人并不知道它为什么很费性能 今天通过源码来探索一下 首先看一下OutLine cs里的源码 public overri
  • Lua高级应用

    一 lua数据结构及内存占用分析 1 基础数据结构 lua的基本数据表示是type 43 union 的方式 xff0c 根据不同类型映射到union的不同结构上面 xff0c 统一的表示结构lua TValue xff1a typedef
  • VirtualBox虚拟机安装CentOS7.6后无法ssh远程连接虚拟机

    问题如题所述 安装完 xff0c 一般都是使用ip addr查看虚拟机IP后通过远程工具来尝试连接 虚拟机IP 然后会发现通过此IP无法连接 解决办法 xff1a 修改VirtualBox的网络配置 1 查看VirtualBox对应网卡的I
  • UGUI实现text渐变色(通过自定义富文本标记实现)

    之前分享过一个通过添加组件实现渐变色的文章 xff0c 但是通过组件实现有一个弊端 xff0c 他只能设置整个文本渐变 xff0c 不能只设置一段文字渐变 今天分享一个通过正则匹配自定义的富文本标记来实现渐变色的方法 xff0c 这样的好处
  • 如何实现自定义绘制Winform的TreeView并且实现多选

    自定义绘制背景 xff0c 节点字体 xff0c 树节点后面加按钮 xff0c 自定义展开节点样式 效果如下 xff1a 同时选中节点5和节点6下的Tree 先设置TreeView的DrawMode 61 System Windows Fo
  • RSTP协议原理与配置整——STP的不足

    STP协议虽然能够解决环路问题 xff0c 但是由于网络拓扑收敛较慢 xff0c 影响了用户通信质量 xff0c 而且如果网络中的拓扑结构频繁变化 xff0c 网络也会随之频繁失去连通性 xff0c 从而导致用户通信频繁中断 xff0c 这
  • 双重加锁单例模式剖析

    话不多说 xff0c 首先上代码 xff01 xff01 xff01 span class token keyword public span span class token keyword class span span class t
  • Mybatis plus 批量插入MetaObjectHandler无法生效问题

    目录 1 溯源 2 孽缘 3 发现 4 尝试 5 结果 6 吐槽 1 溯源 3年前当时Mybatis plus还没有那么火爆的时候 xff0c 当时在创业公司是遇到了 Mybatis plus xff0c 因为baseMapper也没有集成
  • springKafka 重试解决分布式事务

    目录 1 背景 1 1 名词解释 1 2 业务场景 1 3 kafka消息的优点和缺点 1 4 kafka客户端重试框架 2 使用 2 1 引入pom依赖 2 2 定义重试消息 xff0c 死信队列 2 3 业务执行异常处理 3 代码分析
  • 库存系统通用模型

    1 库存模型设计 一般通用库存模块包括 名称备注 基础数据模块 仓库 xff0c 物料 xff0c 等基础信息入库单据单据出库单据单据出入库流水记录 xff0c 锁帐等报表查询的一些信息库存核心库存数量 2 库存模型 3 模型详细介绍 这个
  • 【Linux命令学习4】查询文件内容的五个命令:☆cat、☆more、less、head、tail

    以root 用户家目录下的anaconda ks cfg文件做演示 以下命令都是在 root 64 localhost root超级用户家目录下运行 值得知道的翻页命令 按键功能enter 回车键 向下一行space 空格 向下一页b向上一
  • 关于windows无法启动VMware USB Arbitration Service 错误2 问题解决

    关于windows无法启动VMware USB Arbitration Service 错误2 问题解决 控制面板 gt 卸载程序 gt 右击VMware Workstation gt 更改 gt 下一步 gt 修复 等待修复完成重启即可
  • 场景识别论文阅读感想(初步)

    近日阅读了一篇cvpr上2016年关于场景识别的论文 xff0c 写了如下感想 The Cityscapes Dataset for Semantic Urban Scene Understanding 阅读感想 1 概述 对于城市道路的环
  • 一款能生成NC文件(雕刻路径文件)的 inkscape ,想必很多人都找不到能用的

    xfeff xfeff 点击链接加入群聊 雕刻机技术营 xff1a https jq qq com wv 61 1027 amp k 61 5c6j991 下载链接 https pan baidu com s 1IQ9A6CmcgVxxKL
  • 多目标优化_学习笔记(一)

    前言 本篇博客出于学习交流目的 xff0c 主要是用来记录自己学习多目标优化中遇到的问题和心路历程 xff0c 方便之后回顾 过程中可能引用其他大牛的博客 xff0c 文末会给出相应链接 xff0c 侵删 xff01 REMARK xff1
  • 多目标优化_学习笔记(二)NSGA-II

    前言 本篇博客出于学习交流目的 xff0c 主要是用来记录自己学习多目标优化中遇到的问题和心路历程 xff0c 方便之后回顾 过程中可能引用其他大牛的博客 xff0c 文末会给出相应链接 xff0c 侵删 xff01 REMARK xff1
  • 多目标优化_学习笔记(三)MOEA/D

    前言 本篇博客出于学习交流目的 xff0c 主要是用来记录自己学习多目标优化中遇到的问题和心路历程 xff0c 方便之后回顾 过程中可能引用其他大牛的博客 xff0c 文末会给出相应链接 xff0c 侵删 xff01 REMARK xff1
  • VNCViewer实现与WIN端文本复制粘贴

    主机系统 xff1a Win10 View端系统 xff1a Ubuntu 16 04 VNCViewer xff1a 6 17 今天踩的第二个坑 xff0c 主要还是因为懒 xff0c 有时候懒得打那么多字 xff0c 就想着和虚拟机一用
  • FGSM(Fast Gradient Sign Method)_学习笔记+代码实现

    前言 本篇博客出于学习交流目的 xff0c 主要是用来记录自己学习中遇到的问题和心路历程 xff0c 方便之后回顾 过程中可能引用其他大牛的博客 xff0c 文末会给出相应链接 xff0c 侵删 xff01 FGSM xff08 Fast
  • DeepFool对抗算法_学习笔记

    前言 本篇博客出于学习交流目的 xff0c 主要是用来记录自己学习中遇到的问题和心路历程 xff0c 方便之后回顾 过程中可能引用其他大牛的博客 xff0c 文末会给出相应链接 xff0c 侵删 xff01 DeepFool算法 特点 xf