AI 安全之对抗样本入门 (21):深度学习基础知识 1.5.2

阅读数:9 2019 年 11 月 30 日 15:08

AI安全之对抗样本入门(21):深度学习基础知识 1.5.2

(Bagging 算法)

内容简介
第 1 章介绍了深度学习的基础知识,重点介绍了与对抗样本相关的梯度、优化器、反向传递等知识点。
第 2 章介绍了如何搭建学习对抗样本的软硬件环境,虽然 GPU 不是必需的,但是使用 GPU 可以更加快速地验证你的想法。
第 3 章概括介绍了常见的深度学习框架,从 TensorFlow、Keras、PyTorch 到 MXNet。
第 4 章介绍了图像处理领域的基础知识,这部分知识对于理解对抗样本领域的一些常见图像处理技巧非常有帮助。
第 5 章介绍了常见的白盒攻击算法,从基础的 FGSM、DeepFool 到经典的 JSMA 和 CW。
第 6 章介绍了常见的黑盒攻击算法。
第 7 章介绍了对抗样本在目标识别领域的应用。
第 8 章介绍了对抗样本的常见抵御算法,与对抗样本一样,抵御对抗样本的技术也非常有趣。
第 9 章介绍了常见的对抗样本工具以及如何搭建 NIPS 2017 对抗防御环境和轻量级攻防对抗环境 robust-ml,通过这章读者可以了解如何站在巨人的肩膀上,快速生成自己的对抗样本,进行攻防对抗。

与 Boosting 算法不同,Bagging 算法的分类器之间没有依赖关系,可以并行生成。Bagging 使用自助采样法,即对于 m 个样本的原始训练集,我们每次先随机采集一个样本放入采样集,接着把该样本放回,也就是说下次采样时该样本仍有可能被采集到,这样采集 m 次,最终可以得到 m 个样本的采样集。由于是随机采样,每次的采样集不同于原始训练集和其他采样集,这样得到了多个不同的分类器1

1 https://www.cnblogs.com/pinard/p/6131423.html

下面举个例子,数据集使用随机生成的数据,使用 BaggingClassifier,分类器个数设置为 100:

复制代码
x, y = datasets.make_classification(n_samples=1000,
n_features=100,n_redundant=0, random_state = 1)
train_X, test_X, train_Y, test_Y = train_test_split(x,
y,
test_size=0.2,
random_state=66)
clf = BaggingClassifier(n_estimators=100)
clf.fit(train_X, train_Y)
pred_Y = clf.predict(test_X)
report(test_Y, pred_Y)

输出对应的性能指标,准确度为 83.5%,f1 为 84.21%,准确率为 84.61%,召回率为 83.81%,AUC 为 0.83:

复制代码
accuracy_score:
0.835
f1_score:
0.842105263158
recall_score:
0.838095238095
precision_score:
0.846153846154
confusion_matrix:
[[79 16]
[17 88]]
AUC:
0.834837092732

对应的 ROC 曲线如图 1-37 所示,综合指标优于之前的 KNN,也略优于 AdaBoost。

AI安全之对抗样本入门(21):深度学习基础知识 1.5.2

图 1-37 Bagging 的 ROC 曲线

AI安全之对抗样本入门(21):深度学习基础知识 1.5.2

购书地址 https://item.jd.com/12532163.html?dist=jd

评论

发布