基于 CIFAR-10 的 FGSM 和 PGD 对抗攻击与防御实验

更新时间:
复制为 MD 格式

实验介绍

  • 本实验将指导您在阿里云ECS服务器上完整部署一个深度学习对抗攻防实战项目。该项目基于PyTorch框架,在CIFAR-10数据集上实现了FGSM快速梯度符号方法和PGD投影梯度下降这两种经典的对抗攻击技术,同时采用对抗训练与TRADES防御策略来增强模型的抗干扰能力。整个实验过程包含数据准备、模型构建、训练优化、攻击测试等全流程实践环节,最终通过生成对抗样本并系统评估模型在对抗环境下的性能表现,帮助开发者全面掌握对抗攻防的核心技术。

  • 在实验设计方面,我们在原有基础上进行了重要升级,新增了基于TRADES防御机制的训练与评估流程。该机制通过优化替代损失函数来实现对抗防御,在保留标准对抗训练作为对照组的同时,专门加入了TRADES模型的训练与保存功能。针对评估体系的关键改进包括:将FGSMPGD攻击成功率的计算范围严格限定在模型原本能够正确分类的样本上,同时将鲁棒率明确定义为这些样本在遭受攻击后仍保持正确分类的比例,从而有效避免了初始分类错误样本对评估结果的干扰。

  • 为确保实验的跨平台可复现性,我们采取了多项技术保障措施。所有模型加载操作都规范使用设备映射参数,并在加载后显式指定运行设备。在加载预训练模型文件前,系统会自动检查文件是否存在,若发现缺失则会跳过相关评估环节并给出明确提示,避免程序异常中断。在可视化输出方面,实验专门为TRADES模型生成了对抗样本对比图,包括FGSMPGD攻击效果的直观展示,同时提供整体防御效果的对比分析图,便于开发者直观理解不同防御策略的实际效果。

  • 通过参与本实验,开发者不仅能够深入理解对抗攻击的内在机理和防御策略,还能掌握在实际项目中应用对抗攻击技术的工程方法。实验特别强调标准对抗训练与TRADES等先进防御技术的对比实践,帮助开发者建立提升模型鲁棒性的系统性思维。除了技术实现细节外,实验还结合人工智能安全的理论背景,深入探讨对抗攻击在自动驾驶、医疗诊断等现实场景中的潜在风险,以及防御策略在保障AI系统安全方面的重要价值。建议开发者在正式运行前仔细检查运行环境配置,并通过小规模试验验证后再展开全量训练,以确保实验效果达到预期目标。

