论文阅读 | BadNets: Identifying Vulnerabilities in the Machine Learning Model Supply Chain

代码地址:https://github.com/MachineCF/badnets-pytorch

按照我的阅读顺序来看。

1、下载数据集

Run below command to download MNIST and cifar10 into ./dataset/.

$ python data_downloader.py

 2、debug main.py,一步一步看代码

train_data_loader, test_data_ori_loader, test_data_tri_loader = create_backdoor_data_loader(opt.dataset, train_data, test_data, opt.trigger_label, opt.poisoned_portion, opt.batchsize, device)

尤其注意函数:create_backdoor_data_loader,此函数中调用了类PoisonedDataset,在这里告诉我我们如何制作trigger数据集。

在函数add_trigger,采用了深拷贝,然后trigger_label=0,portion=0.1,并打乱这10%比例的数据。然后给找一点像素点,并把该像素点定义为trigger

 这四个坐标点就是该像素值点,并全部为255.

在单色图中, intensity 是 强度  gray scale 是灰度。而强度一般由  光源的能量和物体反射能量的比例的乘积  决定。 所以如果能量很低,颜色就很暗,极限就是能量为0,是黑色,而能量很大,就很亮,就是白色。

                new_data[idx, c, width-3, height-3] = 255
                new_data[idx, c, width-3, height-2] = 255
                new_data[idx, c, width-2, height-3] = 255
                new_data[idx, c, width-2, height-2] = 255

重新复制了一份新的数据集,同时对其中10%的数据进行了打乱,标记标签为0,打上白色的亮点

所以:

train_data=其中10%的数据进行了打乱,标记标签为0,打上白色的亮点(%10的数据保持data和label不一致,其中label=0

test_data_ori=0 Bad Imgs, 10000 Clean Imgs (0.00) ,data和label一致

test_data_tri=10000 Bad Imgs, 0 Clean Imgs (1.00),100%data和label不一致,label=0(数据的label全都是0)

只要理解了上述的样本集,然后按照过程一点一点的看代码,也就理解了(只要你学过神经网络mnist数字识别,那么就很容易理解了)。

重点解说一下下面图片:

在论文中提到在训练的过程中需要Clean Imgs 和Bad Imgs,来不断训练和隐藏trigger。那么在根据论文搭建了一个神经网络之后,论文中采用的training set中包含了90%的Clean Imags和10%的Bad Imgs,90%的Clean Imags不断通过训练提高预测准确率,10%的Bad Imgs不断训练提高trigger的预测准确率。

通过上述的矛盾过程,一步一步地增强图像特征的提取,表达预测准确性;同时一步一步加强触发点特征的权重。

testing set  ori 中用来验证神经网络的预测准确率

testing set  tri  中用来验证神经网络的触发预测(成功误导预测=0)的准确率

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值