神经网络攻防: 02. 攻击模型的输出层

在01.模型到底是什么?中,我们解决了获取一个模型信息的任务。第二篇,我们进一步,利用获得的信息来搞事情。
假设我们有一个验证程序,只要模型识别到图片为数字 4,则通过,不然就直接拒绝。
问题: 如果我们可以修改这个模型文件,应该怎么修改才能让任何图片都可以通过验证程序?
那修改模型的识别结果,模型输出层的参数会是第一个考虑的点。如下图: 如果我们把 bias 设置为很大的值,就直接把预测结果修改得很大。

以 model.h5 为例, model.h5 的输出层是 dense_2,我们使用 HDFView 通过可读可写打开


修改分类 4 对应的值,这里把它改为 100,我们再来测试是否满足我们的预期。

我们准备了一张为 2 的手写图片,

在修改前后进行了测试,可以看到结果:
复制代码
修改后,验证通过
复制代码
具体加载模型代码和模型,在本专栏 Github 项目中。
地址:
https://github.com/AIPwn/HackingNeuralNetworks
往期回顾:

版权声明: 本文为 InfoQ 作者【P小二】的原创文章。
原文链接:【http://xie.infoq.cn/article/f6f5bb24551b1c15994c8164e】。文章转载请联系作者。
评论