当前位置: 首页 > news >正文

对抗攻击的详细解析:原理、方法与挑战

对抗攻击的详细解析:原理、方法与挑战

对抗攻击(Adversarial Attack)是现代机器学习模型,尤其是深度学习模型中的一个关键安全问题。其本质在于,通过对输入数据添加精微的扰动,人类难以察觉这些扰动,但它们会导致模型产生完全错误的预测。对抗攻击揭示了深度学习模型对数据中某些脆弱特征的过度依赖,表明模型并非如预期般鲁棒。
在这里插入图片描述

图片来源:AI安全-对抗攻击与防御_哔哩哔哩_bilibili

对抗攻击中的核心问题

在传统的机器学习任务中,训练集和测试集往往来自 相同的数据分布 P P P 。然而,对抗攻击通过在输入数据上引入极其微小的扰动,使得输入数据的分布发生了细微的改变。这种变化对于人类而言几乎无法感知,但对于模型,可能引发极大差异,甚至导致分类结果的完全错误。模型的这种脆弱性源自它们在高维特征空间中对某些输入特征的过度敏感性。

假设一个模型 f f f 是在分布 P P P 上训练的,并且输入 x x x 表示一张图片, f ( x ) f(x) f(x) 是模型对 x x x 的分类输出。对抗攻击试图找到一个微小的扰动 δ \delta δ,使得模型在输入 x + δ x + \delta x+δ 时输出错误的结果,即:

f ( x + δ ) ≠ f ( x ) f(x + \delta) \neq f(x) f(x+δ)=f(x)

尽管从视觉上, x x x x + δ x + \delta x+δ 对人类而言几乎完全相同,然而微小的扰动 δ \delta δ 可以使得模型的预测发生显著的变化。这就是对抗攻击问题的核心所在。

为什么对抗攻击能够成功?

对抗攻击之所以能够成功,是由于深度学习模型对输入特征的敏感性,这些特征往往在人类难以察觉的维度中发挥作用。神经网络通过非线性变换从输入数据中提取特征,每层网络的输出是前一层的非线性组合。当一个小的扰动 δ \delta δ 被添加到输入数据时,网络的激活值可能发生极大的变化,导致最终的分类结果出现显著的错误。这一现象可以用非线性特征空间中的放大效应来解释,即小的输入扰动在深度模型的高维空间中经过层层叠加和变换后,导致最终结果产生巨大差异。

对抗攻击的数学原理与常见方法

对抗攻击方法有多种实现,它们的核心都基于优化扰动 δ \delta δ 使模型输出错误结果。

对抗攻击发生在模型训练之后,主要在模型 推理阶段 进行。攻击者不调整模型的参数,而是针对一个已经训练好的模型,固定模型参数,通过修改输入来欺骗模型。此时,目标是 找到输入数据的敏感方向,沿着这个方向微调输入,让模型做出错误预测 。此时,使用的是梯度上升来增大输入数据的损失,而不是训练模型的参数。

以下是几种常见的对抗攻击方法及其数学原理:

1. Fast Gradient Sign Method (FGSM)

FGSM 是最早的对抗攻击方法之一,其目标是通过一次性施加扰动,沿着损失函数梯度上升的方向,使模型错误分类。其本质是找到损失函数最大变化的方向,并沿该方向施加固定大小的扰动。

在深度学习模型中,梯度 代表的是损失函数相对于输入的变化率。具体来说,梯度的方向是使损失增加最快的方向,而不是减少的方向。下面详细解释“敏感方向”这一概念,以及为什么梯度可以指示出这个方向。

梯度的作用

当我们提到梯度下降时,通常指的是在训练过程中更新模型参数(如权重和偏置)的算法,其目的是找到使损失函数下降最快的方向,以优化模型的预测性能。

然而,在对抗攻击中,我们并不是要降低损失,而是要增大损失,即让模型预测出错。因此,我们不再关心梯度下降的方向,而是关心梯度上升的方向,即使损失函数增加最快的方向。这个方向可以帮助我们找到输入空间中的一个“敏感方向”,即通过沿着这个方向添加微小的扰动,就可以导致模型的预测错误。

