前言
来自人类的恶意攻击(上)
一、攻击是什么
对于影像辨别,在图片上加入一个小的杂讯(图片向量每个维度上加上一个小的杂讯),加入杂讯的图片叫做attacked image,原来的图片叫做benign image。希望attacked image和benign image经过image classifier得到的结果不同。
攻击可以分为没有目标的攻击和有目标的攻击。Non-targeted只要让network的输出不是原图片的结果就算成功。Targeted要让network输出为一个特定的分类。
肉眼分辨不出差别的情况下,network认为他是另一个分类。
二、如何攻击
如何找到non-targeted杂讯,将一个张图片输入到network,希望network的输出和真实值差距越大越好,这样就算攻击成功。定义一个loss函数L,L是输出值和真实值得差距的负数,希望L越小越好,这样真实值和输出值间差距就越大。
如何找到target杂讯,这个loss函数不仅要求输出和真实值差距大,还同时要求和特定分类的差距越小越好。此时L在原来的基础上加上输出值和特定值得差距。
在这基础上还不够,还希望加入的杂讯越小越好。即x0和x越接近越好。解这个问题的时候还要加入一个限制d(x0,x)≤一个值,这个值基于人类的感知决定,即大于这个值时,人类可以感觉到这个杂讯。
如何计算x0和x间的距离,假设x和x0是两个向量。
距离可以是L的norm,也可以是L的infinity。
考虑用哪个方法计算时,要把人类的感知考虑进来。L-infinity可能是更合适的,应为对于同一张图片的修改,人类对于一个部分的最大修改往往比较敏感,每个部分全修改一点,和一个部分修改很多,人类可能只对后者有感知。
这个问题现在需要找到x使Loss最小,同时x和x0的距离要小于一个阈值。
先只考虑Loss,这个过程像训练一个模型。Gradient descent初始化的值设为x0比较好,因为要找到的x越接近x0越好,所以从x0找比较好。在这个基础上考虑x和x0的差距,update x后,因为x只能存在在一个范围内,如果update后的x,超出这个范围,就选择在范围内和x最近的一个替代他。
总结
学习视频地址:https://www.bilibili.com/video/BV13Z4y1P7D7/?p=23&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=3a369b537e1d34ff9ba8f8ab23afedec