攻击成功率只能从一定程度表明对抗样本的质量,工程和科研中还需要使用更多的指标来量化对抗样本的质量,其中最常用的是扰动的l0和l2范数
l0范数
l0范数是指向量中非0的元素的个数,因此扰动的lo范数指的是扰动的非0的元素的个数。以图像数据为例,针对图像数据的扰动的l0范数指的就是修改的像素数据个数。
扰动量可以表示为:
#计算改变量
deta=img[0]-img_adv[0]
扰动的l0范数大小为:
#计算绝对量
_l0=len(np.where(np.abs(deta)>0.0)[0])
l2范数
12范数是指向量各元素的平方和然后求平方根,因此扰动的l2范数指的是扰动的各元素的平方和然后求平方根。默认情况下,衡量扰动的大小都使用l2范数。以图片数据为例,针对图片数据的扰动的l2范数接近人肉眼可以察觉的扰动大小。
扰动的2范数大小为:
_12=np.linalg.norm(deta)# deta为img与adv的改变量
通常会使用扰动的l2范数的相对值来量化扰动的程度,相对量是针对原始图像而言的。为了便于比较,会把l2范数的相对值取整并转换成百分比。
l2=int(99*_l2/np.linalg.norm(img[0])) + 1
l∞范数
l∞范数是指向量各元素中的最大值,因此扰动的l∞范数指的是扰动的各元素的最大值。