敏感方向的定义

对于某个输入图像 x x x,深度学习模型通过计算损失函数 L ( f ( x ) , y ) L(f(x), y) L(f(x),y) 来衡量模型的预测 f ( x ) f(x) f(x) 与真实标签 y y y 之间的差异。通过计算损失函数对输入 x x x 的梯度 ∇ x L ( f ( x ) , y ) \nabla_x L(f(x), y) xL(f(x),y),我们得到损失随着输入变化最快的方向。这个梯度可以理解为敏感方向,因为沿着这个方向加扰动会导致模型的输出发生最大变化。

简单来说:

  • 如果我们沿着梯度方向对输入图像施加扰动,即加上微小的噪声,这种微调将会放大模型的误差,使模型对输入的预测发生显著变化。
  • 因此,梯度方向表明了输入空间中模型最容易出错的方向,这就是我们所谓的“敏感方向”。
为什么梯度是“敏感方向”?

在 FGSM 这种攻击中,关键是通过梯度来找到对模型的预测影响最大的输入扰动:

  • 梯度 ∇ x L ( f ( x ) , y ) \nabla_x L(f(x), y) xL(f(x),y) 表示,当输入 x x x 沿着该方向变化时,损失函数增加得最快。
  • 由于深度学习模型通过复杂的非线性变换来提取输入的特征,因此对模型最敏感的特征往往对应于损失函数变化最大的方向。
  • 当我们沿着这个梯度方向施加扰动时,模型会更加倾向于犯错误,从而导致分类结果发生改变。

因此,梯度在这里指示了模型对输入的“敏感性”,并且告诉我们扰动在哪个方向上会最有效地干扰模型的预测。

具体步骤

给定一个深度学习模型 f ( x ) f(x) f(x),它可以预测输入图像 x x x 的类别。模型的损失函数 L ( f ( x ) , y ) L(f(x), y) L(f(x),y) 衡量了模型预测结果 f ( x ) f(x) f(x) 和真实标签 y y y 之间的差异。FGSM 利用损失函数对输入 x x x 的梯度来确定该图像的 敏感方向 ,即哪个方向最容易使模型犯错。

  1. 计算梯度:
    首先,我们计算损失函数 L ( f ( x ) , y ) L(f(x), y) L(f(x),y) 对输入图像 x x x 的梯度:
    ∇ x L ( f ( x ) , y ) \nabla_x L(f(x), y) xL(f(x),y)
    这个梯度代表损失函数在输入空间中增加最快的方向。

  2. 扰动生成:
    FGSM 沿着梯度方向加上符号(即正负方向),并且根据常数 ϵ \epsilon ϵ 来调整扰动的大小:
    x ′ = x + ϵ ⋅ sign ( ∇ x L ( f ( x ) , y ) ) x' = x + \epsilon \cdot \text{sign}(\nabla_x L(f(x), y)) x=x+ϵsign(xL(f(x),y))
    这里, ϵ \epsilon ϵ 是一个很小的正数,控制扰动的幅度。符号函数 sign ( ∇ x L ( f ( x ) , y ) ) \text{sign}(\nabla_x L(f(x), y)) sign(xL(f(x),y)) 仅保留梯度的方向,而忽略其幅度。

  3. 结果分析:
    对于人类来说,扰动后的图像 x ′ x' x 和原始图像 x x x 几乎没有可见差别。但由于模型高度依赖输入特征中的微小变化, x ′ x' x 很可能会被模型误分类。

关键特点
  • 效率: FGSM 只需一次梯度计算,因此它非常高效。
  • 局限性: FGSM 由于只进行一次扰动,不总是能够找到最强的对抗样本。

2. Projected Gradient Descent (PGD)

