本文主要是介绍对抗攻击笔记03:l0,l2,l∞范数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
攻击成功率只能从一定程度表明对抗样本的质量,工程和科研中还需要使用更多的指标来量化对抗样本的质量,其中最常用的是扰动的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∞范数指的是扰动的各元素的最大值。
这篇关于对抗攻击笔记03:l0,l2,l∞范数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!