背景知识

  • 本实验的背景知识涉及深度学习、图像分类、对抗攻击与防御等多个专业领域。从技术实现路径来看,实验采用ResNet18作为基础分类模型,并在CIFAR-10数据集上完成模型的训练和测试工作。在对抗攻击方面,实验选择了FGSMPGD这两种经典攻击方法进行对比研究。FGSM作为一种单步攻击技术,通过沿着梯度符号方向添加扰动来生成对抗样本;而PGD则采用迭代攻击策略,通过多次小步扰动产生更具威胁性的对抗样本。

  • 根据人工智能安全领域的理论研究成果,对抗攻击揭示了深度学习模型存在的严重安全隐患。即使是在标准测试集上表现优异的模型,在面对经过精心设计的微小扰动时,也可能出现完全错误的预测结果。这种脆弱性在自动驾驶、医疗诊断等安全敏感领域可能造成严重后果,凸显了研究对抗攻击防御机制的重要性和紧迫性。

  • 对抗训练作为一种有效的防御手段,其核心思想是在模型训练过程中引入对抗样本,使模型能够学习识别和抵抗干扰信号。本实验采用联合优化的训练策略,将正常样本和对抗样本的损失函数进行整合,从而训练出具有更强鲁棒性的分类模型。这种"以毒攻毒"的方法体现了通过暴露模型于攻击样本来提升其防御能力的创新思路。

  • 实验在传统对抗训练的基础上,创新性地引入了TRADES防御方法。该方法通过添加KL散度正则化项,在干净样本和对抗样本的输出分布之间建立平衡关系,在保证模型对正常样本分类准确率的同时,显著提升了对抗攻击的防御能力。理论分析和实验数据表明,TRADES方法能够提供更优的鲁棒性与准确性的平衡,在多个基准测试中都展现出优于传统对抗训练的性能表现。

  • 为确保实验结果的准确性和可靠性,研究团队对评估指标进行了重要改进。新的评估体系将攻击成功率的计算范围严格限定在模型原本能够正确分类的样本上,排除了初始分类错误的样本对统计结果的干扰。同时引入鲁棒率这一指标,专门衡量模型在面对攻击时保持正确分类的能力。这些改进使得评估结果更能真实反映模型在实际应用场景中的防御性能。

  • 为确保实验结果的准确性和可靠性,研究团队对评估指标进行了重要改进。新的评估体系将攻击成功率的计算范围严格限定在模型原本能够正确分类的样本上,排除了初始分类错误的样本对统计结果的干扰。同时引入鲁棒率这一指标,专门衡量模型在面对攻击时保持正确分类的能力。这些改进使得评估结果更能真实反映模型在实际应用场景中的防御性能。

  • 实验提供了全面的评估指标体系,包括攻击成功率、模型准确率和鲁棒率等关键指标,通过量化分析深入评估各种攻击和防御方法的效果。对比图表清晰展示了标准对抗训练与TRADES方法在面对不同强度攻击时的性能差异。这些分析工具为研究人员深入理解模型对抗攻击的响应特性,以及不同防御策略在实际应用中的优劣比较提供了重要参考。

实验目标

在本实验场景中,将让你体验最简单最经典的对抗攻击,来干扰图形识别模型。通过在CIFAR-10数据集上进行训练后,你可以自己调节配置文件来进行FGSM(快速梯度符号法)和PGD(投影梯度下降法)两种经典对抗攻击方法。并在此基础上引入对抗训练机制,提升模型鲁棒性。再通过Trades进行对抗防御通过生成人类难以察觉的细微扰动,实验也揭示了AI模型在安全关键场景中可能存在的风险。

实验室资源消耗说明

进入实操前,请确保阿里云账号满足以下条件:

  • 个人账号资源

    • 使用您个人的云资源进行操作,资源归属于个人。

    • 所有实验操作将保留至您的账号,请谨慎操作。

    • 平台仅提供手册参考,不会对资源做任何操作。

    • 说明

      使用个人账户资源,在创建资源时,可能会产生一定的费用,请您及时关注相关云产品资源的计费概述。

  • 确保已完成云工开物300元代金券领取。

  • 已通过实名认证且账户余额≥0元。

  • 本实验部署在阿里云ECS服务器环境下,具体配置为:4核(vCPU)、15 GiB内存、NVIDIA T4,1 Mbps带宽。

    • 计算资源消耗:

      • 模型训练阶段:使用ResNet18CIFAR-10数据集上进行100epoch的训练,耗时约4-5小时

      • 对抗攻击生成:PGD攻击(10次迭代)在测试集上的评估耗时约1-1.5小时

      • 内存占用:训练过程中峰值内存使用量约为8-10 GiB

    • 存储资源需求:

      • CIFAR-10数据集:约160 MB存储空间

      • 模型权重文件:ResNet18模型权重约45 MB

      • 对抗样本和可视化结果:约50-100 MB

      • 总计存储需求:约300-400 MB

    • 网络资源:

      • 数据集下载:首次运行需要下载CIFAR-10数据集(160 MB)

      • 模型权重加载:需要加载预训练权重(45 MB)

      • 实验过程中的网络流量主要限于初始数据加载阶段

    • 费用预估:

      基于阿里云ECS按量付费计费方式,使用ecs.u1-c1m1.2xlarge实例(4vCPU, 15GiB,T4)的费用约为12元/小时。预计完成全部实验(包括训练和评估)需要3小时,总费用约为36-40元。实际费用可能因训练轮数、批量大小等参数调整而有所变化。

      image

  • 本实验产生的费用优先使用优惠券,优惠券使用完毕后需您自行承担。如果您调整了资源规格、使用时长,或执行了本方案以外的操作,可能导致费用发生变化,请以控制台显示的实际价格和最终账单为准。