PGD 是 FGSM 的扩展版,其通过多次小步的梯度更新来逐步逼近对抗样本,是一种迭代攻击方法。PGD 的攻击效果比 FGSM 更强,因为它使用多次梯度更新来找到更具攻击性的扰动。

具体步骤

PGD 攻击基于多次迭代,每次计算损失函数的梯度并沿着该方向施加小幅度扰动,直到找到对模型最具攻击性的输入。

  1. 初始扰动:
    初始输入为原始图像 x 0 = x x^0 = x x0=x,并在后续步骤中不断更新。

  2. 迭代扰动更新:
    每次迭代计算当前输入 x t x^t xt 的梯度,并加上符号方向的扰动,更新规则为:
    x t + 1 = x t + α ⋅ sign ( ∇ x L ( f ( x t ) , y ) ) x^{t+1} = x^t + \alpha \cdot \text{sign}(\nabla_x L(f(x^t), y)) xt+1=xt+αsign(xL(f(xt),y))
    其中, α \alpha α 是步长大小,控制每次迭代中加入的扰动大小。

  3. 投影操作:
    为了确保最终生成的对抗样本 x ′ x' x 的扰动不超过预设范围(即 ϵ \epsilon ϵ),每次更新后的输入会被投影回原始输入 x x x ϵ \epsilon ϵ 范围内,即:
    x t + 1 = Proj B ( x , ϵ ) ( x t + 1 ) x^{t+1} = \text{Proj}_{B(x, \epsilon)}\left(x^{t+1}\right) xt+1=ProjB(x,ϵ)(xt+1)
    这个投影操作将当前的对抗样本约束在以 x x x 为中心、半径为 ϵ \epsilon ϵ 的球体内,保证最终的对抗样本不会偏离原始图像太远。

  4. 迭代停止:
    在经过多次迭代后(通常几十步),最终的对抗样本 x T x^{T} xT 通常会比一次性生成的 FGSM 对抗样本更具攻击性。

关键特点
  • 更强的攻击性: PGD 通过多次小步扰动逐渐逼近局部最优解,能够生成比 FGSM 更有效的对抗样本。
  • 灵活性: 通过调整步长 α \alpha α 和最大扰动 ϵ \epsilon ϵ,可以灵活控制攻击的强度和扰动的范围。

3. Carlini & Wagner (CW) 攻击

CW 攻击是基于优化的对抗攻击方法。与 FGSM 和 PGD 基于梯度符号生成扰动不同,CW 攻击通过解决一个优化问题来生成对抗样本,力求在最小的扰动下让模型分类出错。

具体步骤

CW 攻击将对抗样本生成视为一个优化问题,目标是在最小化扰动的同时最大化模型的分类错误。它常用 L 2 L_2 L2 范数作为约束条件,即希望生成的扰动 δ \delta δ 尽可能小。

  1. 优化目标:
    CW 攻击的优化目标是:
    min ⁡ δ ∥ δ ∥ p + c ⋅ L ( f ( x + δ ) , y ) \min_{\delta} \|\delta\|_p + c \cdot L(f(x + \delta), y) δminδp+cL(f(x+δ),y)
    其中, ∥ δ ∥ p \|\delta\|_p δp 是扰动的 p p p-范数,通常采用 L 2 L_2 L2 范数 ∥ δ ∥ 2 \|\delta\|_2 δ2,即最小化扰动的整体幅度。 c c c 是权衡因子,用于平衡扰动的大小和损失函数 L ( f ( x + δ ) , y ) L(f(x + \delta), y) L(f(x+δ),y) 的重要性。 L ( f ( x + δ ) , y ) L(f(x + \delta), y) L(f(x+δ),y) 是对抗样本的损失函数。

  2. 目标函数分解:
    CW 攻击将优化问题转化为两个部分:

    • 最小化扰动 δ \delta δ 的大小。
    • 最大化模型的损失函数,使得对抗样本 x + δ x + \delta x+δ 导致错误分类。
  3. 迭代优化:
    通过优化算法(如 Adam 优化器),CW 攻击会反复调整扰动 δ \delta δ,在每一步中平衡损失函数和扰动的大小,直到找到一个既能让模型出错、又保持扰动极小的对抗样本。

  4. 约束扰动:
    优化过程中,CW 攻击通过对 p p p-范数的约束来确保扰动不会过大,避免对抗样本与原始输入的视觉差异过于明显。

