对抗性机器学习的初学者指南

译文
人工智能 机器学习
本文针对对抗性机器学习,讨论了常规机器学习模型所面临的四类攻击,可采用的防御措施,以及各类实用工具。

对抗性机器学习(Adversarial machine learning)主要是指在对攻击者的能力、及攻击后果的研究与理解的基础上,设计各种能够抵抗安全挑战(攻击)的机器学习(ML)算法。

对抗性机器学习认为,机器学习模型通常会面临如下四种类型的攻击:

提取式攻击(Extraction attacks)

在上图所示的提取式攻击模型中,攻击者只要获取了Oracle prediction的访问权限,就会窃取那些远程部署的机器学习模型的副本。此类攻击的背后原理是,攻击者通过输入,向目标模型发出请求,以提取尽可能多的信息,并使用掌握到的输入和输出集,来产生并训练一个替代模型(substitute model)。

当然,该提取模型在实施的过程中会有一定的困难,攻击者需要通过强劲的计算能力,来重新训练具有准确性和保真度的新模型,以从头开始替代现有的模型。

防御

当模型对给定输入进行分类时,我们需要限制其输出信息。目前,我们可以采取的方法包括:

  • 使用差分隐私(Differential Privacy)。
  • 使用集成算法(ensembles,译者注:是通过构建并结合多个机器学习模型,来完成学习任务)。
  • 在最终用户与PRADA(https://arxiv.org/abs/1805.02628)等模型之间构建代理。
  • 限制请求的数量。

推理攻击(Inference attacks)

推理攻击旨在通过反转机器学习模型中的信息流,以方便攻击者洞察到那些并未显式共享的模型。从统计学的角度来说,由于私有的机密数据往往与公开发布数据有着潜在的相关性,而机器学习的各种分类器(classifier)具有捕捉到此类统计相关性的能力,因此推理攻击会给个人和系统构成严重的隐私和安全威胁。

通常,此类攻击会包括三种类型:

  • 成员推理攻击(Membership Inference Attack,MIA,译者注:通过识别目标模型在行为上的差异,来区分其中的成员和非成员)。
  • 属性推理攻击(Property Inference Attack,PIA,译者注:攻击者利用公开可见的属性和结构,推理出隐蔽或不完整的属性数据)。
  • 恢复训练数据(Recovery training data,译者注:试图恢复和重建那些在训练过程中使用过的数据)。

防御

使用各种高级加密措施,其中包括:

  • 差分加密(Differential cryptography)。
  • 同态加密(Homomorphic cryptography)。
  • 安全的多方计算(Secure Multi-party Computation)。
  • Dropout(译者注:在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率,将其暂时从网络中丢弃)等技术。
  • 模型压缩(译者注:通过减少算法模型的参数,使算法模型小型化)。

投毒攻击(Poisoning attacks)

投毒攻击技术是指攻击者在训练数据集中插入损坏性数据,以在训练的过程中破坏目标的机器学习模型。计算机视觉系统在面对特定的像素模式进行推理时,会被此类数据投毒技术触发某种特定的行为。当然,也有一些数据投毒技术,旨在降低机器学习模型在一个或多个输出类别上的准确性。

由于此类攻击可以在使用相同数据的不同模型之间进行传播,因此它们在训练数据上执行的时候,很难被检测到。据此,攻击者会试图通过修改决策边界,来破坏模型的可用性,从而产生各种不正确的预测。

此外,攻击者还会在目标模型中创建后门,以便他们创建某些特定的输入,进而产生可被操控的预测,以及方便后续攻击的结果。

防御

  • 保护训练数据的完整性。
  • 保护算法,并使用各种健壮的方法去训练模型。

规避攻击(Evasion attacks)

攻击者通过插入一个细微的扰动(如某种形式的噪声),并转换成某个机器学习模型的输入,并使之产生分类错误。

虽然与投毒攻击有几分类似,但是规避攻击主要尝试的是,在推理阶段、而不是在训练中,利用模型的弱点。当然,攻击者对于目标系统的了解程度是至关重要的。他们对于目标模型、及其构建方式越了解,就越容易对其发起攻击。

规避攻击通常发生在,当某个网络中被输入了“攻击性样本(adversarial example)”时。这往往是一种被“精心构造”扰动性输入。它看似与那些未被篡改的副本相同,但实际上完全避开了正确的分类器。

防御

  • 通过训练,使用健壮的模型,来对抗攻击性样本。
  • 将“消毒”过的输入馈入模型。
  • 采取梯度正则化(Gradient regularization)。

各类实用工具

对抗性鲁棒工具箱

对抗性鲁棒工具箱(Adversarial Robustness Toolbox,ART,https://github.com/Trusted-AI/adversarial-robustness-toolbox)是一种可用于机器学习的安全类Python库。由ART提供的工具可让开发与研究人员,去评估和防御应用程序、及其所用到的机器学习模型,进而抵御上面提到的四类威胁与攻击。

ART能够支持时下流行的机器学习框架,例如:TensorFlow、Keras、PyTorch、以及scikit-learn。而它支持的数据类型包括:图像、数据表、音频、以及视频等。同时,它还支持分类、物体检测、以及语音识别等机器学习任务。您可以通过命令:pip install adversarial-robustness-toolbox,来安装ART。

ART的攻击示例如下代码段所示:

from art.attacks.evasion import FastGradientMethod
attack_fgm = FastGradientMethod(estimator = classifier, eps = 0.2)
x_test_fgm = attack_fgm.generate(x=x_test)
predictions_test = classifier.predict(x_test_fgm)

其对应的防御示例为:

from art.defences.trainer import AdversarialTrainer
model.compile(loss=keras.losses.categorical_crossentropy, optimizer=tf.keras.optimizers.Adam(lr=0.01), metrics=["accuracy"])
defence = AdversarialTrainer(classifier=classifier, attacks=attack_fgm, ratio=0.6)
(x_train, y_train), (x_test, y_test), min_pixel_value, max_pixel_value = load_mnist()
defence.fit(x=x_train, y=y_train, nb_epochs=3)

Counterfit

​Counterfit​​是一种命令行工具和通用的自动化层级,可以被用于评估机器学习系统的安全性。基于ART和TextAttack(译者注:是一种Python框架,可用于NLP中的对抗性攻击、数据增强和模型训练)的Counterfit,是专为机器学习模型的安全审计而开发的,可实现黑盒式的规避算法。Counterfit包括如下实用命令:

--------------------------------------------------------
Microsoft
__ _____ __
_________ __ ______ / /____ _____/ __(_) /_
/ ___/ __ \/ / / / __ \/ __/ _ \/ ___/ /_/ / __/
/ /__/ /_/ / /_/ / / / / /_/ __/ / / __/ / /
\___/\____/\__,_/_/ /_/\__/\___/_/ /_/ /_/\__/
#ATML
--------------------------------------------------------
list targets
list frameworks
load <framework>
list attacks
interact <target>
predict -i <ind>
use <attack>
run
scan

可深入研读的参考链接

译者介绍

陈 峻 (Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验;持续以博文、专题和译文等形式,分享前沿技术与新知;经常以线上、线下等方式,开展信息安全类培训与授课。

原文标题:Adversarial Machine Learning: A Beginner’s Guide to Adversarial Attacks and Defenses,作者: Miguel Hernández


责任编辑:华轩 来源: 51CTO
相关推荐

2021-12-30 12:05:38

对抗性攻击机器学习

2022-07-01 12:25:34

AI机器学习系统

2022-04-24 15:21:01

MarkdownHTML

2010-06-13 11:13:38

UML初学者指南

2022-07-22 13:14:57

TypeScript指南

2022-10-10 15:28:45

负载均衡

2021-05-10 08:50:32

网络管理网络网络性能

2022-03-28 09:52:42

JavaScript语言

2023-07-28 07:31:52

JavaScriptasyncawait

2023-07-03 15:05:07

预测分析大数据

2017-05-25 11:14:21

机器学习算法神经网络

2017-05-25 13:37:46

机器学习算法神经网络

2022-09-05 15:36:39

Linux日志记录syslogd

2010-08-26 15:47:09

vsftpd安装

2018-10-28 16:14:55

Reactreact.js前端

2023-04-17 11:42:07

2023-02-10 08:37:28

2012-03-14 10:56:23

web app

2009-09-28 09:45:00

CCNA学习经验CCNA

2020-09-08 19:03:41

Java代码初学者
点赞
收藏

51CTO技术栈公众号