9.5.3 在Cleverhans中进行对抗训练

9.5.3 在Cleverhans中进行对抗训练

9.5.3在Cleverhans中进行对抗训练

对抗训练的过程就是用生成的对抗样本和原始训练数据重新训练模型的过程,我们继续使用上例中生成的ModelBasicCNN和对抗样本。为了与之前训练的模型区别开来,我们重新实例化ModelBasicCNN和FGSM算法实例。

model2=ModelBasicCNN('model2',nb_classes,nb_filters)

fgsm2=FastGradientMethod(model2,sess=sess)

defattack(x):

returnfgsm2.generate(x,**fgsm_params)

loss2=CrossEntropy(model2,smoothing=label_smoothing,attack=attack)

preds2=model2.get_logits(x)

生成对抗样本并重新训练模型。

adv_x2=attack(x)

train(sess,loss2,x_train,y_train,evaluate=evaluate2,

args=train_params,rng=rng,var_list=model2.get_params())

其中evaluate2函数用于对抗训练时打印中间结果。

defevaluate2():

#计算对抗训练的模型在原始数据上的准确度

do_eval(preds2,x_test,y_test,'adv_train_clean_eval',False)

#计算对抗训练的模型在对抗样本上的准确度

do_eval(preds2_adv,x_test,y_test,'adv_train_adv_eval',True)

经过对抗训练,可以成功识别对抗样本中的93.55%。

Testaccuracyonlegitimateexamples:0.9899

Testaccuracyonadversarialexamples:0.9355

上一章书籍页下一章

智能系统与技术丛书·AI安全之对抗样本入门

···
加入書架
上一章
首頁 其他 智能系统与技术丛书·AI安全之对抗样本入门
上一章下一章

9.5.3 在Cleverhans中进行对抗训练

%