关键特点
  • 最小化扰动: CW 攻击通过优化算法生成最小扰动,同时保持高攻击成功率,往往能够生成极难察觉的对抗样本。
  • 灵活性: 可以选择不同的 p p p-范数(如 L 2 L_2 L2 L ∞ L_\infty L)来控制扰动的形式,并且权衡参数 c c c 可以调节攻击的强度。
  • 计算代价高: CW 攻击的优化过程复杂,计算开销较大,相较于 FGSM 和 PGD,它的攻击速度较慢。

总结

  • FGSM 是一种简单、高效的攻击方法,适合于快速生成对抗样本,但攻击强度有限。
  • PGD 通过迭代的方式逐步逼近最优的对抗样本,能够生成比 FGSM 更强的攻击,且灵活性更强。
  • CW 攻击 是基于优化问题的高级攻击方法,通过最小化扰动和最大化损失来精确生成对抗样本,虽然计算开销较大,但攻击效果显著。

通过这些方法,我们能够更加深入地理解深度学习模型对输入的敏感性,以及微小扰动如何在高维特征空间中被放大,最终导致分类错误。

深度神经网络如何做出决策?

要理解对抗攻击,首先需要了解深度神经网络是如何从输入中提取特征并做出决策的。一个典型的深度神经网络由多层非线性变换组成,输入数据经过每层处理后提取到不同层次的特征。最后,网络通过一个分类器(如 softmax)将提取到的特征映射为类别标签的概率分布。

h ( x ) h(x) h(x) 表示网络前几层的特征提取部分,分类器部分 g ( h ( x ) ) g(h(x)) g(h(x)) 则将特征映射到最终的类别概率:

f ( x ) = g ( h ( x ) ) f(x) = g(h(x)) f(x)=g(h(x))

当输入数据 x x x 中加入微小的扰动 δ \delta δ 时,网络中某些关键特征可能发生巨大变化。这种特征的变化往往集中在高维空间中的敏感方向上,这就是为什么微小的扰动能导致分类结果的重大偏差。

示例

通过一些具体的实例来更直观地理解对抗攻击。以下是几个与对抗攻击相关的实际应用案例,以及这些攻击如何影响模型的输出。

1. 对抗攻击在图像分类中的实例

在图像分类任务中,对抗攻击能够让看似无害的微小扰动对图像产生重大影响,从而导致深度学习模型错误分类。

实例 1:误导 MNIST 手写数字分类

MNIST 数据集是一个经典的手写数字分类任务,训练模型用于识别 0 到 9 之间的数字。假设模型能够准确分类原始的手写数字图像 x x x,将其正确分类为某个标签 y y y(例如“7”)。

然而,通过对图像添加微小的对抗性扰动 δ \delta δ,我们可以使原始的手写数字“7”被模型错误分类为“1”。例如,利用 FGSM 攻击方法,我们可以计算输入图像的梯度方向,并施加小量扰动来生成对抗样本。对于人类来说,生成的对抗样本看起来与原始图像几乎没有差别,图像仍然是清晰的“7”,但模型却会误将其分类为“1”或其他错误的类别。

如下所示:

  • 原始图像 x x x:是数字“7”。
  • 对抗性扰动后的图像 x + δ x + \delta x+δ:人眼看起来仍是“7”,但模型可能预测为“1”或“2”。

这种情况下,虽然图像看起来没有太大变化,但微小的像素差异已足以误导深度学习模型。

实例 2:误导 ImageNet 高级图像分类

