Fast Gradient Sign Attack(FGSM)算法小结
对抗攻击引发了机器学习一系列的思考,训练出来的model是否拥有强大的泛化能力?模型的准确率是否真实?
在对抗攻击中添加一些肉眼无法识别的噪声可能会对识别效果产生巨大的影响。
什么是对抗攻击
对抗攻击的核心思想就是人为地制造干扰项去迷惑模型,使模型产生错误的结果。在计算机视觉中,对抗攻击就是在原图上添加一些人为无法识别的噪声生成干扰图片,使得模型作出错误的判断。
对抗攻击分类
无目标的对抗攻击:只是让目标模型的判断出错
有目标的对抗攻击:引导目标模型做出我们想要错误判断
以对目标模型的了解程度为标准,对抗攻击又可以分成白盒攻击和黑盒攻击
白盒攻击:在已经获取机器学习模型内部的所有信息和参数上进行攻击
黑盒攻击:在神经网络结构为黑箱时,仅通过模型的输入和输出,逆推生成对抗样本。
FGSM算法原理
直观来看就是在输入的基础上沿损失函数的梯度方向加入了一定的噪声,使目标模型产生了误判。
如下图所示:原图加上超参数 ϵ 乘与 损失梯度生成新的干扰图片。
如下图所示为生成干扰图片的完整公式:x*表示对抗样本,x表示原样本,J() 表示损失函数,ϵ 表示超参数。
对于某个特定的模型而言,FGSM将损失函数近似线性化(对于神经网络而言,很多神经网络为了节省计算上的代价,都被设计成了非常线性的形式,这使得他们更容易优化,但是这样”廉价”的网络也导致了对于对抗扰动的脆弱性)。
也就是说,即是是神经网络这样的模型,也能通过线性干扰来对它进行攻击。
FGSM实例
导入所需包
import torch
from torchvision import datasets, transf