技术标签: Adversarial Machine Learning Deep Learning
最近关注Adversarial Machine Learning(AML),觉得这个方向挺有意思,看了几个AML中的经典算法,有点小的理解写下来加深记忆。由于第一次写程序员宅基地,有错误的地方欢迎指出,共同讨论,而且比较懒,有些解释的图是画得不好,要耐心看。
在我看来,AML(Adversarial Machine Learning)最终的研究目的和传统的安全领域一样,还是提高整个系统的稳定性。文献【1】中较早的指出Neural Netwroks(NN) 对刻意设计的攻击样本很敏感,并提出了一种攻击方法L-BFGS,并且文章指出针对NN的adversarial sample (AS)之所以存在归因于NN的结构复杂性。不过,我觉得FGSM,DeepFool中的角度可能更make sense。
之所以把这两个方法放在一起分析是因为在我看来它们都是基于同一种假设条件下进行的,即分类器的决策函数都是局部可线性逼近线性的,或者说分类都是很平滑的。也就是说,如果在决策函数的某一个点做taylor展开的话,该点的切平面和与决策函数在该点的某一邻域内是大致相似的,如图1,在二维sigmoid函数在红点处的切平面在该点处的附近与函数本身是很相似的。事实上文献【3】中也指出了现有的Deep Networks 为了训练的方便,都会选择比较线性的激活函数,或者说局部曲率很低的激活函数,如Sigmoid,Rulu等。而FGSM(Fast Gradient Sign Method)和 DeepFool 正是在这样的先验假设下展开的。下面分别分析一下两种方法。
图1
FGSM
在最开始对传统的分类器做攻击时候,大家的motivation都是差不多的。借用文献【2】中提出的Taxonomy概念,攻击场景(Attack Scenario)中的一个重要组成部分就是攻击策略(Attack strategy)。说白了,就是要怎样去model这个攻击场景。由于大多数分类器都是通过最大化分类器在训练集上的预测概率,或者最小化预测值与标签的loss来构建优化模型的目标函数,所以一个自然的想法就是通过对一个clean样本 x(legal sample)加上一个扰动 η 来使得分类器的预测概率发生改变,或者让loss的值尽可能的大,即f(x)≠f(x+r),或 max_{ η} loss(x+η),同时扰动本身要限制在一个人眼无法察觉,或者说对legal sample不产生较大破坏。因此通常会对r 施加范数的限制 (不同的范数有不同的效果),即 ||η||<ε. FGSM【3】采用最大化损失函数的方式生产扰动。显然,扰动发生在梯度方向是最有效的,而FGSM中的一个合理的假设在于,现有的图像数据的存储方式都是离散的,因此对于一个在同一方向的ε扰动是不会对视觉产生较大影响的。因此,FGSM通过在legal sample x 的梯度方向平移ε的量级来得到扰动η。于是, 最终的攻击样本(AS) attack_x=x+η,这刚好等价于对扰动施加无穷范数限制,文章中通过线下模型说明了这一点。综上,可以理解FGSM中的如下公式了,
其中,sign(▽J) 刚好描述了x 点处loss函数的梯度方向,ε为在该方向上的偏移量级。直观地,我们从图1可以看出,当x (红点)朝着梯度方向(红线)移动时,此时sigmoid为激活函数的分类器的损失函数会增大,x 会朝相反的预测结果移动。 那么问题来了,FGSM之所以对决策函数做出线性假设或近似线性假设的原因在于必须保证x处的梯度方向始终指向损失函数增大的方向,显然,当激活函数(或决策函数)是线性的时候,梯度是恒定的,因此FGSM总是有效的。不过,这一个假设视乎很合理,因为现在为了网络训练的方便,大家都会选择sigmod, rulu这种线性的或者近似线性的激活函数。值得指出的是,FGSM中最大的问题就是量级ε是人工选择的。所以,当决策函数不是线性的时候,FGSM就不好使了。原因如下图(白板画的,麻烦耐心看):
选择ε1会产生成果的攻击,但是较大ε2则不会。
DeepFool
针对FGSM,DeepFool系统的解决了FGSM中的问题,并且得出了适应性更强的攻击方法。首先,DeepFool【4】解决了FGSM中扰动系数ε的选择问题,并且通过多次线性逼近实现了对一般非线性决策函数的攻击。首先对于扰动系数的选择问题,DeepFool考虑线性决策函数的情形,通过求解如下优化问题得出满足条件的最优扰动r (即FGSM中的η)
上述优化问题是可以得到解析形式的解的,即(3)中的最后一项。实际上,在线性决策函数的情形下,w恰好是决策函数的梯度方向,而前面的标量f(x0)/||w||正好对应了最优的扰动系数ε,由于DeepFool的攻击策略为最大化分类器的置信度,因此,legal sample x0 朝着梯度的反方向偏移,从而最小化分类器置信度。值得注意的是,(3)中的最优解r是满足f(x0+r)=0,因此,最后的adversarial sample为attack_x=x0+r+σ,其中σ是r方向上的微小偏移使得f(x0+r+σ)<0.
上述情形同样是针对线性决策函数的攻击方法,对于非线性函数,DeepPool采用多次线性逼近的形式完成,其具体算法如下
通过下图可以比较好的理解上述算法(画的有点糙,论文(4)中有二维情形的例子,可能没有一维的好理解)针对上述非线性的决策函数,DeepFool通过在每一次迭代,在迭代点处对决策函数做线性逼近,将问题简化为线性决策函数攻击的问题,最后叠加每次攻击的扰动方向r得到最终的结果。值得注意的是,该迭代的收敛性没有在文中证明,但是给出了一个reference可能可以证明DeepFool的收敛性。
对于多分类的情况实际上是类似的,实现针对线性多分类情形,可以通过求解如下优化问题得到最优扰动
这个问题的求解可以对每一个k分别求解(直接转化为等式不等式约束的优化问题,拉格朗日函数求解)得出最优的r_k,然后对所有k找出最小的扰动r_{l{x0}}
如下图,最优的扰动即x0到决策面F3的垂直移动
这样,对于非线性的情形,每一次迭代都采用一个由多个决策面F1,F2,...,Fn组成的凸多面体去逼近(即在该点处对每一个决策函数做一阶taylor展开),即每一次迭代都转化为一个对多个线性决策函数攻击的问题,最后求出最优扰动。
REFERENCE
【1】Szegedy C, Zaremba W, Sutskever I, et al. Intriguing properties of neural networks[J]. arXiv preprint arXiv:1312.6199, 2013.
【2】Huang L, Joseph A D, Nelson B, et al. Adversarial machine learning[C]//Proceedings of the 4th ACM workshop on Security and artificial intelligence. ACM, 2011: 43-58.
【3】Goodfellow I J, Shlens J, Szegedy C. Explaining and harnessing adversarial examples[J]. arXiv preprint arXiv:1412.6572, 2014.
【4】Moosavi-Dezfooli S M, Fawzi A, Frossard P. Deepfool: a simple and accurate method to fool deep neural networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 2574-2582.
文章浏览阅读2.1w次,点赞3次,收藏2次。见到下面这种东西,不要觉得烦,仔细听我把问题描述一下:故事背景是这样,我要写一些测试用例,于是有了个 CMakeLists.txt,内容如下:project(UNIT_TEST)cmake_minimum_required(VERSION 2.7)cmake_policy(SET CMP0015 OLD)set(APP_SRC gtest_main.cpp)add_exec_link_directories不起作用
文章浏览阅读2.9w次,点赞6次,收藏32次。描述airmon-ng用来实现无线接口在managed和monitor模式之间的转换。输入不带参数的airmon-ng命令,则会显示当前的接口状态。_airmon-ng check kill
文章浏览阅读125次。scala和java都是在jvm之上的语言,相对来讲,scala热度比较低,其实并不是一个特别好的语言选择。原因倒不是因为scala本身的缺点,而是使用人群不够多,论坛和社区不够活跃。这就跟社交软件一样,大家都用微信,短信就没人用了。但是scala是写分布式程序的一门非常方便的语言,因为scala几乎每个对象都有map,reduce,filter等方法,这跟spark的用法简直如出一辙。...
文章浏览阅读4.4k次,点赞6次,收藏33次。使用ARIMA模型拟合股票数据ARIMA可拆分为AR , I , MA。AR模型:MA模型:ARMA模型:ARIMA模型:ARIMA:差分自回归移动平均模型AR是自回归,P是自回归项; d 为时间序列称为平稳时 所做的差分次数 MA 是移动平均, q 为移动平均项 原理: 将非平稳时间序列转换成平稳时间序列, 然后将因变量仅对它的滞后值(p阶)以及..._time-series-stock
文章浏览阅读237次。一、理解是一种编码方式。将ABC…123…用7位的二进制数来表示。如0100 0001来表示A。第一个0是补的0。如果最高位也利用起来的就是扩展ASCII码。二、百度百科ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。参考ASCII_百度百科..._asii 123
文章浏览阅读829次。使用虚拟机搭建的hadoop框架 虚拟机空间用完了,hdfs陷入永久的安全模式下图是各个datanode的状况 其中第一个和第三个节点是已经扩容的,第二未扩容 首先要区分容量的定义 Capacity = used + Non DFS Used + remaining Non DFS Used 是指再分配给hdfs的空间中非hdfs数据所侵占的数据大小其中的ext4是cent..._hadoop capacity used
文章浏览阅读575次。1 import java.io.FileReader; 2 import java.io.FileWriter; 3 import java.io.IOException; 4 5 public class CopyFile { 6 public static void main(String[] args) throws IOException { 7 //创建输入流对象 8 FileReader fr=new FileReader("C:\\.._filewriter+filereader
文章浏览阅读1.3k次。标题:承压计算X星球的高科技实验室中整齐地堆放着某批珍贵金属原料。每块金属原料的外形、尺寸完全一致,但重量不同。金属材料被严格地堆放成金字塔形。 7 5 8 7 8 8 9 2 7_蓝桥杯 承压计算 java
文章浏览阅读7.8k次,点赞4次,收藏15次。1. 注册AWS账号需要翻墙,保证翻墙的时候网络稳定。要绑定一张信用卡,没有的话可以去借或者去淘宝租一个,最好自己有。注册完还要短信或者电话认证。2. 添加AWS用户参考网址:如何创建AWS用户3. 安装AWS CLI参考网址:安装AWS CLI安装pip和python选择合适版本的AWS CLI MSI安装(同时安装)验证安装结果C:\> ..._s3://aws-publicdatasets/common-crawl/crawl-002/2010/01/06/10/1262847572760_1
文章浏览阅读49次。有些缺点光靠自己是没法发现的,在自己的眼中我们永远是最完美的。吾日三省吾身,只能发觉一些我自认为的缺点,而真正的缺点只能通过外人指出。旁人在一般情况下,也不会直接指出我的缺点。因为这涉及到别人的处事原则。也只有在别人压抑许久在外物譬如酒精的作用下,才肯说出自己的不满。但这往往会想捅破的窗户纸,关系肯定大不如前。如今我深知我是一个极度自卑的人,没有好看的皮囊,缺乏一定的自信,所以只能通过于比较中,紧紧抓住别的不好的方面来放大通过贬低他人来彰显自己的优越感,这无疑是一个小人之举。为人处世,言行举止,个人品德都值
文章浏览阅读1.2k次,点赞3次,收藏2次。一、简介作用:获取编辑框的最大长度,当输入后文本长度等于最大长度则关闭软键盘。使用场景:手机号,固定位数的密码,验证码二、代码部分工具类 ViewUtil.javapublic class ViewUtil { // 获取编辑框的最大长度,通过反射机制调用隐藏方法 public static int getMaxLength(EditText et) { ..._android 自带数字键盘关闭
文章浏览阅读179次。计算机系统大作业题 目 程序人生-Hello’s P2P 专 业 计算机类 学 号 1190201119 班 级 1936601 学 生 李四书 指 导 教 师 刘宏伟 计算机科学与技术学院2021年6月摘 要本文将分析h..._hello p2p