ImageNet 是另一个广泛使用的图像分类数据集,它包含数百万张高分辨率图像,涉及 1000 个类别。在实际应用中,深度学习模型可以在这个数据集上实现高准确度。然而,通过对抗攻击,这些先进的模型也可以被轻易误导。

例如,假设我们有一张猫的图片,模型可以准确分类为“猫”。但通过施加微小的对抗性扰动 δ \delta δ,我们可以让模型将同一张猫的图片误分类为“汽车”或“金鱼”等完全不相关的类别。

  • 原始图像 x x x:猫。
  • 扰动后的对抗样本 x + δ x + \delta x+δ:人类眼中依然是猫,但模型预测为“金鱼”。

这个例子展示了深度学习模型对小扰动的极度敏感性,尽管扰动可能对人类几乎不可察觉。

2. 对抗攻击在自动驾驶中的实例

在自动驾驶领域,深度学习模型广泛用于物体检测和场景理解,例如识别道路标志和行人。对抗攻击在这一领域的应用可能会对安全性造成严重威胁。

实例 1:道路标志识别的对抗攻击

假设自动驾驶系统中使用的深度学习模型可以准确识别“停止”标志。然而,通过在道路标志上添加一些微小的对抗性扰动(例如,添加一些噪声或者在标志上贴上几块贴纸),系统可能无法识别该标志,甚至将其错误地分类为“限速 50”标志。

具体场景:

  • 原始图像 x x x:自动驾驶系统准确识别为“停止”标志。
  • 扰动后的标志 x + δ x + \delta x+δ:由于对抗性扰动的存在,系统将其错误地识别为“限速 50”标志。

对于人类驾驶员来说,这个“停止”标志看起来完全正常,但对抗性扰动使得自动驾驶系统的感知模型错误地将其识别为“限速 50”。这可能导致严重的安全事故,尤其是在城市交通场景中。

3. 对抗攻击在人脸识别中的实例

人脸识别技术已经广泛应用于安全认证、监控和身份识别系统。然而,对抗攻击也可以在这些应用中产生重大影响。

实例 1:误导人脸识别系统

假设一个深度学习人脸识别系统能够准确地识别人脸并进行身份认证。通过对抗性攻击者可以生成一个对抗性样本,使得人脸识别系统无法正确识别某个人,甚至将攻击者的人脸识别为另一名用户。

场景描述:

  • 原始图像 x x x:模型可以准确地将某人的脸识别为用户 A。
  • 扰动后的图像 x + δ x + \delta x+δ:经过对抗性扰动后,攻击者的人脸被系统错误识别为用户 B。

这种对抗攻击不仅会影响身份验证,还可能被用于逃避监控系统的检测,攻击者通过对抗样本可能轻松地躲过自动化监控系统的识别。

4. 对抗攻击在语音识别中的实例

除了图像分类和人脸识别,语音识别系统也可以被对抗攻击破坏。语音识别被广泛应用于语音助手、语音控制系统以及实时翻译中。对抗攻击同样可以通过微小的语音扰动来误导这些系统。

实例 1:误导语音助手(如 Siri、Alexa)

假设一个语音识别模型能够准确识别用户的命令,如“播放音乐”。通过添加对抗性扰动,攻击者可以生成一种微小的噪声,这种噪声对人类几乎听不到,但可以让语音助手错误地执行命令。

场景描述:

  • 原始音频 x x x:用户说“播放音乐”,语音助手正确执行命令。
  • 扰动后的音频 x + δ x + \delta x+δ:经过对抗性攻击后,语音助手错误地识别命令为“拨打紧急电话”。

在这一攻击场景中,攻击者通过对抗性扰动,可以让语音助手误解原始命令并执行潜在危险的操作,这对智能设备的安全性提出了极大的挑战。

对抗攻击对深度学习的挑战

对抗攻击揭示了深度学习模型在高维空间中提取脆弱特征的局限性。虽然这些特征在训练集和测试集分布相同的情况下表现良好,但在面对扰动或异常输入时,模型的表现会急剧恶化。这对实际应用中机器学习系统的安全性和鲁棒性提出了严峻的挑战,尤其是在自动驾驶、医疗诊断等高风险领域。

