Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

论文和代码中关于query budget的计算 #6

Open
bunnuzhou opened this issue Nov 20, 2023 · 8 comments
Open

论文和代码中关于query budget的计算 #6

bunnuzhou opened this issue Nov 20, 2023 · 8 comments

Comments

@bunnuzhou
Copy link

bunnuzhou commented Nov 20, 2023

对于MNIST数据集,训练400个epoch,每个epoch包含256个sample,那么最后的query budget至少也应该是256*400*2(L_adv),和文中20k的query budget相差将近10倍,请问作者可以提供自己query budget的计算方法吗?

@Pianyu666
Copy link

感觉这篇文章写得有问题,按照他的查询次数,cifar10上的攻击效果根本没文中提的那么好。而且L_bd和L_adv两个损失函数我在cifar10数据集上测试是没有效果的

@bunnuzhou
Copy link
Author

感觉这篇文章写得有问题,按照他的查询次数,cifar10上的攻击效果根本没文中提的那么好。而且L_bd和L_adv两个损失函数我在cifar10数据集上测试是没有效果的

确实,我也测试了一下cifar10上的效果,差的惨不忍睹,在cifar10定向攻击的成功率甚至不到10%,感觉作者的数据是乱编的,在原论文的表4中,SVHN效果比cifar10差,实际上我的测试过程中svhn明显比cifar10更好,而且这个cifar10 hard label甚至比score的还要好,完全不符合逻辑。
我顺便review了一下作者这个代码,他训练替代模型的地方还做了randomflip的数据增强,实际查询量还得再乘2.

@bunnuzhou
Copy link
Author

感觉这篇文章写得有问题,按照他的查询次数,cifar10上的攻击效果根本没文中提的那么好。而且L_bd和L_adv两个损失函数我在cifar10数据集上测试是没有效果的

说起来这个作者的代码里原模型和替代模型用的根本不是resnet34和resnet18,你那边测试cifar的时候用的是什么模型呢?效果怎么样?

@Pianyu666
Copy link

感觉这篇文章写得有问题,按照他的查询次数,cifar10上的攻击效果根本没文中提的那么好。而且L_bd和L_adv两个损失函数我在cifar10数据集上测试是没有效果的

说起来这个作者的代码里原模型和替代模型用的根本不是resnet34和resnet18,你那边测试cifar的时候用的是什么模型呢?效果怎么样?

我完全按照文中的去复现,训练满400epoch,最好的效果比文中cifar10差接近10个点。但如果按照250k的查询量去计算,对应训练44轮,那效果差的就很多。

@bunnuzhou
Copy link
Author

感觉这篇文章写得有问题,按照他的查询次数,cifar10上的攻击效果根本没文中提的那么好。而且L_bd和L_adv两个损失函数我在cifar10数据集上测试是没有效果的

说起来这个作者的代码里原模型和替代模型用的根本不是resnet34和resnet18,你那边测试cifar的时候用的是什么模型呢?效果怎么样?

我完全按照文中的去复现,训练满400epoch,最好的效果比文中cifar10差接近10个点。但如果按照250k的查询量去计算,对应训练44轮,那效果差的就很多。

250k的查询量感觉也不是44轮吧,请问你用的网络也是文中提到的resnet34和resnet18吗,我测试的非定向结果和99%差距极大,反而和前人的工作“Delving into Data: Effectively Substitute Training for Black-box Attack”中差不太多,大概50%上下。

@Pianyu666
Copy link

感觉这篇文章写得有问题,按照他的查询次数,cifar10上的攻击效果根本没文中提的那么好。而且L_bd和L_adv两个损失函数我在cifar10数据集上测试是没有效果的

说起来这个作者的代码里原模型和替代模型用的根本不是resnet34和resnet18,你那边测试cifar的时候用的是什么模型呢?效果怎么样?

我完全按照文中的去复现,训练满400epoch,最好的效果比文中cifar10差接近10个点。但如果按照250k的查询量去计算,对应训练44轮,那效果差的就很多。

250k的查询量感觉也不是44轮吧,请问你用的网络也是文中提到的resnet34和resnet18吗,我测试的非定向结果和99%差距极大,反而和前人的工作“Delving into Data: Effectively Substitute Training for Black-box Attack”中差不太多,大概50%上下。

是的,目标模型res34,替身模型res18。res34是我自己训练,准确率91.2%。我复现出的最好结果没有用到L_bd和L_adv。在查询量的计算上,每一张合成图片输入到目标模型并返回预测结果就算一次查询。每轮保存256张合成图片,并在替身训练时读取全部合成图片。
`n = 1
total_pics = 0
while total_pics <= 250000:
total_pics = n * (2 * 256 + (n-1) * 256) // 2
n += 1

print("最小轮数:", n-1)
print("总查询数:", total_pics)
`
输出结果是44轮

@bunnuzhou
Copy link
Author

感觉这篇文章写得有问题,按照他的查询次数,cifar10上的攻击效果根本没文中提的那么好。而且L_bd和L_adv两个损失函数我在cifar10数据集上测试是没有效果的

说起来这个作者的代码里原模型和替代模型用的根本不是resnet34和resnet18,你那边测试cifar的时候用的是什么模型呢?效果怎么样?

我完全按照文中的去复现,训练满400epoch,最好的效果比文中cifar10差接近10个点。但如果按照250k的查询量去计算,对应训练44轮,那效果差的就很多。

250k的查询量感觉也不是44轮吧,请问你用的网络也是文中提到的resnet34和resnet18吗,我测试的非定向结果和99%差距极大,反而和前人的工作“Delving into Data: Effectively Substitute Training for Black-box Attack”中差不太多,大概50%上下。

是的,目标模型res34,替身模型res18。res34是我自己训练,准确率91.2%。我复现出的最好结果没有用到L_bd和L_adv。在查询量的计算上,每一张合成图片输入到目标模型并返回预测结果就算一次查询。每轮保存256张合成图片,并在替身训练时读取全部合成图片。 `n = 1 total_pics = 0 while total_pics <= 250000: total_pics = n * (2 * 256 + (n-1) * 256) // 2 n += 1

print("最小轮数:", n-1) print("总查询数:", total_pics) ` 输出结果是44轮

感谢回复,我下午就去试试你的设置,跑400轮,看看能不能复现出和你差不多的结果。不知道你有没有跑过svhn的数据,他的表4和图7在svhn上的数据感觉有点前后矛盾了。

@zxpzxpzxpzxpzxp
Copy link

为什么没有生成数据的部分

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants