站长 网站对比,网站开发答辩,wordpress is_single(),晋江网站设计之前把机器学习#xff08;Machine Learning#xff09;的安全问题简单记录了一下#xff0c;这里有深入研究了一些具体的概念#xff0c;这里记录一下方便以后查阅。 Adversarial Machine Learning#xff08;对抗机器学习#xff09; Adversarial Examples 相关内容Eva…之前把机器学习Machine Learning的安全问题简单记录了一下这里有深入研究了一些具体的概念这里记录一下方便以后查阅。 Adversarial Machine Learning对抗机器学习 Adversarial Examples 相关内容Evading Machine LearningAdversarial ExamplesAdversarial Examples 的特点Adversarial Examples 的形式化定义Adversarial Examples 的生成方法Adversarial Examples 的防御方法Non-targeted Adversarial Examples 为什么会有 Adversarial Examples攻击方式的分类Gradient-based attacksConfidence score attacksHard label attacksSurrogate model attacksBrute-force attacks 如何防御 Adversarial ExamplesFormal MethodsEmpirical DefensesAdversarial trainingGradient maskingInput modificationDetectionExtra (NULL) Class Adversarial Attacks 和 Adversarial Defenses对抗攻击Adversarial AttacksAdversarial attacks 的目标Adversarial attacks 的攻击方法对抗样本Adversarial ExamplesAdversarial attacks 的影响 对抗防御Adversarial Defenses对抗训练Adversarial Training输入预处理Input Preprocessing模型正则化Model Regularization输入转换Input Transformation模型架构的鲁棒性设计使用对抗样本的检测方法(Detection) Randomized Neural NetworksRandomized neural networks 的关键特性Randomized neural networks 的常见类型Extreme Learning Machines (ELMs)Random Vector Functional Link (RVFL)Stochastic Neural Networks (SNNs)Dropout Randomized ActivationRandomized neural networks 的理论基础 参考资料 Adversarial Examples 相关内容
机器学习技术的发展令人兴奋。然而就像任何新技术或发明一样机器学习不仅带来了新的惊人功能而且不幸的是也带来了新的漏洞。
Evading Machine Learning
对抗式 ML 领域的领军人物之一巴蒂斯塔-比吉奥Battista Biggio在一篇论文中指出**对抗式机器学习Adversarial ML**领域最早可以追溯到 2004 年。当时人们在垃圾邮件过滤的背景下对对抗性实例进行了研究结果表明线性分类器很容易被垃圾邮件内容中一些精心设计的变化所欺骗。
完整时间表
对抗样本adversarial examples 的 “新颖性 ”其实是在深度学习中发现的。2013 年谷歌人工智能公司的克里斯蒂安-塞格迪Christian Szegedy正在研究神经网络如何 “思考”却发现了一个所有神经网络似乎都具备的有趣特性–容易被微小扰动所迷惑。鉴于深度学习已经变得如此重要 adversarial example 和 Adversarial ML 领域最终成为了焦点。
下面是一些例子
图片用对抗眼镜欺骗人脸检测。
视频DEFCON 上的隐形 T 恤。 音频语音到文本的转录。 语言情感分析和文本关联。 Adversarial Examples
通过对输入数据进行精心设计的微小扰动生成的特殊样本。这些扰动在对人类观察者来说通常不可察觉但会导致机器学习模型做出错误或意外的预测结果。 Adversarial Examples 的特点 精心设计的扰动Adversarial Perturbations 对抗样本并不是随机产生的而是通过某种算法如梯度攻击方法有意生成的。这些扰动的目标是改变模型的决策边界使其产生错误输出。 对人类而言不可见 人类观察者通常无法分辨正常样本与对抗样本之间的差别。例如一张图片的对抗样本可能只改变了像素的很小一部分肉眼看不出差异但深度学习模型却被误导。 目标模型依赖性 对抗样本通常针对特定的模型生成称为白盒攻击White-Box Attack即攻击者完全了解目标模型。在黑盒攻击Black-Box Attack中即使对目标模型不了解攻击仍可能有效通过迁移性特征。
Adversarial Examples 的形式化定义
给定一个分类模型 f ( x ) f(x) f(x)原始输入 x x x目标类别 y y y对抗样本 x ′ x x′ 满足以下条件
相似性对抗样本 x ′ x x′ 与原始输入 x x x 的差异很小可以通过某种度量如 ∥ x − x ′ ∥ p \|x - x\|_p ∥x−x′∥p衡量。误导性模型预测结果发生变化即 f ( x ′ ) ≠ f ( x ) f(x) \neq f(x) f(x′)f(x)。
例如
对于图像分类任务输入 x x x 是一张狗的图片模型预测为“狗”。添加了对抗扰动后的 x ′ x x′ 仍然看起来像狗但模型预测为“猫”。
Adversarial Examples 的生成方法
一些常见的对抗样本生成算法包括
FGSMFast Gradient Sign Method 使用目标模型的梯度信息快速生成能够最大化误差的微小扰动。 PGDProjected Gradient Descent 多步优化的版本通过多次迭代精确调整扰动。 DeepFool 尝试找到最小的扰动使样本跨过模型的决策边界。 CWCarlini and Wagner Attack 利用优化目标函数生成更强的对抗样本。
Adversarial Examples 的防御方法
对抗训练 在训练过程中加入对抗样本使模型学习到对抗扰动的模式。 输入预处理 对输入数据进行平滑、裁剪或其他变换以减少对抗扰动的影响。 正则化技术 引入鲁棒性损失函数提高模型对噪声的免疫力。 模型架构优化 设计新的网络结构使模型更加稳健。
Non-targeted Adversarial Examples
上面是一个常见的 targeted adversarial example人眼无法检测到图像的变化。而 non-targeted adversarial examples 则是我们不用太在意对抗示例对人眼是否有意义它对人眼来说可能只是随机噪音。 为什么会有 Adversarial Examples
目前存在多种假设 第一个也是最原始的假说来自 Szegedy 自己的论文试图解释 adversarial examples他们认为 adversarial examples 的存在是由于流形manifold 中存在低概率的 “口袋pockets”即太多非线性以及网络正则化不良。 一种相反的理论该理论由 Goodfellow 首创他认为现代机器学习尤其是深度学习系统中的线性度太高导致了 adversarial examples 的出现。古德费洛认为像 ReLU 和 Sigmoid 这样的激活函数在中间基本上都是直线恰好我们喜欢在中间保留梯度以防止它们爆炸或消失。因此在神经网络中你会看到大量的线性函数它们相互延续输入方向一致。如果你在某些输入上添加微小的扰动这里和那里的几个像素这些扰动就会在网络的另一端累积成巨大的差异然后它就会吐出胡言乱语。 第三种也可能是目前最普遍采用的假设是倾斜边界tilted boundary。简而言之作者认为由于模型永远无法完美拟合数据否则测试集的准确率就会始终保持在 100%因此在分类器的边界和采样数据的实际子阈值之间总会存在一些不利的输入。他们还根据经验推翻了前两种方法。 麻省理工学院最近发表的一篇论文认为对抗性示例并不是一个错误而是神经网络观察世界的一个特征。我们人类局限于三维空间无法将噪声模式区分开来但这并不意味着这些噪声模式不是好的特征。我们的眼睛只是糟糕的传感器。因此我们真正面对的是一台比我们自己更复杂的模式识别机器–与其把我们不理解的模式称为 “adversarial examples”不如接受这个世界比我们看到的要复杂得多。如果整篇论文太长我强烈推荐这篇 11 分钟的博客摘要。
攻击方式的分类
攻击者对目标系统或其 “能力”的了解非常重要。他们对您的模型及其构建方式了解得越多就越容易对其发起攻击。
在 Calypso将规避攻击evasion attacks分为五类
使用梯度的攻击使用置信度的攻击使用硬标签的攻击使用代理模型的攻击暴力攻击
Gradient-based attacks
基于梯度的攻击Gradient-based attacks 顾名思义需要访问模型的梯度因此是一种白盒攻击。这些攻击无疑是最强大的因为攻击者可以利用他们对模型思考方式梯度的详细了解从数学上优化攻击。
这也是攻击加固模型最有效的技术。事实上研究表明如果攻击者可以访问模型的梯度他们就总能制作出一组新的 adversarial examples 来欺骗模型。这就是为什么 adversarial examples 如此重要的原因–抛开隐蔽性的安全性不谈要防御对抗示例其实非常困难。
Confidence score attacks
置信度得分攻击Confidence score attacks 使用输出的分类置信度来估计模型的梯度然后执行与上述基于梯度的攻击类似的智能优化。这种方法不需要攻击者了解模型的任何信息因此属于黑盒攻击。
Hard label attacks
硬标签攻击Hard label attacks 只依赖模型输出的标签“猫”、“狗”、“热狗”不需要置信度分数。这让攻击变得更加愚蠢但也可以说更加现实你知道有多少公共端点会输出分类分数 这类攻击中最强大的仍然是边界攻击。
Surrogate model attacks
代用模型攻击Surrogate model attacks 与基于梯度的攻击非常相似只是需要额外的步骤。如果对手无法访问模型的内部结构但仍想发动 WhiteBox 攻击他们可以尝试首先在自己的机器上重建目标的模型。他们有几种选择
如果目标模型可以作为一个预测器oracle来使用攻击者可以通过反复查询端点和观察输入输出对来学习它逆向工程 。如果目标模型应用于标准分类任务如人脸检测–攻击者很可能只需猜测模型的架构和训练数据并以此为基础构建一个副本。如果攻击者根本不掌握任何信息由于我们前面讨论过的可转移性他们可以简单地使用任何现成的图像分类器并生成不完美但功能正常的对抗示例
Brute-force attacks
最后是 “暴力 ”攻击brute-force attacks。这些攻击完全不使用优化来生成对抗示例而是采用简单的方法例如
随机旋转/平移图像应用常见的扰动添加大 SD 值的高斯噪声
如何防御 Adversarial Examples
Formal Methods
让我们从 形式化方法formal methods 开始因为它们更容易讨论。在芯片设计或航空航天与国防等行业工作过的人对形式化方法一定不会陌生。对于其他人来说形式化方法是一种数学技术用于保证软件/硬件系统的鲁棒性。 在大多数软件中如果设计或构建错误可能会导致一些停机时间和一些愤怒的客户评论但可能不会造成人员伤亡。但在某些行业这种缺陷是不可接受的。你不可能在制造了 100 万个芯片后才发现芯片的某些部分存在缺陷你也不可能把一架飞机送上天空除非你用数学方法验证了每个部件都能按预期工作。
形式化方法的工作方式非常简单就是尝试每一种可能的情况并观察其结果如何。在规避攻击领域这意味着在一定的扰动半径内尝试生成每一种可能的对抗实例。举个例子假设你有一张只有两个灰度像素的图像比方说 180 和 80。然后假设你决定每个方向的扰动范围为 3。这样就有 (313)² 或 49 种组合可供选择–如果你想正式验证这些组合都不具有对抗性就必须将每种组合都放入你的模型中看看另一端会出现什么。 一张 2 个像素的无色图像就有 49 种组合。那么一张 1000 x 1000 像素的彩色图像每个方向的扰动范围都是 3 呢这需要检查 ( 3 1 3 ) ( 3 ∗ 1000 ∗ 1000 ) (313)^{(3*1000*1000)} (313)(3∗1000∗1000) 种组合EXCEL 拒绝生成数字
形式化方法它们并不便宜而且从计算角度来看往往完全难以解决。事实上就神经网络而言当今最先进的形式化方法技术无法验证超过几层深度的网络。因此就目前而言这是一个值得实现但难以实现的愿望。
Empirical Defenses
经验防御empirical defenses顾名思义就是依靠实验来证明防御的有效性。例如你可能会对一个模型进行两次攻击–首先是一个正常的、未设防的版本然后是一个加固的版本–并观察每个版本的易骗程度希望加固的模型表现得更好。
因此formal methods 试图计算每一种可能的情况并在计算过程中验证是否存在 adversarial examples而 empirical methods 则采取 “你看到它有效为什么还要计算 ”的方法。
下面我们就来介绍几种比较流行的方法
Adversarial trainingGradient maskingInput modificationDetectionExtra class
Adversarial training
对抗训练Adversarial training–当今最受关注的防御方法也可以说是最有效的防御方法。在对抗训练过程中防御者使用训练池中的对抗样本对模型进行再训练但标注的是正确的标签。这可以教会模型忽略噪声只从 “强大 ”的特征中学习。
对抗训练的问题在于它只能使模型抵御用于制作训练池中初始样本的相同攻击。因此如果有人使用不同的算法发起优化攻击或发起自适应攻击即对已防御模型发起白盒攻击他们就能重新欺骗分类器就像没有防御一样。
你可能会认为你可以一遍又一遍地使用新伪造的对抗性示例来重新训练模型但到了一定程度你已经在训练集中插入了太多的虚假数据以至于模型学习到的边界基本上变得毫无用处。 也就是说如果目标只是让攻击者更难绕过分类器那么对抗训练就是一个不错的选择。
Gradient masking
梯度掩蔽gradient masking这基本上是一种非防御手段。有一段时间对抗性机器学习社区认为由于需要梯度来计算对模型的强大攻击因此隐藏梯度应该可以解决问题但很快就被证明是错误的。
梯度掩蔽不能作为防御策略的原因是因为对抗样本的可转移性。即使您成功隐藏了模型的梯度攻击者仍然可以构建代理攻击它然后传输示例。
Input modification
当输入在传递给模型之前以某种方式“清理”以消除对抗性噪声时就会发生输入修改input modification。示例包括各种降噪解决方案自动编码器、高级代表性降噪器、颜色位深度缩减、平滑、重组 GAN、JPEG 压缩、注视点、像素偏转、通用基函数变换等等。
Detection
一些 检测detection 方法与输入修改密切相关——因为一旦输入被清理它的预测就可以与原始预测进行比较如果两者相距甚远则输入可能已被篡改。这里有几个例子。
还一种方式。例如在这里他们实际上训练了一个单独的检测网络其唯一的工作是确定输入是否是对抗性的。
一般来说输入修改和检测方法很棒因为它们可以应用于已经训练好的模型并且不需要数据科学家重新训练模型。
Extra (NULL) Class
最后还有额外的NULL类方法。这个想法很简单。分类器是根据非常特殊的数据分布进行训练的根据定义分类器在超出该分布范围时将毫无头绪。因此与其在分类器显然不知道标签是什么的情况下强迫它猜测标签不如给它放弃的选择。这就是 NULL 类所实现的功能论文。
Adversarial Attacks 和 Adversarial Defenses
对抗攻击Adversarial Attacks
对抗攻击是指恶意攻击者通过对输入数据进行精心设计的扰动误导机器学习模型产生错误预测或决策的过程。这些扰动通常是微小的不容易被人类察觉但对于深度学习模型来说它们可能会导致严重的错误。
对抗攻击通常基于以下几种方式
Adversarial attacks 的目标
误分类Misclassification目标是使模型做出错误的预测。目标攻击Targeted Attack攻击者希望模型输出特定的错误类别。非目标攻击Untargeted Attack攻击者只希望模型输出错误类别而不关心是哪个类别。
Adversarial attacks 的攻击方法
对抗攻击可以分为白盒攻击White-box Attack和黑盒攻击Black-box Attack两种主要类型。 白盒攻击White-box Attack 攻击者知道目标模型的所有信息包括模型架构、权重参数等。攻击者通常会利用梯度信息来生成对抗样本。常见的白盒攻击方法有 FGSM (Fast Gradient Sign Method)利用目标模型的梯度信息生成对抗样本。PGD (Projected Gradient Descent)多次迭代的改进版生成更强的对抗样本。CW Attack (Carlini Wagner)通过优化目标函数来生成最小扰动的对抗样本。 黑盒攻击Black-box Attack 攻击者不知晓目标模型的具体结构和参数。攻击者通过观察模型的输入输出例如通过API来推测模型行为并生成对抗样本。黑盒攻击的方式包括 转移攻击Transferability Attack在一个模型上生成对抗样本并将其应用于另一个模型即使目标模型不同。生成对抗网络GAN使用生成模型来创建对抗样本通常也能迁移到其他模型。
对抗样本Adversarial Examples
对抗样本是通过对原始数据进行精心设计的小扰动生成的。这些扰动被设计为
对人类观察者不可察觉对模型却能产生误导作用。
例如
一张猫的图片可能经过轻微的调整后仍然是猫但深度学习模型却把它误识别为“狗”。一段正常的语音输入可能被扰动使得语音识别系统误听为完全不同的指令。
Adversarial attacks 的影响
安全性威胁对抗攻击可能使得机器学习系统变得不可靠尤其是在关键领域如自动驾驶、医疗诊断中。模型泛化能力差对抗样本揭示了模型的脆弱性表明模型在应对现实世界中的多样化数据时可能表现不稳定。
对抗防御Adversarial Defenses
对抗防御是指一系列技术用于提高模型的鲁棒性使其能够抵御对抗攻击减少对抗样本的影响。以下是一些常见的对抗防御方法
对抗训练Adversarial Training
核心思想将对抗样本添加到训练数据中强制模型学习如何正确处理这些被攻击的样本。方法 在训练过程中生成对抗样本并将其与原始样本一起输入模型。目标是让模型在训练时学习到鲁棒的特征能够识别和应对扰动。 优点 显著提高模型对抗攻击的鲁棒性。 缺点 训练时间长计算资源消耗大。可能对正常样本的准确度造成一定影响。
输入预处理Input Preprocessing
核心思想通过对输入数据进行预处理减少对抗扰动的影响。方法 去噪Denoising去除输入中的噪声或扰动。裁剪Clipping将输入数据限制在某个特定范围内防止过大的扰动。平滑化Smoothing平滑输入数据减少对抗扰动的影响。 优点 可以在不改变模型的情况下提高模型的鲁棒性。 缺点 有时会降低模型对原始输入的准确性。
模型正则化Model Regularization
核心思想通过添加正则化项增加模型的复杂度限制从而增强其对抗鲁棒性。方法 梯度惩罚Gradient Penalty惩罚模型梯度的过大波动以防止过拟合对抗样本。网络结构的鲁棒性设计更加复杂的神经网络结构使其对微小扰动不敏感。 优点 提高了模型在不同输入下的稳定性。 缺点 可能导致训练过程更加复杂并且无法完全防止对抗样本的生成。
输入转换Input Transformation
核心思想通过对输入进行某种变换扰动会被减少或消除。方法 图像转换如旋转、缩放、裁剪等图像变换。加密Encryption对输入数据进行加密处理使得攻击者无法有效生成对抗样本。 优点 在实际部署中简单有效。 缺点 可能降低模型的效率和性能。
模型架构的鲁棒性设计
核心思想设计网络架构使其对抗扰动具有天然的鲁棒性。方法 采用更深或更复杂的网络架构提高模型对输入扰动的免疫力。使用正则化技术、卷积层在图像处理中等方法提高模型的泛化能力。 优点 提升模型整体性能增强鲁棒性。 缺点 架构复杂性增加可能导致计算成本增加。
使用对抗样本的检测方法(Detection)
核心思想利用专门的检测器来识别是否有对抗样本存在。方法 异常检测监测输入是否与正常输入数据有显著差异。模型行为分析分析模型输出的稳定性检查是否存在异常预测。
Randomized Neural Networks
Randomized Neural Networks (随机化神经网络) 是一种利用随机化策略设计的神经网络模型。它们的特点是部分或全部网络的参数是随机初始化的并在训练过程中保持固定或者以随机方式参与计算。这种方法广泛用于减少计算复杂性、提升泛化能力以及探索神经网络的鲁棒性。
Randomized neural networks 的关键特性 随机性Randomization 权重随机化随机初始化权重并在训练过程中保持不变或者仅对部分层进行优化。结构随机化通过随机选择神经元或连接方式生成多样化的网络结构。输入或噪声随机化在训练或推理过程中向输入或中间层添加随机噪声以增强鲁棒性。 固定性 在某些随机化神经网络中随机权重是固定的这意味着无需优化这些参数。这种方法有助于降低训练复杂性。 快速计算 因为部分参数无需优化计算和存储需求显著减少适用于资源受限的环境。
Randomized neural networks 的常见类型
以下是随机化神经网络的一些典型实现
Extreme Learning Machines (ELMs)
这是随机化神经网络的经典示例。核心思想 隐藏层的权重随机初始化并固定。仅优化输出层权重通常通过线性回归求解。 优点 训练速度极快。简单高效适用于小规模数据集。 缺点 对随机权重敏感泛化能力可能受限。
Random Vector Functional Link (RVFL)
是对传统神经网络的扩展。核心思想 在网络中添加随机生成的特征通过随机化权重获得。通过连接这些随机特征和原始特征提高表达能力。
Stochastic Neural Networks (SNNs)
在每个神经元或连接中引入随机性。应用场景 提高鲁棒性和模型的不确定性量化。在生成模型中比如生成对抗网络GANs。
Dropout Randomized Activation
Dropout 是一种常见的随机化技术用于训练过程中随机丢弃部分神经元。随机化激活函数选择可以增加模型的多样性。 Randomized neural networks 的理论基础 随机特征的理论支持 在高维空间中随机映射可以生成良好的特征表示。核函数理论Kernel Theory表明随机权重生成的隐层表示可以近似核映射。 泛化能力 随机化策略通过增加模型的多样性通常有助于提升模型的泛化能力。 鲁棒性 随机化神经网络在对抗攻击和噪声处理方面往往表现较好因为它们对输入扰动的敏感性降低。
参考资料
About Adversarial Examples
Evasion attacks on Machine Learning (or “Adversarial Examples”)
Tricking Neural Networks: Create your own Adversarial Examples
什么是对抗样本、对抗攻击详解