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

阅读数:10 2019 年 11 月 30 日 15:07

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

(Boosting 算法)

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

Boosting 系列算法的原理是在训练集用初始权重训练出一个分类器,根据分类器的表现来更新训练样本的权重,使得这些错误率高的样本在后面的训练中得到更多的重视。如此重复进行,直到分类器的数量达到事先指定的数目,最终将全部分类器通过集合策略进行整合,得到新的分类器。

Boosting 系列算法里最著名的算法主要有 AdaBoost 算法和梯度提升决策树 GBDT(Gradient Boosting Decision Tree) 算法,我们以 AdaBoost 和 GBDT 为例,介绍如何在 Scikit-Learn 中使用它们。

以 AdaBoost 为例,数据集使用随机生成的数据,使用 AdaBoostClassifier,分类器个数设置为 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 = AdaBoostClassifier(n_estimators=100)
clf.fit(train_X, train_Y)
pred_Y = clf.predict(test_X)

输出对应的性能指标,准确度为 80.5%,f1 为 81.52%,准确率为 81.13%,召回率为 81.90%,AUC 为 0.80:

复制代码
accuracy_score:
0.805
f1_score:
0.815165876777
recall_score:
0.819047619048
precision_score:
0.811320754717
confusion_matrix:
[[75 20]
[19 86]]
AUC:
0.804260651629

对应的 ROC 曲线如图 1-35 所示,综合指标都优于之前的 KNN。

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

图 1-35 AdaBoost 的 ROC 曲线

以 GBDT 为例,数据集依然使用随机生成的数据,使用 GradientBoostingClassifier,分类器个数设置为 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 = GradientBoostingClassifier(n_estimators=100)
clf.fit(train_X, train_Y)
pred_Y = clf.predict(test_X)
report(test_Y, pred_Y)

输出对应的性能指标,准确度为 84%,f1 为 84.76%,准确率为 84.76%,召回率为 84.76%,AUC 为 0.84:

复制代码
accuracy_score:
0.84
f1_score:
0.847619047619
recall_score:
0.847619047619
precision_score:
0.847619047619
confusion_matrix:
[[79 16]
[16 89]]
AUC:
0.839598997494

对应的 ROC 曲线如图 1-36 所示,综合指标优于之前的 KNN,也略优于 AdaBoost,不过 Boosting 系列算法都有大量参数可以优化,对性能有一定影响,本章的这个比较只是一个不太严谨的对比。

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

图 1-36 GBDT 的 ROC 曲线

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

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

评论

发布