A New Defense Against Adversarial Images: Turning a Weakness into a Strength

2023-10-23 13:30

本文主要是介绍A New Defense Against Adversarial Images: Turning a Weakness into a Strength,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 主要内容
      • 准则1
      • 准则2
      • 总策略

Hu S, Yu T, Guo C, et al. A New Defense Against Adversarial Images: Turning a Weakness into a Strength[C]. neural information processing systems, 2019: 1633-1644.

@article{hu2019a,
title={A New Defense Against Adversarial Images: Turning a Weakness into a Strength},
author={Hu, Shengyuan and Yu, Tao and Guo, Chuan and Chao, Weilun and Weinberger, Kilian Q},
pages={1633–1644},
year={2019}}

代码.

本文介绍了一种检测是否为adversarial sample的defense.

主要内容

准则1

一般的CNN网络, 抗干扰(随机噪声)的能力是很强的, 这说明, 数据分布应当是如下图一样, x x x(其类别为 A A A) 的周围的点大部分类别仍为 A A A, 落入 B , C , D B,C,D B,C,D需要一些更强的干扰(如gradient-based adversaries).
在这里插入图片描述
这启发了作者, 采样 ϵ ∼ N ( 0 , σ 2 I ) \epsilon \sim \mathcal{N}(0, \sigma^2I) ϵN(0,σ2I), 比较
Δ = ∥ h ( x ) − h ( x + ϵ ) ∥ 1 , \Delta = \| h(\mathbf{x}) - h(\mathbf{x}+\epsilon)\|_1, Δ=h(x)h(x+ϵ)1,
其中 h ( ⋅ ) h(\cdot) h()为网络, 其输出为概率向量, 显然 Δ \Delta Δ越大, 说明 x x x对随机噪声的抗干扰能力不强, 说明 x x x越有可能是adversarial sample.

准则2

同样如上图, 可以发现, 普通的样本往往落在分类边界周围, 所以利用adversaries 可以很容易(表现为迭代次数少)就能将其转移到另外的类别区域中去, 相反的, adversarial samples往往落在分类区域内部, 所以如果我们将adversarial samples移动到别的区域是不容易的(表现为需要更多的迭代次数).

所以, 假设将 x x x移动到别的区域内的最少迭代次数为 K K K, K K K越大越有可能是adversarial samples. 由于攻击分为untarget, target所以, 所以作者也将准则2细分为C2(t/u)

总策略

有了 ( Δ , K t , K u ) (\Delta,K_t,K_u) (Δ,Kt,Ku), 当其中任何一个大于(分别) ( t C 1 , t C 2 t , t C 2 u ) (t_{C1}, t_{C2t},t_{C2u}) (tC1,tC2t,tC2u)时, 我们就认为 x x x是一个adversarial sample, 其中 ( t C 1 , t C 2 t , t C 2 u ) (t_{C1}, t_{C2t},t_{C2u}) (tC1,tC2t,tC2u)是认为设置的阈值.

注: 这俩个直觉还是挺有趣的, 只是感觉很难实用, 毕竟这些指标不仅是依赖于网络本身, 对干净数据也是一个挑战.

这篇关于A New Defense Against Adversarial Images: Turning a Weakness into a Strength的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/268143

相关文章

Golan中 new() 、 make() 和简短声明符的区别和使用

《Golan中new()、make()和简短声明符的区别和使用》Go语言中的new()、make()和简短声明符的区别和使用,new()用于分配内存并返回指针,make()用于初始化切片、映射... 详细介绍golang的new() 、 make() 和简短声明符的区别和使用。文章目录 `new()`

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

List list = new ArrayList();和ArrayList list=new ArrayList();的区别?

List是一个接口,而ArrayList 是一个类。 ArrayList 继承并实现了List。 List list = new ArrayList();这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不能再用了。而ArrayList list=new ArrayList();创建一对象则保留了A

深度学习--对抗生成网络(GAN, Generative Adversarial Network)

对抗生成网络(GAN, Generative Adversarial Network)是一种深度学习模型,由Ian Goodfellow等人在2014年提出。GAN主要用于生成数据,通过两个神经网络相互对抗,来生成以假乱真的新数据。以下是对GAN的详细阐述,包括其概念、作用、核心要点、实现过程、代码实现和适用场景。 1. 概念 GAN由两个神经网络组成:生成器(Generator)和判别器(D

vue原理分析(六)--研究new Vue()

今天我们来分析使用new Vue() 之前研究时,只是说是在创建一个实例。并没有深入进行研究 在vue的源码中找下Vue的构造函数 function Vue(options) {if (!(this instanceof Vue)) {warn$2('Vue is a constructor and should be called with the `new` keyword');}thi

GTK中创建线程函数g_thread_new和g_thread_create的区别

使用GThread函数,需要引用glib.h头文件。 这两个接口的核心区别就是  g_thread_create 是旧的接口,现在已经不使用了,而g_thread_new是新的接口,建议使用。 g_thread_create: g_thread_create has been deprecated since version 2.32 and should not be used in n

New的VC编译器实现

当我们调用 new 的时候,例如 int *p = new int; 时,编译器到底作了什么工作呢?跟进断点看一看。   (在 vc debug模式下 ) double *p1 = new double ; 00411A6E  push        8    00411A70  call        operator new (4111B8h) 00411A75  add

Python方法:__init__,__new__,__class__的使用详解

转自:https://blog.csdn.net/qq_26442553/article/details/82464682 因为python中所有类默认继承object类。而object类提供了了很多原始的内建属性和方法,所以用户自定义的类在Python中也会继承这些内建属性。可以使用dir()函数可以查看,虽然python提供了很多内建属性但实际开发中常用的不多。而很多系统提供的内建属性实际