领取300元高校专属权益优惠券

在开始实验之前,请先在右侧屏幕阅读并同意上述创建资源的目的以及部分资源可能产生的计费规则,并点击“进入实操”再进行后续操作

image

本次实验需要您通过领取阿里云云工开物学生专属300元抵扣券兑换本次实操的云资源,如未领取请先点击领取。(若已领取请跳过)

image

重要

实验产生的费用优先使用优惠券,优惠券使用完毕后需您自行承担。

学生认证

实验步骤

一、实验环境配置

本项目旨在演示和评估在 CIFAR-10 数据集上针对 ResNet18 模型的两种经典对抗攻击方法:快速梯度符号攻击(FGSM) 和投影梯度下降攻击(PGD)。

  1. 文件结构解析

    为了帮助您快速理解项目,以下是主要文件和目录的分类说明:

    ├── config.py                      # 核心配置文件(需提前设定)

    ├── requirements.txt                # Python 依赖库(需提前安装)

    ├── data/                          # CIFAR-10 数据集(首次运行自动下载)

    ├── model.py                         # ResNet18 模型定义

    ├── train.py                       # 标准模型训练脚本

    ├── adversarial_training.py          # 标准对抗训练脚本(新增)

    ├── trades_training.py             # TRADES 防御训练脚本(新增)

    ├── attack.py                       # FGSM 攻击实现

    ├── pgd_attack.py                    # PGD 攻击实现

    ├── compare_defense.py               # 防御方法对比评估脚本(新增)

    ├── utils.py                        # 数据加载、可视化等辅助工具

    ├── cifar10_resnet18.pth            # 标准训练后生成的模型权重

    ├── cifar10_resnet18_adv.pth        # 标准对抗训练后生成的模型权重

    ├── cifar10_resnet18_trades.pth    # TRADES 训练后生成的模型权重

    ├── adv_examples.png                 # FGSM 攻击后生成的对抗样本图

    ├── pgd_adv_examples.png            # PGD 攻击后生成的对抗样本图

    ├── trades_fgsm_examples.png        # TRADES 模型的 FGSM 攻击可视化

    ├── trades_pgd_examples.png        # TRADES 模型的 PGD 攻击可视化

    └── defense_comparison.png          # 防御方法对比图表(新增)

    • 需要准备的文件:'config.py' 和 'requirements.txt' 是运行前必须关注的。数据集 'data/' 会在首次执行时自动下载。

    • 执行后生成的文件: '.pth' 模型文件和 '.png' 图像文件都是运行相应脚本后的产物。

    • 核心源代码:'.py' 脚本文件构成了项目的主体逻辑。

  2. 环境配置

    • 1、创建并激活 Conda 虚拟环境

      为方便用户代码执行,需要先执行来获取root权限

      su -

      执行

      conda create -n fgsm_exp

      python=3.8

      conda activate fgsm_exp

      (镜像文件中我们已经创建了conda的虚拟环境,并安装好需要的依赖库包)

    • 2、安装依赖

      pip install -r requirements.txt

  3. 完整使用流程

    • 1、先制操作

      • 点击用户部署链接,创建ECS云服务器,请按提示完成权限的申请。

        image

      • 创建服务实例的关键内容设置

        • 地域:建议选择中国境内城市如杭州、北京等

        • 付费类型配置:按量付费

        • 实例类型:GPU计算型gn6i

        • 实例密码:自行设置

        • 可用区ID:任选即可

      • 随后点击页面下方的查看明细,确保能够使用优惠券,随后点击下一步:确认订单——立即创建

        image

        重要
        1. 领取300元优惠券后,资源应为0元,且会提示【您当前账户的余额充足】!若提示余额不足等,请检查是否正确领取优惠券!

        2. 若出现云资源在选定的可用区库存不足:请更换可用区或切换地域

        3. 地域重试的错误提示:点击上一步,重新设置地域信息,可选择其他城市如上海、北京等

          image

        4. 若其他内容不变仍有以上错误:可尝试更换其他CPU、内存的不同规格(前提是优惠券可以使用)

      • 创建完成后我们点击右上角搜索框输入云服务器ECS,进入控制台。

        image

      • 点击左侧列表中实例按钮

        image

      • 若显示以下内容,点击切换到有资源的地域

        image

      • 点击远程连接

        image

        说明

        若之前操作过并停止了实例,再次实验时:选择对应实例后,在右侧操作点击启动,启动镜像实例后,再点击远程连接(初次实验可跳过此步)

        image

        image

      • 下拉展开更多登录方式,选择【通过VNC远程连接】

        image

      • 可通过密码登录。

        • 登录用户:gpu

        • 密码:Xd123456

      • 进入图像界面后,打开pycharm来到项目目录地址。

        image

        image

      • 需要先执行su 切换用户到root用户(密码为创建实例的密码),并且若未进入项目所在文件目录,则执行cd /home/FGSM+PGD

        再执行conda环境激活指令,命令行前缀为(fgsm_exp)则表示环境激活成功)

        image

    • 2、实验阶段

      • 1步:参数配置 (可选)

        • 在执行本实验前,您可以通过修改config.py文件灵活调整实验参数。该配置文件包含以下关键参数设置:

          • 基础参数

            • epsilon:控制对抗攻击的扰动强度(建议8/25516/255)

            • batch_size:训练/评估的批次大小(需根据GPU显存调整)

            • epochs:训练总轮数(标准训练和对抗训练需不同设置)

            • lr:学习率(影响模型收敛速度和性能)

          • TRADES专用参数

            • beta:KL散度项的权重(1-6之间,值越大鲁棒性越强)

            • alpha:PGD单次迭代步长

            • num_iter:PGD总迭代次数(影响攻击强度与计算开销)

          • 环境参数

            • device:运行设备(建议GPU设为'cuda')

            • data_path:数据集存储路径(首次运行自动下载)

        • 建议先在小规模数据上测试参数效果,再开展全量训练。特别注意TRADESbeta值需通过对比攻击成功率(ASR)和鲁棒率(Robustness)来优化选择。

        • 打开config.py文件如图,可以根据需求调整参数来达到相应要求。

          image

      • 2步:训练模式

        • 运行以下命令来训练一个标准的 ResNet18 模型。CIFAR-10 数据集将在首次运行时自动下载(目前实例已经下载了标准ResNet18 模型)。在终端执行以下命令

        • 您可以选择两种训练方式:

          1. 选项 A:标准对抗训练执行

            python train.py

            image

            (训练epoch我们选择论文推荐的100epoch,训练权重文件已经提供cifar10_resnet18_adv_epoch100.pth

            训练完成后,生成 `cifar10_resnet18_adv.pth` 模型权重文件。

            我们这里因为不是第一次执行训练,所以文件已经下载完毕提示“Files already downloaded and verified”

            image

          2. 选项 B: TRADES 防御训练执行一下命令

            (训练epoch我们选择论文推荐的76epoch,训练权重文件已经提供cifar10_resnet18_trades.pth

            python trades_train.py

            训练完成后,生成 `cifar10_resnet18_trades.pth` 模型权重文件。TRADES 方法通常能获得更好的鲁棒性-准确率权衡。

            image

      • 3步:执行对抗攻击

        • 我们提供了两种攻击方法的脚本,它们都会加载训练好的模型进行攻击

          1. 第一种:执行 FGSM 攻击

            python attack.py

            脚本会输出攻击成功率,并生成 `adv_examples.png` 用于可视化对比。

            image

          2. 第二种:执行 PGD 攻击

            python pgd_attack.py

            脚本会输出攻击成功率,并生成 `pgd_adv_examples.png` 可视化图像。

            image

      • 4步:对比不同防御方法

        如果您同时训练了标准对抗训练和 TRADES 模型,可以运行对比脚本:

        python compare_defense.py

        image

        此脚本会:

        - 评估两个模型在干净样本上的准确率

        - 评估两个模型对 FGSM 攻击的鲁棒性

        - 评估两个模型对 PGD 攻击的鲁棒性

        - 生成详细的对比表格和可视化图表 `defense_comparison.png`

        image

        - **生成 TRADES 模型的对抗样本可视化**:

        - `trades_fgsm_examples.png` - TRADES 模型对 FGSM 攻击的可视化

        - `trades_pgd_examples.png` - TRADES 模型对 PGD 攻击的可视化

        脚本会输出模型在干净样本和对抗样本上的准确率,并生成 'adv_examples.png' 用于可视化对比,如下图。

        可以看到:

        左侧Original:为原始CIFAR数据集的图片和对应标签。

        右侧Adversarial:为攻击后(也就是加入扰动后)的图片以及识别的标签(每个样本下面输出置信度)。

        虽然人肉眼观察无法发现扰动,但是扰动确实干扰了模型判断,判断为攻击成功。同时终端会统计所有CIFAR数据集攻击的总结构,计算出攻击成功率输出在终端。

        下图为FGSM攻击后样本的可视化

        image

        下图为PGD攻击后样本的可视化

        image

        下图为评估两个模型在干净样本上的准确率,评估两个模型对FGSM 攻击的鲁棒性,评估两个模型对 PGD 攻击的鲁棒性

        image

  4. 总结对比

    • FGSM 与 PGD 攻击原理深度对比

      • FGSM攻击本质上是一种"贪婪"的单步攻击方法,它通过计算损失函数相对于输入图像的梯度,然后沿着梯度符号方向进行一次性的扰动添加,这种方法虽然计算效率极高,但存在一个根本性的局限:它只能在梯度指向的局部方向上进行探索,无法充分利用整个扰动空间。由于神经网络的决策边界通常是高度非线性和复杂的,单一方向的梯度信息往往不足以找到最优的攻击路径,特别是当目标函数在扰动空间中存在多个局部最优解时,FGSM很容易陷入次优解。

      • 相比之下,PGD攻击采用了迭代优化的策略,它将对抗样本生成过程视为一个约束优化问题,通过多次小步长的梯度上升来逐步逼近真正的最优解。在每次迭代中,PGD不仅计算当前位置的梯度信息,还会将扰动投影回允许的扰动球内,这种投影操作确保了算法始终在合法的扰动空间内搜索。这种迭代过程的关键优势在于它能够"纠正"之前步骤中可能的次优选择,通过连续的梯度信息更新来动态调整攻击方向。当算法在某个迭代步骤中遇到梯度信息不准确或局部最优的情况时,后续的迭代步骤可以基于新的梯度信息来重新校准攻击路径,从而避免陷入局部最优解。

      • 从优化理论的角度来看,PGD攻击实际上是在执行一种受约束的梯度上升算法,其目标是在给定的扰动预算内最大化模型的预测误差。这个过程中的多次迭代使得算法能够更充分地探索高维扰动空间中的复杂结构,而不是像FGSM那样仅仅依赖单次梯度计算的"快照"信息。神经网络的损失函数在输入空间中通常呈现出复杂的多峰结构,存在大量的局部最大值点,而PGD的迭代搜索机制使其更有可能找到全局最优或接近全局最优的攻击点,这直接转化为更高的攻击成功率。

      • 此外,PGD攻击的另一个重要优势在于其对梯度噪声的鲁棒性。在实际的神经网络中,梯度计算往往会受到数值精度、批次采样随机性等因素的影响,导致单次梯度计算结果可能包含噪声。FGSM由于只进行一次梯度计算,因此对这种梯度噪声非常敏感,噪声可能会将攻击引向错误的方向。而PGD通过多次迭代,能够利用多次梯度计算的平均效应来减少噪声的影响,使得整体的攻击方向更加稳定和准确。

      • 从算法收敛性的角度分析,PGD攻击实际上在执行一种更加精细的搜索策略。每次迭代的小步长移动(通常alpha <<epsilon)使得算法能够更好地跟随损失函数的梯度流,而不会出现FGSM中可能出现的"过冲"现象。在FGSM攻击中,由于一次性施加较大的扰动,可能会跳过决策边界附近的最优攻击点,或者由于步长过大而偏离最优攻击方向。PGD的小步长迭代策略能够更精确地逼近决策边界,找到恰好能够改变模型预测结果的最小有效扰动区域。

      • 最后,从对抗样本的质量角度考虑,PGD生成的对抗样本通常具有更好的"隐蔽性"和"转移性"。由于PGD能够找到更接近最优的攻击点,生成的对抗扰动往往更加集中在模型最脆弱的特征维度上,这不仅提高了攻击的成功率,也使得生成的对抗样本在视觉上更难被人类察觉,同时在不同模型之间具有更好的转移攻击能力。这种优势使得PGD攻击不仅在学术研究中被广泛采用,也成为了评估模型鲁棒性的标准基准方法。

    • 标准对抗训练与 TRADES 防御的深度对比

      • 标准对抗训练作为最直观的防御策略,采用了一种"以攻代防"的思想,即在训练过程中直接将对抗样本作为正常训练数据的一部分,通过最小化对抗样本的分类损失来强制模型学习对抗鲁棒的特征表示。这种方法的核心假设是,如果模型能够正确分类训练过程中遇到的对抗样本,那么它在测试时也应该能够抵御类似的攻击。然而,这种直接的策略存在一个根本性的困境,即所谓的鲁棒性-准确性权衡问题,当模型过度关注对抗样本的分类准确性时,往往会牺牲在干净样本上的泛化能力,导致自然准确率显著下降。这种现象的深层原因在于,对抗样本和自然样本在特征空间中的分布存在本质差异,标准对抗训练试图让模型同时适应两种截然不同的数据分布,但由于模型容量有限,这种适应过程往往会导致模型在两个目标之间做出次优的妥协。

      • 相比之下,TRADES防御方法从一个更加精细的角度重新审视了对抗训练的目标,它认识到对抗鲁棒性的本质不在于强制模型对抗样本给出正确的硬标签预测,而在于保证模型在受到扰动前后的输出分布保持一致性。这种思想的核心洞察在于,如果一个微小的输入扰动导致模型输出概率分布发生剧烈变化,那么这种不稳定性本身就暴露了模型的脆弱性,无论最终的分类结果是否正确。因此,TRADES通过引入KL散度正则化项,直接约束模型在原始样本和对抗样本上的输出分布之间的差异,这种软约束相比于标准对抗训练的硬标签约束,为模型提供了更大的学习灵活性。具体而言,KL散度项允许模型在面对对抗扰动时,输出分布可以发生适度变化,但这种变化必须是渐进且可控的,而不是突然的决策边界跨越。

      • 从优化理论的视角分析,TRADES的损失函数设计实现了一个巧妙的多目标优化框架。第一项交叉熵损失确保模型在干净样本上保持足够的判别能力,这是模型实用性的基础保证,而第二项KL散度正则化则从另一个维度约束模型的决策平滑性,使得模型的预测对输入扰动具有更强的不变性。参数Beta在这个框架中扮演着关键的杠杆作用,它控制着模型在准确性和鲁棒性之间的资源分配,较小的Beta值使模型更关注自然准确率,而较大的Beta值则强制模型优先考虑对抗鲁棒性。这种显式的权衡机制使得TRADES能够根据具体应用场景的需求,灵活地在帕累托前沿上选择最优的工作点,这是标准对抗训练所缺乏的可控性。

      • 从决策边界的几何视角来看,TRADES和标准对抗训练对模型的塑造方式存在本质区别。标准对抗训练通过强制模型在对抗样本位置做出正确分类,实际上是在扩大不同类别之间的决策边界间隔,使得对抗扰动难以将样本推送到错误的分类区域。然而,这种边界扩展往往是不均匀的,模型可能在某些方向上过度扩展边界,导致在自然样本的密集区域形成不必要的复杂决策面,从而损害泛化性能。而TRADES通过约束输出分布的平滑性,实际上是在训练一个具有更加平滑和规则决策边界的模型,这种平滑性不仅提高了对抗鲁棒性,也使得模型的决策过程更加可解释和可信。在高维特征空间中,这种平滑的决策边界意味着模型对特征空间中的局部扰动具有更好的容忍度,不会因为单个或少数几个特征维度的变化而做出激进的预测改变。

      • 从训练动态的角度考察,TRADES的梯度反传机制为模型学习提供了更丰富的监督信号。在标准对抗训练中,如果对抗样本已经被正确分类,那么该样本对模型参数更新的贡献就会减弱,导致模型可能忽略了该样本仍然存在的潜在脆弱性,即使预测正确但置信度分布可能非常接近决策边界。而TRADESKL散度项持续监控原始样本和对抗样本之间的分布差异,即使对抗样本被正确分类,只要其输出分布与原始样本存在显著差异,模型仍然会收到强烈的正则化信号去减小这种差异。这种持续的监督确保了模型不仅学会正确分类,还学会以一种稳定和一致的方式进行分类,从而在根本上提升了模型的鲁棒性下界。

      • 此外,TRADES在处理模型过拟合问题上展现出独特的优势。标准对抗训练由于直接优化对抗样本的分类损失,容易导致模型记忆训练集中特定的对抗扰动模式,这种记忆在面对测试时的新型攻击或不同扰动幅度时会失效。而TRADES通过约束输出分布的变化量,实际上是在学习一种更加泛化的鲁棒性概念,模型学到的不是如何应对特定的对抗样本,而是如何在整体上保持预测的稳定性。这种本质性的鲁棒性使得TRADES训练的模型在面对训练时未见过的攻击类型或不同的扰动预算时,仍然能够保持较好的防御能力,展现出更强的泛化性能。

      • 最后,从实际应用的角度来看,TRADES提供的可调节权衡机制使其特别适合于那些对自然准确率和鲁棒性有明确需求的真实场景。在医疗诊断、自动驾驶等安全关键领域,通过精心调节Beta参数,可以在保证系统基本功能正常运作的前提下,最大化系统对恶意攻击的抵抗能力。而在对抗竞赛或安全评估场景中,可以选择较大的Beta值来获得极致的鲁棒性。这种灵活性使得TRADES不仅是一个学术研究工具,更是一个具有广泛实用价值的防御框架,它为对抗鲁棒性研究和应用提供了一个更加成熟和可控的解决方案。

    • 扩展与探索

      • 调整攻击强度:在 'config.py' 中尝试不同的 'epsilon' 值,观察它如何影响模型的准确率和攻击成功率。

      • 对抗训练:尝试修改 'train.py' 以引入对抗训练,将攻击生成的对抗样本加入训练集中,以提升模型的鲁棒性。

      • 探索其他攻击:基于现有框架,实现如 MI-FGSM、CW 等更高级的攻击算法。

二、实验资源释放(请同学们一定按要求及时释放,以避免不必要的消耗)

完成实验后,来到云服务器ECS控制台,点击实例ID进入实例详情,随后点击释放,确认即可。

image

image

学生也可选择立刻释放或定时释放。(数据丢失风险 盘一旦释放,所存数据会一起删除且不可恢复,请在释放前确认数据均已备份。)

image

image

重要

其他关于ECS实验资源释放的补充

  • ECS释放实例:可点击查看详细的文档说明——释放实例

  • ECS停止实例:可点击查看详细的文档说明——停止实例

  • 按量付费实例:停止后会继续计费,只有释放实例后,实例才会停止计费。具体操作,请参见释放实例。

  • 包年包月实例:停止后,继续计费,不会影响其到期时间。

关闭实验

  • 完成实验后,点击 结束实操

    image

  • 请确保已经按照上述步骤完成了资源的释放

    • 点击 取消 ,则回到实验页面

      image

    • 点击 确定 ,可结束实验

      image

      最后直接点击 x 关闭,从而退出整个实验页面

      image