对抗攻击的防御成为了当前研究的热点领域,包括对抗训练、输入预处理以及模型架构的改进等手段,均试图增强模型对这些精微扰动的鲁棒性。然而,这些防御手段尚未能彻底解决对抗攻击的威胁,攻防对抗仍在持续演变。

总结

对抗攻击通过对输入数据施加人类不可察觉的微小扰动,使深度学习模型的预测结果发生显著变化。常见的对抗攻击方法如 FGSM、PGD 和 CW,均通过不同的数学手段生成对抗样本,揭示了深度学习模型对输入数据中的脆弱特征的依赖性。要提升模型的鲁棒性,需要从模型设计、训练过程以及输入数据预处理中采取综合措施。

相关文章:

对抗攻击的详细解析:原理、方法与挑战

对抗攻击的详细解析:原理、方法与挑战 对抗攻击(Adversarial Attack)是现代机器学习模型,尤其是深度学习模型中的一个关键安全问题。其本质在于,通过对输入数据添加精微的扰动,人类难以察觉这些扰动&#…...

Python办公自动化教程(003):PDF的加密

【1】代码 from PyPDF2 import PdfReader, PdfWriter# 读取PDF文件 pdf_reader PdfReader(./file/Python教程_1.pdf) pdf_writer PdfWriter()# 对第1页进行加密 page pdf_reader.pages[0]pdf_writer.add_page(page) # 设置密码 pdf_writer.encrypt(3535)with open(./file/P…...

python全栈学习记录(十七)logging、json与pickle、time与datatime、random

logging、json与pickle、time与datatime、random 文章目录 logging、json与pickle、time与datatime、random一、logging二.json与pickle三.time与datatime四.random 一、logging logging模块用来记录日志信息。 import logging # 进行基本的日志配置 logging.basicConfig( fi…...

【艾思科蓝】JavaScript在数据可视化领域的探索与实践

【ACM出版 | EI快检索 | 高录用】2024年智能医疗与可穿戴智能设备国际学术会议(SHWID 2024)_艾思科蓝_学术一站式服务平台 更多学术会议请看 学术会议-学术交流征稿-学术会议在线-艾思科蓝 目录 引言 JavaScript可视化库概览 D3.js基础入门 1. 引入…...

【标准库的典型内容】std::declval

一、 d e c l v a l declval declval的基本概念和常规范例 s t d : : d e c l v a l std::declval std::declval 是 C 11 C11 C11标准中出现的一个函数模板。这个函数模板设计的比较奇怪(没有实现,只有声明),因此无法被调用&…...

深入了解package.json文件

在前端项目开发中,我们经常会遇到package.json文件。这个文件不仅是一个简单的配置文件,它还承担了项目管理的重任。下面,我们将深入探讨package.json文件的各个字段和作用,并通过实例来帮助你更好地理解和使用它。 package.json…...

【基础知识】网络套接字编程

套接字 IP地址 port(端口号) socket(套接字) socket常见API //创建套接字 int socket(int domain, int type, int protocol); //绑定端口 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); //监听套接字…...

小程序地图展示poi帖子点击可跳转

小程序地图展示poi帖子点击可跳转 是类似于小红书地图功能的需求 缺点 一个帖子只能有一个点击事件,不适合太复杂的功能,因为一个markers只有一个回调回调中只有markerId可以使用。 需求介绍 页面有地图入口,点开可打开地图界面地图上展…...

传统到AI 大数据分析的演变,颠覆智慧水电的未来?

传统到AI 大数据分析的演变,颠覆智慧水电的未来? 前言传统到AI 大数据分析的演变 前言 水电作为一种重要的能源形式,一直在我们的生活中扮演着至关重要的角色。而如今,随着科技的飞速发展,智慧水电和 AI 大数据应用的…...

while语句

