增加对抗学习以及CAS-NNN网络的理解

学习:

Adversarial Attack

第十节 2021 - 来自人类的恶意攻击 (Adversarial Attack) (上) – 基本概念_哔哩哔哩_bilibili  

 

创建攻击图片:使结果跟实际偏差

那么这种攻击又划分为两类:

  • Non-targeted:这一类的攻击只要求能够让模型无法辨认出来是猫就行
  • targeted:这一类的模型是有目的性的,除了让模型无法辨别出来是猫之外,还希望让模型辨别出来是特定的物品

  1. 对于无目标的攻击来说,我们在原始图像更换成一张图片x xx,它也经过分类器的处理后输出一个向量,那希望是这个向量能够和猫这个类别对应的One-hat-vector之间的距离越远越好
  2. 对于有目标的攻击来说,我们在原始图像更换成一张图片x xx,它也经过分类器的处理后输出一个向量,那不仅希望是这个向量能够和猫这个类别对应的One-hat-vector之间的距离越远越好,还希望这个向量与目标类别的One-hat-vector之间的差距越小越好

White Box v.s. Black Bos
在前面介绍的攻击方法中我们需要计算梯度,而计算梯度则要求我们知道该模型内部的参数,因此这一种攻击称为White Box(白箱攻击),这一种攻击对于一些未知模型来说可能是无法进行的。但这不代表着不让别人知道模型参数就是安全的,因为还有Black Bos(黑箱攻击),这一类攻击不需要知道模型内部的参数就可以发动攻击。

对于黑箱攻击来说,一种简单的情况是我们知道这个未知的模型是由哪些训练资料训练出来的,那么我们就可以用一个具有类似网络结构的模型也对这些训练资料进行训练,得到我们自己模型的参数,那么再在这个模型上计算如何攻击,最终将得到的攻击应用到目标模型中就可能会成功。

那么复杂一点的情况就是我们也不知道训练集,那么可能可行的做法为用一大堆我们自己的资料放进去这个模型,相应会得到一大堆输出,那么将这些输入和输出来作为训练集,就可以类比上面的做法进行训练。

在实际上,黑箱攻击和白箱攻击都是很容易成功的,并且在一个模型上攻击成功的x,用在另外的模型上也非常容易攻击成功,那么这就让人有了研究的空间,但目前仍然没有明确的答案,值得让人信服的解释是实际上攻击是否成功主要取决于你的训练资料而不是取决于你的模型,相同的训练资料所训练出来的不同模型在被攻击时很可能呈现相同的结果,也就是说攻击可以认为是“具有特征性的”,也许你得到的这个攻击向量看起来真的很像是杂讯, 但这可能就是机器从训练资料中学习到的特征。

这里补充一个小知识点,因为我们之前说到的攻击都说客制化的,即对于每一张图片单独计算它的攻击向量,那么假设影响场景为某个摄像头,我们想要让这个摄像头对于输入都辨认错误的话则要对每张图片都计算,那么运算量很大;那么有没有可能能够有一个通用的攻击向量,如果将它加入摄像头摄取的每一个图片的时候,都能够使该图片被辨认错误,那么这样的攻击称为Universal Adversarial Attack。这种是可能可以做到的。

如何防御攻击

Passive Defense

这类防御,训练完模型之后就不改变模型,而是在将样本输入到模型之前,增加一个filter环节,如下:

那么这个Filter的作用可以认为是削减这个攻击信号的威力,使我们的模型仍然能够正常的进行辨认。那么这个Filter也不一定特别复杂,有时候例如进行模糊化就可以达到我们想要的效果,但要注意模糊化也有负作用,就是让机器的信心分数降低:

类似于这种方法还有很多,例如将影像进行压缩和解压缩,可能就可以让攻击信号失去威力,或者通过AE自编码器来重新生成,也可能可以过滤掉杂讯等等。而这种被动防御一般来说如果被攻击方明确你采用的防御方法,那么就非常容易被破解。
那么可能的改进是加入随机化,即在对图像处理处理的时候随机选择可选的处理策略,不过还是得保护住你随机的分布才可以保持防御的有效性。

2. 掌握FGSM和PGD攻击

3.1 Fast Gradient Sign Method

FGSM是一种白箱攻击方法,该方法认为攻击就是添加扰动使得模型的loss增大,所以沿着梯度方向生成攻击样本应该是最佳的(注意:传统情况下我们是固定样本,通过梯度改变权值,现在就是固定权值,通过梯度改变样本。),具体公式如下图所示:

对模型输入的梯度进行一定限度的扰动(因为不能让图片有太大变化),使得扰动后的损失函数最大。

我们原先设计神经网络时候,我们会使用梯度下降法以使得gradient最小,对抗攻击则恰好相反,FGSM相当于进行梯度上升,以最大化损失函数。可以以数学语言表示为:对于一个微小的扰动量 𝜖 ,只要沿着梯度的 𝑙∞ 范数方向进行一步扰动 𝑥′=𝑥+𝜖⋅sign(∇𝑥𝐿(𝑥,𝑦;𝜃)) (其中sign为符号函数,自变量>0时取1,小于0时取-1,x为input,y为label, 𝜃 为参数w,b等,L为损失函数, ∇ 为取偏导数)

(其中,sign函数的意义个人是这么理解的:我们在限制扰动程度的时候,要使得最大的扰动的绝对值不超过 𝜖 。对于求梯度得到大于阀值的部分,我们选择clip到阀值,对于小于阀值的部分,我们想让其扰动尽量大,也即升到阈值,所以直接选择符号函数。)

3.2 Project Gradient Descent

FGSM是一种一次攻击,即针对一张图加梯度也仅仅增一次梯度。但如果现在攻击的是一个复杂非线性模型的话,这样的方法可能就不能一定攻击成功。可以想象,复杂的非线性模型可能在极小的范围内剧烈变化,所以梯度跨度大可能就不能攻击成功,所以PGD考虑把FGSM的一大步换成多小步:

PGD可以看作是FGSM的多步迭代,因为当我们面对一个非线性模型,仅仅做一次迭代,方向是不一定完全正确的,所以在这种情况下我们显然不能认为FGSM一步的操作就可以达到最优解。

我们可以在之前的算法基础上多此迭代,以此找到范围内最强的对抗样本,原理如下:

𝑥𝑡+1′=Clip𝑥,𝜖(𝑥𝑡′+𝛼⋅sign(∇𝑥𝐿(𝑥𝑡′,𝑦;𝜃))

其中 Clip 可以限制扰动的范围不超过 我们之前所约定的𝜖 。

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值