96SEO 2026-02-19 18:37 8
。

现在的研究正在不断推动ML模型变得更快、更准确和更高效。
然而#xff0c;在设计和训练模型中经常会忽视的是安全性和健壮性方面#xff0c;特别是在面对欺骗模型的对手时。
如果你正在阅读这篇文章希望你能理解一些机器学习模型是多么有效。
现在的研究正在不断推动ML模型变得更快、更准确和更高效。
然而在设计和训练模型中经常会忽视的是安全性和健壮性方面特别是在面对欺骗模型的对手时。
本教程将提高您对ML模型安全漏洞的认识并将深入探讨对抗性机器学习这一热门话题。
您可能会惊讶地发现在图像中添加细微的干扰会导致模型性能的巨大差异。
鉴于这是一个教程我们将通过一个图像分类器上的示例来探索这个主题。
具体来说我们将使用第一个也是最流行的攻击方法之一快速梯度符号攻击Fast
就上下文而言有许多类型的对抗性攻击每一类攻击都有不同的目标和对攻击者知识的假设。
然而总的目标是在输入数据中添加最少的扰动以导致分类错误。
攻击者的知识有几种假设其中两种是:白盒和黑盒。
白盒攻击假定攻击者具有对模型的全部知识和访问权包括体系结构、输入、输出和权重。
黑盒攻击假设攻击者只访问模型的输入和输出对底层架构或权重一无所知。
目标也有几种类型包括错误分类和源/目标错误分类。
错误分类的目标意味着对手只希望输出分类是错误的而不关心新的分类是什么。
源/目标错误分类意味着对手想要更改原来属于特定源类的图像以便将其分类为特定的目标类。
在这种情况下FGSM攻击是一种以错误分类为目标的白盒攻击。
有了这些背景信息我们现在可以详细讨论攻击。
到目前为止最早也是最流行的对抗性攻击之一被称为快速梯度符号攻击(FGSM)由Goodfellow等人在解释和利用对抗性示例(
Examples)时介绍到。
这种攻击非常强大而且直观。
它被设计用来攻击神经网络利用他们学习的方式梯度gradients。
这个想法很简单比起根据后向传播梯度来调整权重使损失最小化这种攻击是根据相同的反向传播梯度调整输入数据来最大化损失。
换句话说攻击使用了输入数据相关的梯度损失方式通过调整输入数据使损失最大化。
sign(x)方向上调整使损失最大化。
结果将得到受到干扰的图像x
尽管图片还是“熊猫”但它已被目标网络错误分类为“长臂猿”(gibbon)了。
希望看到现在的你已经明确了解了本教程的动机那么让我们开始实现它吧。
在本节中我们将讨论本教程的输入参数定义受攻击的模型然后编写攻击代码并运行一些测试。
要用于运行的epsilon值的列表。
在列表中保留0是很重要的因为它代表了原始测试集上的模型性能。
而且直觉上我们认为epsilon越大扰动越明显但在降低模型精度方面攻击越有效。
因为这里的数据范围是
pytorch/examples/mnist进行训练的预训练MNIST模型的路径。
为了简单起见在这里
如果需要和可用使用CUDA的布尔标志。
注意带有CUDA的GPU对于本教程来说并不重要因为CPU不会占用太多时间。
如前所述受攻模型与pytorch/examples/mnist中的MNIST模型相同。
您可以训练并保存自己的MNIST模型也可以下载并使用提供的预训练模型。
这里的Net定义和测试dataloader是从MNIST示例中复制的。
本节的目的是定义模型和加载数据然后初始化模型并加载预先训练的权重。
F.relu(F.max_pool2d(self.conv1(x),
F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)),
torch.utils.data.DataLoader(datasets.MNIST(../data,
transformtransforms.Compose([transforms.ToTensor(),])),batch_size1,
model.load_state_dict(torch.load(pretrained_model,
最后本教程的核心结果来自测试test函数。
对这个测试函数的每次调用都在MNIST测试集上执行一个完整的测试步骤然后给出一个最终准确性报告。
但是注意这个函数也接受一个epsilon输入。
这是因为测试test函数报告了一个模型的准确性该模型正受到强度为epsilon的对手的攻击。
更具体地说对于测试集中的每个样本该函数计算损失对于输入的梯度data_grad用fgsm_attack
创建一个干扰图像perturbed_image然后检查干扰的例子是否是对抗性的。
除了检测模型的准确性外函数还需要保存和返回一些成功性的示例以便日后查看。
perturbed_data.squeeze().detach().cpu().numpy()adv_examples.append(
perturbed_data.squeeze().detach().cpu().numpy()adv_examples.append(
correct/float(len(test_loader))print(Epsilon:
实现的最后一部分是运行攻击操作。
在这里我们对输入中的每个epsilon值运行一个完整的测试步骤。
对于每个epsilon我们也保存最后的精度和一些将在接下来的部分中绘制的成功的对抗性例子。
请注意随着epsilon值的增加打印出来的精度是如何降低的。
另外注意用例表示原始未受攻击的测试准确性。
eps)accuracies.append(acc)examples.append(ex)
第一个结果是相对于epsilon的精确度。
正如前面提到的随着epsilon的增加我们预期测试的准确性会降低。
这是因为更大的epsilon意味着我们在使损失最大化的方向上迈出了更大的一步。
注意即使epsilon值是线性间隔的曲线的趋势却不是线性的。
比如说精度在eps0.05
并没有什么尽善尽美之事在这里随着epsilon的增加测试精度降低但扰动变得更容易察觉。
实际上攻击者必须考虑准确性下降和可感知性之间的权衡。
在这里我们展示了在每个值上成功的对抗性例子。
图中的每一行都显示不同的epsilon值。
第一行是eps0(不攻击)的例子它表示原始的无扰动的纯净图像。
每个图像的标题显示“原始分类-干扰分类adversarial
classification”。
请注意在eps0.15和eps0.3处开始出现明显的扰动。
然而在所有情况下尽管添加了躁动因素干扰人类仍然能够识别正确的类。
1plt.subplot(len(epsilons),len(examples[0]),cnt)plt.xticks([],
希望本教程对您来说能够提供一些关于对抗性机器学习主题的见解。
从这里开始有很多可能的方向。
这种攻击代表了对抗性攻击研究的开始并且自从有了许多关于如何攻击和保护ML模型不受对手攻击的后续想法以来。
事实上在NIPS
2017年有一场对抗性的攻防竞赛本文描述了很多比赛中使用的方法:对抗性的攻防及竞赛Adversarial
Competition。
在防御方面的工作也引入了使机器学习模型在一般情况下更健壮*robust*的想法这是一种自然扰动和反向精心设计的输入。
另一个研究方向是不同领域的对抗性攻击和防御。
对抗性研究并不局限于图像领域就比如这种语音到文本模型speech-to-text
models的攻击。
当然了解更多关于对抗性机器学习的最好方法是多动手。
首先尝试实现一个不同于NIPS
2017比赛的攻击看看它与FGSM有什么不同然后尝试设计保护模型使其免于自己的攻击。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback