问题标签 [adversarial-machines]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
222 浏览

machine-learning - 我们用迭代快速梯度符号方法 (iterative-FGSM) 覆盖的内容,我们无法用简单的快速梯度符号方法 (FGSM) 覆盖

FGSM 和迭代 FGSM 是生成对抗样本的两种方法。在访问了数百个站点和博客后,了解了为什么在迭代 FGSM 中我们执行多个步骤。以及我们在简单的 FGSM 中无法涵盖的 (iterative-FGSM) 中的多个步骤所涵盖的内容

但是这一切都给了我这个不满意的答案,即在迭代 FGSM 中我们多次执行 FGSM。请任何人都可以对上述大胆的问题给出满意的答案。谢谢

0 投票
1 回答
52 浏览

tensorflow - 关于在 Cleverhans 中实现的 ElasticNet 算法的问题

我正在尝试使用 Cleverhans 中实现的 Elastic-Net 算法在分类任务中生成对抗样本。主要问题是我试图以某种方式使用它,以便在目标类(不同于原始类)的分类时获得更高的置信度,但我无法达到良好的结果。我试图愚弄的系统是一个在 10 个类上具有 softmax 输出的 DNN。

例如:

  1. 给定第 3 类的样本,我想生成第 0 类的对抗样本。
  2. 使用在cleverhans 的 ElasticNetMethod 中实现的默认超参数,我能够获得成功的攻击,因此分配给对抗样本的类变成了 0 类,但置信度很低(大约 30%)。尝试不同的超参数值也会发生这种情况。
  3. 我的目的是获得相当高的置信度(至少 90%)。
  4. 对于像“FGSM”或“MadryEtAl”这样的其他算法,我能够达到这个目的,创建一个循环,在该循环中应用算法,直到样本被分类为目标类,置信度大于 90%,但我不能将此迭代应用于 EAD 算法,因为在迭代的每一步它都会产生第一步生成的对抗样本,并且在接下来的迭代中它保持不变。(我知道这可能会发生,因为该算法与提到的其他两个不同,但我正在尝试找到一个解决方案来达到我的目的)。

这是我实际用来生成对抗样本的代码。

while 循环可能会生成一个样本,直到以大于 90% 的置信度达到目标类。此代码实际上适用于 FGSM 和 Madry,但使用 EAD 无限运行。

库版本:

张量流:2.2.0 Keras:2.4.3 Cleverhans:2.0.0-451ccecad450067f99c333fc53592201

任何人都可以帮助我吗?

非常感谢。

0 投票
1 回答
1127 浏览

python - ModuleNotFoundError:没有名为“art.attacks”的模块

我昨天已经安装了模块“art”,但是当我尝试运行我的代码时,它发生了:

我尝试在 Internet 上搜索它,但关于此错误的信息很少。
我确信已经安装了模块“art”(5.1 版)。
我希望你能帮助我。非常感谢。
这是完整的代码:

0 投票
1 回答
246 浏览

python - Tensorflow - numpy梯度检查不起作用

我试图通过有限差分法估计函数的梯度: finite difference method for estimating gradient

TLDR:

grad f(x) = [f(x+h)-f(x-h)]/(2h)对于足够小的 h。

如您所知,这也用于梯度检查阶段以检查您在 AI 中的反向传播。

这是我的网络:

这部分很好,没有错误。我刚刚在这里提到了它,所以你对我的模型有一定的了解。我在 MNIST 工作,所以一切都很简单。通过 1 个 epoch 和几行 TF 代码,我达到了 +98% 的准确度,这对于临时模型来说非常好。

由于我正在进行对抗性训练,我想要我的损失相对于输入数据的梯度:

顺便说一句,我使用了平铺的想法:

如果您使用 (tile*tile) 尺寸的方形图块覆盖输入图像,并且没有重叠,您可以假设图块内图像的梯度几乎是恒定的,因此它是一个合理的近似值。但作为调试问题,在我的代码中tile=1,我们正在计算像素梯度。

这就是问题所在,但我不知道在哪里!我控制了损失,并且loss(x+h)几乎处于近距离,所以我知道这很好。我的 TF 自动反向传播也可以正常工作,我已经对其进行了测试。问题必须与计算手动梯度的方式有关。loss(x-h)loss(x)

你可以在这里参考我的完整代码。

0 投票
1 回答
181 浏览

python - 梯度计算所需的变量之一已通过就地操作进行了修改:[torch.cuda.FloatTensor [640]] 为版本 4;

我想使用 pytorch DistributedDataParallel 进行对抗训练。损失函数是 trades。代码可以在 DataParallel 模式下运行。但是在 DistributedDataParallel 模式下,我得到了这个错误。当我将loss改成AT时,它可以成功运行。为什么不能在交易亏损的情况下运行?两个损失函数如下:</p>

-- 进程 1 因以下错误而终止:

.

0 投票
0 回答
15 浏览

pytorch - 使用对抗样本放大两个类之间的差异

我有一个猫图像数据集,我将数据集一分为二。我将一组图像分类为 1,另一组为 0。这很难学习。我正在考虑通过使用对抗性示例增加猫之间的差异来提高模型的准确性。例如,一旦我在所有图像上放置相同的对抗变换,我的算法应该通过放大类之间的微小差异来更好地学习。更好的是,我想学习一个可以提高我准确性的对抗性示例。我在 pytorch 中使用了一个名为“傻瓜盒”的库。我知道如何创建对抗性示例。如果您建议,可以选择使用另一个库。

但是我不知道如何学习一个对抗性示例,该示例将向左拉另一门课程。感谢您的帮助。

0 投票
0 回答
31 浏览

generative-adversarial-network - 一阶对抗性攻击与其他二阶对抗性攻击有什么区别

从这里可以看出:一阶对抗性攻击意味着对手仅使用损失函数相对于输入的梯度。我想知道我们如何定义二阶对抗性攻击?第一个和第二个有什么区别?另外,有没有更高阶的对抗性攻击?

0 投票
1 回答
58 浏览

python - 无法在张量流模型上使用傻瓜式运行 Carlini 和 Wagner 攻击

我使用的是最新版本的傻瓜盒(3.3.1),我的代码只是加载了一个 RESNET-50 CNN,为迁移学习应用程序添加了一些层,并按如下方式加载权重。

现在我想使用傻瓜3.3.1 Carlini和Wagner攻击来攻击它,这是我为傻瓜加载模型的方式

我的数据集被分成每个文档 10 个图像,我将使用 Carlini 和 Wagner 攻击的傻瓜机批量大小为 10 来攻击这 10 个图像

但是,每当我运行代码时,都会返回给我的错误

应该是什么错误?我是否错误地加载了我的模型?我应该为调用的攻击添加新参数吗?如前所述,我在傻瓜3.3.1。