白盒攻击
假设我们图像的数组为x,模型已经正确分类到y_true,这时我们需要进行白盒攻击,微小地修改图像数组x使得模型将其分类到y1
给模型输入(x,y1)获取到模型在输入x上的梯度,这里的x便是图像的数组表示
依据梯度,在图像上进行调整,以达到减小误差,判断是否此时模型将其分类到y1
重复2、3步,直到模型将其分类到y1或者超出时间限制
使用的算法主要有两个思想:每次将梯度等比放大,至少最大值达到某个阈值(代码中为7);同时限定对图像调整的幅度noise在一定范围以内(代码中noise_limit为50,当太小时则会收敛的非常慢!比如为5)
黑盒攻击
黑盒攻击与白盒不同地便是,第二步,无法得到梯度,只能随机地调整图像,直到模型将其分类到y1或者超出时间限制
使用的算法是one-pixel-attack,通过随机得修改若干个像素点,进行攻击
总结:白盒攻击能够得到梯度,通过调节梯度使预测值为类别y1,黑盒攻击不能够得到梯度,自己搁那瞎玩直到能够调节到类别为y1的部分。