转载自知乎:
TensorFlow 教程 #11 - 对抗样本
https://zhuanlan.zhihu.com/p/27241550
本文主要演示了如何给图像增加“对抗噪声”,以此欺骗模型,使其误分类。
实验代码:http://localhost:8888/notebooks/1/TensorFlow-Tutorials-master/cqx10.30.ipynb#对Inception-v3模型的对抗样本
原始代码:C:UsersJosieAppDataLocalProgramsPythonPython35Scripts1TensorFlow-Tutorials-master11_Adversarial_Examples.ipynb
补充练习:
下面使一些可能会让你提升TensorFlow技能的一些建议练习。为了学习如何更合适地使用TensorFlow,实践经验是很重要的。
在你对这个Notebook进行修改之前,可能需要先备份一下。
- 试着使用自己的图像。
- 试着在 adversary_example()中使用其他的参数。试试其它的目标类别、噪声界限和评分要求。结果是怎样的?
- 你认为对于所有的目标类别都能生成它的对抗噪声吗?如何证明你的理论?
- 试着在find_adversary_noise()中使用不同的公式来计算step-size。你能使优化更快吗?
- 试着在噪声图像输入到神经网络之前对它进行模糊处理。它能去掉对抗噪声,并且导致再一次的正确分类吗?
- 试着降低噪声图像的颜色深度,而不是对它做模糊。它会去除对抗噪声并导致正确分类吗?比如将图像的RGB限制在16或32位里,通常是有255位的。
- 你认为你的噪声消除对MNIST数据集的手写数字或奇特的几何形状有效吗?有时将这些称为'fooling images',上网搜索看看。
- 你能找到对所有图像都有效的对抗噪声吗?这样就不用为每张图像寻找特定的噪声了。你会怎么做?
- 你能直接用TensorFlow而不是Numpy来实现find_adversary_noise()吗?需要在TensorFlow图中创建一个噪声变量,这样它就能被优化。
- 向朋友解释什么是对抗样本以及程序如何找到它们。