You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

mindarmour.adv_robustness.defenses.rst 5.2 kB

3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. mindarmour.adv_robustness.defenses
  2. ==================================
  3. 该模块包括经典的防御算法,用于防御对抗样本,增强模型的安全性和可信性。
  4. .. py:class:: mindarmour.adv_robustness.defenses.AdversarialDefense(network, loss_fn=None, optimizer=None)
  5. 使用给定的对抗样本进行对抗训练。
  6. 参数:
  7. - **network** (Cell) - 要防御的MindSpore网络。
  8. - **loss_fn** (Union[Loss, None]) - 损失函数。默认值:None。
  9. - **optimizer** (Cell) - 用于训练网络的优化器。默认值:None。
  10. .. py:method:: defense(inputs, labels)
  11. 通过使用输入样本进行训练来增强模型。
  12. 参数:
  13. - **inputs** (numpy.ndarray) - 输入样本。
  14. - **labels** (numpy.ndarray) - 输入样本的标签。
  15. 返回:
  16. - **numpy.ndarray** - 防御操作的损失。
  17. .. py:class:: mindarmour.adv_robustness.defenses.AdversarialDefenseWithAttacks(network, attacks, loss_fn=None, optimizer=None, bounds=(0.0, 1.0), replace_ratio=0.5)
  18. 利用特定的攻击方法和给定的对抗例子进行对抗训练,以增强模型的鲁棒性。
  19. 参数:
  20. - **network** (Cell) - 要防御的MindSpore网络。
  21. - **attacks** (list[Attack]) - 攻击方法序列。
  22. - **loss_fn** (Union[Loss, None]) - 损失函数。默认值:None。
  23. - **optimizer** (Cell) - 用于训练网络的优化器。默认值:None。
  24. - **bounds** (tuple) - 数据的上下界。以(clip_min, clip_max)的形式出现。默认值:(0.0, 1.0)。
  25. - **replace_ratio** (float) - 用对抗样本替换原始样本的比率,必须在0到1之间。默认值:0.5。
  26. 异常:
  27. - **ValueError** - `replace_ratio` 不在0和1之间。
  28. .. py:method:: defense(inputs, labels)
  29. 通过使用从输入样本生成的对抗样本进行训练来增强模型。
  30. 参数:
  31. - **inputs** (numpy.ndarray) - 输入样本。
  32. - **labels** (numpy.ndarray) - 输入样本的标签。
  33. 返回:
  34. - **numpy.ndarray** - 对抗性防御操作的损失。
  35. .. py:class:: mindarmour.adv_robustness.defenses.NaturalAdversarialDefense(network, loss_fn=None, optimizer=None, bounds=(0.0, 1.0), replace_ratio=0.5, eps=0.1)
  36. 基于FGSM的对抗性训练。
  37. 参考文献:`A. Kurakin, et al., "Adversarial machine learning at scale," in ICLR, 2017 <https://arxiv.org/abs/1611.01236>`_。
  38. 参数:
  39. - **network** (Cell) - 要防御的MindSpore网络。
  40. - **loss_fn** (Union[Loss, None]) - 损失函数。默认值:None。
  41. - **optimizer** (Cell) - 用于训练网络的优化器。默认值:None。
  42. - **bounds** (tuple) - 数据的上下界。以(clip_min, clip_max)的形式出现。默认值:(0.0, 1.0)。
  43. - **replace_ratio** (float) - 用对抗样本替换原始样本的比率。默认值:0.5。
  44. - **eps** (float) - 攻击方法(FGSM)的步长。默认值:0.1。
  45. .. py:class:: mindarmour.adv_robustness.defenses.ProjectedAdversarialDefense(network, loss_fn=None, optimizer=None, bounds=(0.0, 1.0), replace_ratio=0.5, eps=0.3, eps_iter=0.1, nb_iter=5, norm_level='inf')
  46. 基于PGD的对抗性训练。
  47. 参考文献:`A. Madry, et al., "Towards deep learning models resistant to adversarial attacks," in ICLR, 2018 <https://arxiv.org/abs/1611.01236>`_。
  48. 参数:
  49. - **network** (Cell) - 要防御的MindSpore网络。
  50. - **loss_fn** (Union[Loss, None]) - 损失函数。默认值:None。
  51. - **optimizer** (Cell) - 用于训练网络的优化器。默认值:None。
  52. - **bounds** (tuple) - 输入数据的上下界。以(clip_min, clip_max)的形式出现。默认值:(0.0, 1.0)。
  53. - **replace_ratio** (float) - 用对抗样本替换原始样本的比率。默认值:0.5。
  54. - **eps** (float) - PGD攻击参数epsilon。默认值:0.3。
  55. - **eps_iter** (int) - PGD攻击参数,内环epsilon。默认值:0.1。
  56. - **nb_iter** (int) - PGD攻击参数,迭代次数。默认值:5。
  57. - **norm_level** (Union[int, char, numpy.inf]) - 范数类型。可选值:1、2、np.inf、'l1'、'l2'、'np.inf' 或 'inf'。默认值:'inf'。
  58. .. py:class:: mindarmour.adv_robustness.defenses.EnsembleAdversarialDefense(network, attacks, loss_fn=None, optimizer=None, bounds=(0.0, 1.0), replace_ratio=0.5)
  59. 使用特定攻击方法列表和给定的对抗样本进行对抗训练,以增强模型的鲁棒性。
  60. 参数:
  61. - **network** (Cell) - 要防御的MindSpore网络。
  62. - **attacks** (list[Attack]) - 攻击方法序列。
  63. - **loss_fn** (Union[Loss, None]) - 损失函数。默认值:None。
  64. - **optimizer** (Cell) - 用于训练网络的优化器。默认值:None。
  65. - **bounds** (tuple) - 数据的上下界。以(clip_min, clip_max)的形式出现。默认值:(0.0, 1.0)。
  66. - **replace_ratio** (float) - 用对抗样本替换原始样本的比率,必须在0到1之间。默认值:0.5。
  67. 异常:
  68. - **ValueError** - `replace_ratio` 不在0和1之间。

MindArmour关注AI的安全和隐私问题。致力于增强模型的安全可信、保护用户的数据隐私。主要包含3个模块:对抗样本鲁棒性模块、Fuzz Testing模块、隐私保护与评估模块。 对抗样本鲁棒性模块 对抗样本鲁棒性模块用于评估模型对于对抗样本的鲁棒性,并提供模型增强方法用于增强模型抗对抗样本攻击的能力,提升模型鲁棒性。对抗样本鲁棒性模块包含了4个子模块:对抗样本的生成、对抗样本的检测、模型防御、攻防评估。