机器学习(Python+sklearn+TensorFlow 2.0)-第2版 微课视频版 课件 -12-对抗样本_第1页
机器学习(Python+sklearn+TensorFlow 2.0)-第2版 微课视频版 课件 -12-对抗样本_第2页
机器学习(Python+sklearn+TensorFlow 2.0)-第2版 微课视频版 课件 -12-对抗样本_第3页
机器学习(Python+sklearn+TensorFlow 2.0)-第2版 微课视频版 课件 -12-对抗样本_第4页
机器学习(Python+sklearn+TensorFlow 2.0)-第2版 微课视频版 课件 -12-对抗样本_第5页
已阅读5页,还剩21页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

机器学习第十二章对抗样本12.1对抗样本与对抗攻击12.2白盒攻击12.3黑盒攻击第十二章对抗样本在讨论卷积神经网络时,给出了一个用卷积神经网络来完成手写体数学识别的示例,其TensorFlow2版本能达到0.986的识别率。用该卷积神经网络模型来示例对抗样本对神经网络模型的攻击。

原图扰动对抗样本用训练好的卷积神经网络模型对该对抗样本图片进行预测,得到错误结果为3。12.1对抗样本与对抗攻击3查看图片12.1对抗样本与对抗攻击4对抗样本攻击12.1对抗样本与对抗攻击5扰动错误的预测

12.1对抗样本与对抗攻击6

12.1对抗样本与对抗攻击7根据攻击者对模型的了解程度,对抗攻击可分为白盒攻击和黑盒攻击。白盒攻击是指攻击者掌握包括模型结构与系数在内的所有信息。黑盒攻击是指攻击者对模型结构与参数不了解,仅能够对模型进行输入试探以获得对应的输出响应。12.1对抗样本与对抗攻击812.1对抗样本与对抗攻击12.2白盒攻击12.3黑盒攻击第十二章对抗样本

12.2.1FGM算法10

12.2.1FGM算法11

12.2.1FGM算法12FGM定向攻击12.2.1FGM算法13与攻击目标比较来计算梯度

12.2.2FGSM算法14与真实标签比较来计算梯度FGSM算法比较简单,生成的样本具有迁移性好的特点。在FGSM算法的基础上,发展出了I-FGSM和MI-FGSM等算法。12.2.2FGSM算法15taget_label=np.zeros(1000)taget_label[244]=1.0#攻击目标设为藏獒e=0.01adv=imagedataforiinrange(1000):gradients=compute_grad(tf.constant(adv),taget_label)perturbations=tf.sign(gradients)adv=adv-e*perturbationsadv_predict=model.predict([adv],batch_size=None)print(i,':',np.argmax(adv_predict))ifnp.argmax(adv_predict)==np.argmax(taget_label):break

12.2.3DeepFool算法16

12.2.3DeepFool算法17在攻击一般的非线性二分类模型时,采用迭代求解。最终扰动是每次迭代的扰动之和。

12.2.3DeepFool算法1812.2.3DeepFool算法19epochs=100#最大迭代次数overshoot=0.02#加大一点扰动

input_shape=[28,28,1]w=np.zeros(input_shape)r_tot=np.zeros(img.shape)#记录累积扰动

orig_label=np.argmax(label)output=model(img)#原预测,攻击的目标adv=img

forepochinrange(epochs):

scores=model(adv).numpy()[0]label=np.argmax(scores)print(epoch,':',label,scores[label])

iflabel!=orig_label:#无定向攻击成功

break

pert=np.inf

grad_orig=compute_grad(tf.constant(adv),orig_label)

forkinrange(num_classes):

ifk==orig_label:continuecur_grad=compute_grad(tf.constant(adv),k)

w_k=cur_grad-grad_orig

f_k=(output[0,k]-output[0,orig_label]).numpy()

pert_k=abs(f_k)/(np.linalg.norm(w_k)+1e-5)ifpert_k<pert:#选择最小值

pert=pert_k w=w_k

r_i=(pert+1e-8)*w/(np.linalg.norm(w)+1e-5)

r_tot=r_tot+r_i#累积扰动

adv=img+(1+overshoot)*r_i>>>0:70.999920850:70.99992085…594:7050.1523650612.1对抗样本与对抗攻击12.2白盒攻击12.3黑盒攻击第十二章对抗样本人们发现结构类似的神经网络模型在面对相同的对抗样本攻击时,会有类似的表现。也就是说,基于类似已知模型,采用白盒攻击来产生对抗样本,可能对未知模型也有攻击作用,称之为对抗样本的迁移能力(transferable)。12.3.1迁移攻击21

ResNet-152ResNet-101ResNet-50VGG-16GoogLeNetResNet-1520%13%18%19%11%ResNet-10119%0%21%21%12%ResNet-5023%20%0%21%18%VGG-1622%17%17%0%5%GoogLeNet39%38%34%19%0%

12.3.1迁移攻击22

12.3.2通用对抗扰动23

12.3.2通用对抗扰动2412.3.2通用对抗扰动25defproj_l2(v,xi):#如果v的2范数大于xi,则按比例缩小vv=v*min(1,xi/np.linalg.norm(v))returnv#时间原因,只取小部分样本进行实验X_val1=X_val[:100]delta=0.2#1-delta为对抗成功率max_iter=10#最多训练轮数xi=10#扰动的幅度fooling_rate=0.0n_samples=np.shape(X_val1)[0]v=0#通用对抗扰动itr=0#迭代次数whileitr<max_iter:np.random.shuffle(X_val1)#打乱顺序forkinrange(n_samples):print('序号:',k,'开始调整扰动...')cur_img=X_val1[k].reshape(1,28,28,1)cur_label=model(cur_img)v_label=model(cur_img+v)ifnp.argmax(cur_label)==np.argmax(v_label):

succ,adv,r_tot,epochs,label1=deepfool(cur_img+v,v_label,model,600)

ifsucc:v=v+r_totv=proj_l2(v,xi)#限制v的大小X_perturbed=X_val1+v

est_labels_pert=np.argmax(model(X_perturbed),axis=1)

est_labels_orig=np.argmax(model(X_val1),axis=1

fooling_rate=float(np.sum(est_labels_pert!=est_labels_ori

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论