1.while使用 打印1-10 #include<stdio.h> int main() {int a 1;while (10 > a){printf("%d\n", a);a 1;}return 0; } 2.while语句中的break&#xff0c;continue break&#xff1a; 跳出while语句 #include<stdio.h> int main() {int a 0;wh…...

机器学习(西瓜书)第 10 章 降维与度量学习

10.1 k近邻学习kNN k 近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法,其工作机制非常简单&#xff1a;给定测试样本&#xff0c;基于某种距离度量找出训练集中与其最靠近的k个训练样本&#xff0c;然后基于这k个 “邻居”的信息来进行预测.通常&#xff0c;在…...

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Halo博客平台

828华为云征文 | 云服务器Flexus X实例&#xff0c;Docker集成搭建Halo博客平台 Halo博客平台是一款基于Java的开源博客系统&#xff0c;以其简单易用、功能强大、美观大方等特点而受到广泛欢迎&#xff0c;采用了多种先进的技术框架&#xff0c;包括Freemarker模板引擎、Vue.j…...

Android carrier_list.textpb 和apns-conf.xml 配置文件参考

简介 针对SIM 的APN配置是在apns-conf.xml,而Google源码中有apns-full-conf.xml案例参考,是加入了carrier_id的统一配置,就不用单独的一张张卡配了。 apns-conf.xml和apns-full-conf.xml有什么区别? 在于它们包含的配置内容和复杂性,full包含了carrier_id字段。 详细代…...

二期 1.4 Nacos安装部署 - Window版

本文目录 Nacos支持三种部署模式环境准备下载Nacos启动登录服务注册与查看Nacos支持三种部署模式 单机模式 - 用于测试和单机试用。集群模式 - 用于生产环境,确保高可用。多集群模式 - 用于多数据中心场景。以 Window单机模式 抛转引玉,其它部署方式参考官方文档: https://n…...

vue3基础九问,你会几问

1. Vue是什么&#xff1f; Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架。它的核心库只关注视图层&#xff0c;采用自下而上的增量开发设计&#xff0c;这使得你可以将 Vue 轻松地整合到现有的项目中&#xff0c;或者与其他前端库一起使用。Vue 的目标是通过提供反…...

Linux系统应用之知识补充——OpenEuler(欧拉)的安装和基础配置

前言 这篇文章将会对OpenEuler的安装进行详解&#xff0c;一步一步跟着走下去就可以成功 注意 &#xff1a;以下的指令操作最好在root权限下进行&#xff08;即su - root&#xff09; ☀️工贵其久&#xff0c;业贵其专&#xff01; 1、OpenEuler的安装 这里我不过多介绍&a…...

Git(4):修改git提交日志

修改最新一次提交的信息 git commit --amend 修正提交信息 在打开的编辑器中修改信息&#xff0c;保存并退出&#xff0c;Git 会用新的提交信息替换掉旧的提交信息&#xff08;commit-id 变化&#xff09;。也可以使用 git commit --amend -m "" 直接修改日志&#…...

【深度学习】(1)--神经网络

文章目录 深度学习神经网络1. 感知器2. 多层感知器偏置 3. 神经网络的构造4. 模型训练损失函数 总结 深度学习 深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向。 从上方的内容包含结果&#xff0c;我们可以知道&#xff0c;在学习深度学…...

测试文件和数据库文件

接口测试 flaks项目入口文件manage.py路由配置 import requests#首先面向对象作封装&#xff0c;避免相同代码反复编写 class HttpApiTest:def test_get(self,url,data{}): #用来测试get方法的接口 #self通过共享self类中间的变量 #url用来请求接口 #data可传可不传res reques…...

redis集群模式连接

目录 一&#xff1a;背景 二&#xff1a;实现过程 三&#xff1a;总结 一&#xff1a;背景 redis集群通过将数据分散存储在多个主节点上&#xff0c;每个主节点可以有多个从节点进行数据的复制&#xff0c;以此来实现数据的高可用性和负载均衡。在集群模式下&#xff0c;客户…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...