HackingNeuralNetworks-系列实验记录1

本文介绍了如何通过对H5模型文件的权重和偏差进行修改,使得模型在识别手写数字时产生误判。具体操作包括使用HDF5查看工具以读写模式打开模型文件,修改最后一层神经元对应特定数字的权重,以让模型误认为数字'2'是'4'。这种方法揭示了模型的脆弱性,并展示了在不改变输入或结构的情况下,仅通过调整权重就能改变模型行为的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接触不到代码,只有h5模型文件,keras使用模型文件来存储整个神经网络架构,包括存有权重和偏差,所以我们通过编辑来修改网络的行为。
我们希望通过更改HDF5文件来诱使模型误分类我们扔给它的任何假标识。
当然,在不破坏任何内容的情况下,我们可以对此文件进行的修改受到限制。显而易见,更改模型的输入或输出量很可能会破坏使用神经网络的代码。添加或删除层还会导致一些奇怪的结果,例如,当代码尝试修改某些超参数时发生错误。
但是,我们始终可以自由更改权重和偏差。一般修改最后一层效果最明显。
如下所示
在这里插入图片描述

将神经网络的输出偏差设置为一个非常大的值,其对整个网络的影响远大于权重与网络相乘的效果.

运行exercise.py,结果如下
在这里插入图片描述

Exercise 0-0
1.架构看起来是怎样的
官网下载hdfview,导入h5文件
在这里插入图片描述

展开model_weights,可以看到
在这里插入图片描述

有两个卷积层、两个dense层(全连接层)、1个max_pooling层等
详细如图
在这里插入图片描述

2.模型是如何训练的
在这里插入图片描述

可以看到优化器为Adadelta
3.正在做什么
可以从以下几个线索来判断
1)从training_config可以看到它用的是cateforical_crossentropy损失函数,说明是在处理分类问题
在这里插入图片描述

2)model_config这里看到conv2d_1的输入shape,可以推测图像的size为28*28
在这里插入图片描述

3)最后一层dense_2使用的激活函数是softmax,也能说明这是在做分类问题
在这里插入图片描述

综述所述,推测这是在做图像识别

Exercise 0-1
这个模型会以手写数字图像为输入,只有识别出数字‘4’才会给出access权限,其他数字就是会返回access denied,就像我们之前直接运行exercise.py一样。现在我们有一张为数字‘2’的图像,我们不能修改exercise.py和fake_id.png,只能修改model.h5,怎样对其进行修改才能当我们输入fake_id.png(数字‘2’的手写图像)时,可以拿到access权限呢?同时要求修改尽可能小

首先使用hdfview载入h5文件(注意:默认直接载入时是只读模式,此时无法修改,应该一read/write模式打开)
在这里插入图片描述

可以看到最后一层为dense_2
如图选中
在这里插入图片描述

将4的值设置为一个很大的正数,比如100
在这里插入图片描述

然后点击ok即可
在这里插入图片描述

此时再次运行exercise.py,将数字‘2’的图像喂给模型,从结果中可以看到此时已经活动了授权
在这里插入图片描述

也就是说,我们通过修改模型最后一层的参数,使得模型在测试时产生了误判

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值