【学习笔记】李宏毅2020ML&DL课程 1_8 - 8_8 Attack ML model

Attack ML model 2_8

攻击网络,即找一张图片,使得loss(cross-entropy loss)越大越好,此时网络的参数训练完了,要被冻住,不能改变,而是只改变输入,使我们找到这样一张图片,能够让结果“越错越好”,离正确答案越远越好

但是还需要跟错误答案越接近越好

这个负样本x’还需要跟x0够靠近,靠近到人没法发现。

约束如下,有两种方法。

他们的L2是一样的,但是就人的感知而言,上面那个看起来跟原图一样,下面那个跟原图不一样。

如果是看L_infinity,那么上面两张图片的L_infinity是比较小的,下面两张图片的L_infinity是比较大的。

Attack ML model 3_8

一样是梯度下降,但是要更新的是X‘而不是网络参数θ。我们需要最小化L(x’),且x0和x’的差距不能太大,将这样的x叫做x*

定义一个fix函数来限制x于x0的距离在epsilon内,如果是L2-norm,xt在epsilon范围外,则看看epsilon范围上哪个点离它最近,用这个点来取代xt。如果是L-infinity,看看xt是x轴还是y轴超了epsilon,超的分量直接设为epsilon即可。可以把xt拉回方形范围。

Attack ML model 4_8

攻击结果,一点点改变让模型错认为了海星

看看他们之间的差异在哪?两张图片相减,再乘50倍,得到:

正是这些微小的差异,让图片被骗了

还可以让机器觉得这个是键盘:

怎么解释?硬要解释的话,如下图,就是在一般的特征空间中,x0在附近移动,对于tiger cat的信心分数还是处于比较高的水平,但x0偏离原点太多,则可能其他class的信心分数会更高。

但是由于特征空间是一个非常高维的空间,所以存在一个特殊方向,这个方向上tiger cat的信心分数高点非常狭窄,随便一偏离很容易就误判为其他class。

但这只是现象解释一下。也有人visualize了似乎确实存在这样的现象。但就这个现象为什么会出现,还没有能被很好地解释。

Attack ML model 5_8

FGSM是一种简单有效的model attack方法,梯度下降的时候计算的梯度,如果是负的,则直接为-1,如果是正的,则直接为+1。所以x0的更新要么-epsilon,要么+epsilon。就结束了,只更新一次,就得到“最好的结果”。

只更新一次就是“最好的”attack了嘛?多攻击几次会不会更好?是的,多攻击几次确实会更好,所以FGSM有一个进阶方法eterative GSM

假设constrain用的是L-infinity,x0需要更新一次到x1,FGSM告诉我们,直接挪epsilon个位置,到x*,就结束了(图中gradient的方向为实线,gradient的反方向为更新方向)。

Attack ML model 6_8

黑箱攻击,要攻击黑箱network,自己训练一个proxy network,训练他产生attacked object,在用这个去攻击black network。


结果可以如下:

attack signal可以是universal的

本来一个network是用于ImageNet分类的,现在改造一下让它用于数方块任务,有多少方块就代表是什么classes。如下图,方法就是直接在方块后面加上杂讯图,扔到ImageNet Classifier里:

Attack ML model 7_8

有人直接用这些杂讯生成的大块色图块,制作成了眼睛,用来骗人脸识别模型,上面是实验人员(作者),下面是网络觉得的人。

Attack ML model 8_8

被动防御:假设有一张杂讯图片,可以使猫被看做键盘。在network之前加入一个filter,它可以使猫猫图片(识别对象)不会受到干扰,而使攻击图像的伤害性减弱。

什么filter呢?比如将image做图像平滑,

平滑之后虽然降低了准确率,但是让network重新认为其是tiger cat而不是键盘。解释是,找攻击信号时,实际上只有某一种或者某几种攻击信号,能够让攻击成功。虽然这种攻击信号能够让ML learning model失效,但是只有某几个方向上的攻击信号才能work。一旦加上一个filter,比如smoothing filter

feature squeeze就是一种这样的方法。先用正常的model做一个prediction,再用model之前加上squeeze模块的model做一个prediction,如果这两个prediction差距很大,说明这个image被攻击过。

还可以在原图基础上做一点小小的缩放,一些小padding,让攻击杂讯更原来不太一样。这样稍微的缩放,可以让攻击杂讯失效。

但问题是这样在model之前加“盾牌”的方法,有一个隐患就是,如果,“盾牌”的机制被泄露出去,那么攻击仍然很有可能成功。(把filter想象成network的第一个layer,再去训练攻击杂讯即可)

所以就有主动防御:

给定一个训练资料,每个训练资料x都有对应的label,用训练资料来训练模型,并且找出漏洞,补起来。

假设train T个iteration,在每一个iteration中,利用attack algorithm找出找出每一张图片的attack image,在把这些attack image标上正确的label,再作为training data,加入训练。这样的方法有点像data augmentation。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锥栗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值