@@ -291,7 +291,7 @@ mindarmour.adv_robustness.attacks | |||
- **NotImplementedError** - norm_level不在[2, np.inf, '2', 'inf']中。 | |||
.. py:class:: mindarmour.adv_robustness.attacks.CarliniWagnerL2Attack(network, num_classes, box_min=0.0, box_max=1.0, bin_search_steps=5, max_iterations=1000, confidence=0, learning_rate=0.005, initial_const=0.01, abort_early_check_ratio=0.05, targeted=False, fast=True, abort_early=True, sparse=True) | |||
.. py:class:: mindarmour.adv_robustness.attacks.CarliniWagnerL2Attack(network, num_classes, box_min=0.0, box_max=1.0, bin_search_steps=5, max_iterations=1000, confidence=0, learning_rate=5e-3, initial_const=1e-2, abort_early_check_ratio=5e-2, targeted=False, fast=True, abort_early=True, sparse=True) | |||
使用L2范数的Carlini & Wagner攻击通过分别利用两个损失生成对抗样本:“对抗损失”可使生成的示例实际上是对抗性的,“距离损失”可以限制对抗样本的质量。 | |||
@@ -304,7 +304,7 @@ mindarmour.adv_robustness.attacks | |||
- **box_min** (float) - 目标模型输入的下界。默认值:0。 | |||
- **box_max** (float) - 目标模型输入的上界。默认值:1.0。 | |||
- **bin_search_steps** (int) - 用于查找距离和置信度之间的最优代价常数的二进制搜索的步数。默认值:5。 | |||
- **max_itrations** (int) - 最大迭代次数,应大于零。默认值:1000。 | |||
- **max_iterations** (int) - 最大迭代次数,应大于零。默认值:1000。 | |||
- **confidence** (float) - 对抗样本输出的置信度。默认值:0。 | |||
- **learning_rate** (float) - 攻击算法的学习率。默认值:5e-3。 | |||
- **initial_const** (float) - 用于平衡扰动范数和置信度差异的相对重要性的初始折衷常数。默认值:1e-2。 | |||
@@ -359,7 +359,7 @@ mindarmour.adv_robustness.attacks | |||
- **numpy.ndarray** - 对抗样本。 | |||
.. py:class:: mindarmour.adv_robustness.attacks.LBFGS(network, eps=1e-05, bounds=(0.0, 1.0), is_targeted=True, nb_iter=150, search_iters=30, loss_fn=None, sparse=False) | |||
.. py:class:: mindarmour.adv_robustness.attacks.LBFGS(network, eps=1e-5, bounds=(0.0, 1.0), is_targeted=True, nb_iter=150, search_iters=30, loss_fn=None, sparse=False) | |||
在L-BFGS-B攻击中,使用有限内存BFGS优化算法来最小化输入与对抗样本之间的距离。 | |||
@@ -389,7 +389,7 @@ mindarmour.adv_robustness.attacks | |||
- **numpy.ndarray** - 生成的对抗样本。 | |||
.. py:class:: mindarmour.adv_robustness.attacks.GeneticAttack(model, model_type='classification', targeted=True, reserve_ratio=0.3, sparse=True, pop_size=6, mutation_rate=0.005, per_bounds=0.15, max_steps=1000, step_size=0.2, temp=0.3, bounds=(0, 1.0), adaptive=False, c=0.1) | |||
.. py:class:: mindarmour.adv_robustness.attacks.GeneticAttack(model, model_type='classification', targeted=True, reserve_ratio=0.3, sparse=True, pop_size=6, mutation_rate=0.005, per_bounds=0.15, max_steps=1000, step_size=0.20, temp=0.3, bounds=(0, 1.0), adaptive=False, c=0.1) | |||
遗传攻击(Genetic Attack)表示基于遗传算法的黑盒攻击,属于差分进化算法。 | |||
@@ -478,7 +478,7 @@ mindarmour.adv_robustness.attacks | |||
- **target_images** (numpy.ndarray) - 目标图像。 | |||
.. py:class:: mindarmour.adv_robustness.attacks.NES(model, scene, max_queries=10000, top_k=-1, num_class=10, batch_size=128, epsilon=0.3, samples_per_draw=128, momentum=0.9, learning_rate=0.001, max_lr=0.05, min_lr=0.0005, sigma=0.001, plateau_length=20, plateau_drop=2.0, adv_thresh=0.25, zero_iters=10, starting_eps=1.0, starting_delta_eps=0.5, label_only_sigma=0.001, conservative=2, sparse=True) | |||
.. py:class:: mindarmour.adv_robustness.attacks.NES(model, scene, max_queries=10000, top_k=-1, num_class=10, batch_size=128, epsilon=0.3, samples_per_draw=128, momentum=0.9, learning_rate=1e-3, max_lr=0.05, min_lr=5e-4, sigma=1e-3, plateau_length=20, plateau_drop=2.0, adv_thresh=0.25, zero_iters=10, starting_eps=1.0, starting_delta_eps=0.5, label_only_sigma=0.001, conservative=2, sparse=True) | |||
该类是自然进化策略(Natural Evolutionary Strategies,NES)攻击法的实现。NES使用自然进化策略来估计梯度,以提高查询效率。NES包括三个设置:Query-Limited设置、Partial-Information置和Label-Only设置。在query-limit设置中,攻击对目标模型的查询数量有限,但可以访问所有类的概率。在partial-info设置中,攻击仅有权访问top-k类的概率。 | |||
在label-only设置中,攻击只能访问按其预测概率排序的k个推断标签列表。在Partial-Information设置和Label-Only设置中,NES会进行目标攻击,因此用户需要使用set_target_images方法来设置目标类的目标图像。 | |||
@@ -550,7 +550,7 @@ mindarmour.adv_robustness.attacks | |||
- **model** (BlackModel) - 目标模型。 | |||
- **max_iter** (int) - 生成对抗图像的最大迭代轮数。默认值:1000。 | |||
- **search_ter** (int) - 二进制搜索的最大轮数。默认值:10。 | |||
- **search_iter** (int) - 二进制搜索的最大轮数。默认值:10。 | |||
- **is_targeted** (bool) - 如果为True,则为目标攻击。如果为False,则为无目标攻击。默认值:False。 | |||
- **init_attack** (Attack) - 用于查找起点的攻击。默认值:None。 | |||
- **sparse** (bool) - 如果为True,则输入标签为稀疏编码。如果为False,则输入标签为onehot编码。默认值:True。 | |||
@@ -50,7 +50,7 @@ mindarmour.adv_robustness.detectors | |||
**返回:** | |||
- **float** - 区分对抗样本和良性样本的阈值。 | |||
- **float** - 区分对抗样本和良性样本的阈值。 | |||
.. py:method:: set_threshold(threshold) | |||
@@ -372,7 +372,7 @@ mindarmour.adv_robustness.detectors | |||
- **list[int]** - 相邻检测之间的查询数。 | |||
.. py:method:: set_threshold(threshold) | |||
.. py:method:: set_threshold(threshold, num_of_neighbors) | |||
设置参数num_of_neighbors和threshold。 | |||
@@ -37,11 +37,11 @@ mindarmour.fuzz_testing | |||
'params': {'eps': [0.3, 0.2, 0.4], 'alpha': [0.1], 'bounds': [(0, 1)]}}] | |||
...] | |||
- 支持的方法在列表 `self._strategies` 中,每个方法的参数必须在可选参数的范围内。支持的方法分为两种类型: | |||
- 首先,自然鲁棒性方法包括:'Translate', 'Scale'、'Shear'、'Rotate'、'Perspective'、'Curve'、'GaussianBlur'、'MotionBlur'、'GradientBlur'、'Contrast'、'GradientLuminance'、'UniformNoise'、'GaussianNoise'、'SaltAndPepperNoise'、'NaturalNoise'。 | |||
- 其次,对抗样本攻击方式包括:'FGSM'、'PGD'和'MDIM'。'FGSM'、'PGD'和'MDIM'分别是 FastGradientSignMethod、ProjectedGradientDent和MomentumDiverseInputIterativeMethod的缩写。 `mutate_config` 必须包含在['Contrast', 'GradientLuminance', 'GaussianBlur', 'MotionBlur', 'GradientBlur', 'UniformNoise', 'GaussianNoise', 'SaltAndPepperNoise', 'NaturalNoise']中的方法。 | |||
- 支持的方法在列表 `self._strategies` 中,每个方法的参数必须在可选参数的范围内。支持的方法分为两种类型: | |||
- 首先,自然鲁棒性方法包括:'Translate', 'Scale'、'Shear'、'Rotate'、'Perspective'、'Curve'、'GaussianBlur'、'MotionBlur'、'GradientBlur'、'Contrast'、'GradientLuminance'、'UniformNoise'、'GaussianNoise'、'SaltAndPepperNoise'、'NaturalNoise'。 | |||
- 其次,对抗样本攻击方式包括:'FGSM'、'PGD'和'MDIM'。'FGSM'、'PGD'和'MDIM'分别是 FastGradientSignMethod、ProjectedGradientDent和MomentumDiverseInputIterativeMethod的缩写。 `mutate_config` 必须包含在['Contrast', 'GradientLuminance', 'GaussianBlur', 'MotionBlur', 'GradientBlur', 'UniformNoise', 'GaussianNoise', 'SaltAndPepperNoise', 'NaturalNoise']中的方法。 | |||
- 第一类方法的参数设置方式可以在'mindarmour/natural_robustness/transform/image'中看到。第二类方法参数配置参考 `self._attack_param_checklists` 。 | |||
- 第一类方法的参数设置方式可以在'mindarmour/natural_robustness/transform/image'中看到。第二类方法参数配置参考 `self._attack_param_checklists` 。 | |||
- **initial_seeds** (list[list]) - 用于生成变异样本的初始种子队列。初始种子队列的格式为[[image_data, label], [...], ...],且标签必须为one-hot。 | |||
- **coverage** (CoverageMetrics) - 神经元覆盖率指标类。 | |||
- **evaluate** (bool) - 是否返回评估报告。默认值:True。 | |||
@@ -26,7 +26,7 @@ mindarmour.privacy.diff_privacy | |||
- **Tensor** - 生成的shape与给定梯度相同的噪声。 | |||
.. py:class:: mindarmour.privacy.diff_privacy.NoiseAdaGaussianRandom(norm_bound=1.0, initial_noise_multiplier=1.0, seed=0, noise_decay_rate=6e-06, decay_policy='Exp') | |||
.. py:class:: mindarmour.privacy.diff_privacy.NoiseAdaGaussianRandom(norm_bound=1.0, initial_noise_multiplier=1.0, seed=0, noise_decay_rate=6e-6, decay_policy='Exp') | |||
自适应高斯噪声产生机制。噪音会随着训练而衰减。衰减模式可以是'Time'、'Step'、'Exp'。 | |||
在模型训练过程中,将更新 `self._noise_multiplier` 。 | |||
@@ -77,7 +77,7 @@ mindarmour.privacy.diff_privacy | |||
**参数:** | |||
- **empirical_fraction** (Tensor) - 梯度裁剪的经验分位数。 | |||
- **empirical_fraction** (Tensor) - 梯度裁剪的经验分位数,最大值不超过 `target_unclipped_quantile` 。 | |||
- **norm_bound** (Tensor) - 梯度的l2范数的裁剪范围。 | |||
**返回:** | |||
@@ -92,7 +92,7 @@ mindarmour.privacy.diff_privacy | |||
详情请查看: `教程 <https://mindspore.cn/mindarmour/docs/zh-CN/master/protect_user_privacy_with_differential_privacy.html#%E5%B7%AE%E5%88%86%E9%9A%90%E7%A7%81>`_。 | |||
.. py:method:: create(mech_name, norm_bound=1.0, initial_noise_multiplier=1.0, seed=0, noise_decay_rate=6e-06, decay_policy=None) | |||
.. py:method:: create(mech_name, norm_bound=1.0, initial_noise_multiplier=1.0, seed=0, noise_decay_rate=6e-6, decay_policy=None) | |||
**参数:** | |||
@@ -159,7 +159,7 @@ mindarmour.privacy.diff_privacy | |||
- **Callback** - 隐私监视器。 | |||
.. py:class:: mindarmour.privacy.diff_privacy.RDPMonitor(num_samples, batch_size, initial_noise_multiplier=1.5, max_eps=10.0, target_delta=0.001, max_delta=None, target_eps=None, orders=None, noise_decay_mode='Time', noise_decay_rate=0.0006, per_print_times=50, dataset_sink_mode=False) | |||
.. py:class:: mindarmour.privacy.diff_privacy.RDPMonitor(num_samples, batch_size, initial_noise_multiplier=1.5, max_eps=10.0, target_delta=1e-3, max_delta=None, target_eps=None, orders=None, noise_decay_mode='Time', noise_decay_rate=6e-4, per_print_times=50, dataset_sink_mode=False) | |||
基于Renyi差分隐私(RDP)理论,计算DP训练的隐私预算。根据下面的参考文献,如果随机化机制被认为具有α阶的ε'-Renyi差分隐私,它也满足常规差分隐私(ε, δ),如下所示: | |||
@@ -56,7 +56,7 @@ mindarmour.privacy.evaluation | |||
[{"method": "knn", "params": {"n_neighbors": [3, 5, 7]}}, | |||
{"method": "lr", "params": {"C": np.logspace(-4, 2, 10)}}] | |||
- 支持的方法有knn、lr、mlp和rf,每个方法的参数必须在可变参数的范围内。参数实现的提示可在下面找到: | |||
- 支持的方法有knn、lr、mlp和rf,每个方法的参数必须在可变参数的范围内。参数实现的提示可在下面找到: | |||
- `KNN <https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html>`_, | |||
- `LR <https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html>`_, | |||
- `RF <https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html>`_, | |||
@@ -108,6 +108,7 @@ mindarmour.privacy.evaluation | |||
根据target_features重建图像。 | |||
**参数:** | |||
- **target_features** (numpy.ndarray) - 原始图像的深度表示。 `target_features` 的第一个维度应该是img_num。需要注意的是,如果img_num等于1,则 `target_features` 的形状应该是(1, dim2, dim3, ...)。 | |||
- **iters** (int) - 逆向攻击的迭代次数,应为正整数。默认值:100。 | |||
@@ -49,7 +49,7 @@ mindarmour.privacy.sup_privacy | |||
详情请查看: `教程 <https://mindspore.cn/mindarmour/docs/zh-CN/master/protect_user_privacy_with_suppress_privacy.html#%E5%BC%95%E5%85%A5%E6%8A%91%E5%88%B6%E9%9A%90%E7%A7%81%E8%AE%AD%E7%BB%83>`_。 | |||
.. py:method:: create(networks, mask_layers, policy='local_train', end_epoch=10, batch_num=20, start_epoch=3, mask_times=1000, lr=0.05, sparse_end=0.9, sparse_start=0.0) | |||
.. py:method:: create(networks, mask_layers, policy='local_train', end_epoch=10, batch_num=20, start_epoch=3, mask_times=1000, lr=0.05, sparse_end=0.90, sparse_start=0.0) | |||
**参数:** | |||
@@ -169,14 +169,13 @@ mindarmour.privacy.sup_privacy | |||
- **cur_step** (int) - 整个训练过程的当前步骤。 | |||
- **cur_step_in_epoch** (int) - 当前epoch的当前步骤。 | |||
.. py:class:: mindarmour.privacy.sup_privacy.MaskLayerDes(layer_name, grad_idx, is_add_noise, is_lower_clip, min_num, upper_bound=1.2) | |||
.. py:class:: mindarmour.privacy.sup_privacy.MaskLayerDes(layer_name, grad_idx, is_add_noise, is_lower_clip, min_num, upper_bound=1.20) | |||
描述需要抑制的层。 | |||
**参数:** | |||
- **layer_name** (str) - 层名称,如下获取一个层的名称: | |||
.. code-block:: | |||
for layer in networks.get_parameters(expand=True): | |||
@@ -192,11 +192,11 @@ MindArmour是MindSpore的工具箱,用于增强模型可信,实现隐私保 | |||
'params': {'eps': [0.3, 0.2, 0.4], 'alpha': [0.1], 'bounds': [(0, 1)]}}] | |||
...] | |||
- 支持的方法在列表 `self._strategies` 中,每个方法的参数必须在可选参数的范围内。支持的方法分为两种类型: | |||
- 首先,自然鲁棒性方法包括:'Translate', 'Scale'、'Shear'、'Rotate'、'Perspective'、'Curve'、'GaussianBlur'、'MotionBlur'、'GradientBlur'、'Contrast'、'GradientLuminance'、'UniformNoise'、'GaussianNoise'、'SaltAndPepperNoise'、'NaturalNoise'。 | |||
- 其次,对抗样本攻击方式包括:'FGSM'、'PGD'和'MDIM'。'FGSM'、'PGD'和'MDIM'分别是 FastGradientSignMethod、ProjectedGradientDent和MomentumDiverseInputIterativeMethod的缩写。 `mutate_config` 必须包含在['Contrast', 'GradientLuminance', 'GaussianBlur', 'MotionBlur', 'GradientBlur', 'UniformNoise', 'GaussianNoise', 'SaltAndPepperNoise', 'NaturalNoise']中的方法。 | |||
- 支持的方法在列表 `self._strategies` 中,每个方法的参数必须在可选参数的范围内。支持的方法分为两种类型: | |||
- 首先,自然鲁棒性方法包括:'Translate', 'Scale'、'Shear'、'Rotate'、'Perspective'、'Curve'、'GaussianBlur'、'MotionBlur'、'GradientBlur'、'Contrast'、'GradientLuminance'、'UniformNoise'、'GaussianNoise'、'SaltAndPepperNoise'、'NaturalNoise'。 | |||
- 其次,对抗样本攻击方式包括:'FGSM'、'PGD'和'MDIM'。'FGSM'、'PGD'和'MDIM'分别是 FastGradientSignMethod、ProjectedGradientDent和MomentumDiverseInputIterativeMethod的缩写。 `mutate_config` 必须包含在['Contrast', 'GradientLuminance', 'GaussianBlur', 'MotionBlur', 'GradientBlur', 'UniformNoise', 'GaussianNoise', 'SaltAndPepperNoise', 'NaturalNoise']中的方法。 | |||
- 第一类方法的参数设置方式可以在 `mindarmour/natural_robustness/transform/image <https://gitee.com/mindspore/mindarmour/tree/master/mindarmour/natural_robustness/transform/image>`_ 中看到。第二类方法参数配置参考 `self._attack_param_checklists` 。 | |||
- 第一类方法的参数设置方式可以在 `mindarmour/natural_robustness/transform/image <https://gitee.com/mindspore/mindarmour/tree/master/mindarmour/natural_robustness/transform/image>`_ 中看到。第二类方法参数配置参考 `self._attack_param_checklists` 。 | |||
- **initial_seeds** (list[list]) - 用于生成变异样本的初始种子队列。初始种子队列的格式为[[image_data, label], [...], ...],且标签必须为one-hot。 | |||
- **coverage** (CoverageMetrics) - 神经元覆盖率指标类。 | |||
- **evaluate** (bool) - 是否返回评估报告。默认值:True。 | |||
@@ -229,7 +229,7 @@ MindArmour是MindSpore的工具箱,用于增强模型可信,实现隐私保 | |||
- **micro_batches** (int) - 从原始批次拆分的小批次数。默认值:2。 | |||
- **norm_bound** (float) - 用于剪裁绑定,如果设置为1,将返回原始数据。默认值:1.0。 | |||
- **norm_bound** (float) - 对象可以生成不同类型的噪音。默认值:None。 | |||
- **norm_mech** (float) - 对象可以生成不同类型的噪音。默认值:None。 | |||
- **clip_mech** (Mechanisms) - 该对象用于更新自适应剪裁。默认值:None。 | |||
**异常:** | |||
@@ -288,7 +288,7 @@ MindArmour是MindSpore的工具箱,用于增强模型可信,实现隐私保 | |||
[{"method": "knn", "params": {"n_neighbors": [3, 5, 7]}}, | |||
{"method": "lr", "params": {"C": np.logspace(-4, 2, 10)}}] | |||
- 支持的方法有knn、lr、mlp和rf,每个方法的参数必须在可变参数的范围内。参数实现的提示可在下面找到: | |||
- 支持的方法有knn、lr、mlp和rf,每个方法的参数必须在可变参数的范围内。参数实现的提示可在下面找到: | |||
- `KNN <https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html>`_ , | |||
- `LR <https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html>`_ , | |||
- `RF <https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html>`_ , | |||
@@ -318,7 +318,7 @@ MindArmour是MindSpore的工具箱,用于增强模型可信,实现隐私保 | |||
- **ValueError** - input_shape的值都不是正int。 | |||
- **ValueError** - loss_weights的值都不是正值。 | |||
.. py:method:: evaluate(original_images, inversion_images, labels=None, new_network=None) | |||
.. py:method:: evaluate(original_images, inversion_images, labels=None, new_network=None) | |||
通过三个指标评估还原图像的质量:原始图像和还原图像之间的平均L2距离和SSIM值,以及新模型对还原图像的推理结果在真实标签上的置信度平均值。 | |||