泛化深度学习综述

news2024/11/26 17:22:20

机器学习系统通常假设训练和测试分布是相同的。为此,一个关键的需求是开发可以推广到unseen分布的模型。领域泛化(DG,Domain generalization),即分布外泛化(out-of-distribution generalization),近年来引起了越来越多的关注。领域泛化处理的是一个具有挑战性的环境,其中给定了一个或多个不同但相关的领域,目标是学习一个可以泛化到unseen测试领域的模型。最近领域泛化领域取得了巨大进展。该综述对这些进展进行了回顾。

来自:Generalizing to Unseen Domains: A Survey on Domain Generalization

目录

  • 背景概述
  • 领域泛化方法
    • 表示学习:领域不变表示和特征解纠缠
    • 领域不变表征学习
      • 基于kernel的方法
      • 领域对抗学习
      • 显式特征对齐
      • 不变风险最小化
    • 特征解纠缠
      • 多分量分析
      • 生成建模和因果激励

背景概述

有监督机器学习的目标是设计一个模型,该模型可以从训练数据中学习,然后将该模型应用于测试数据。传统的ML模型是基于独立同分布假设的,即训练和测试数据来自相同且独立的分布。然而,这种假设在现实中并不成立。当训练数据和测试数据的概率分布不同时,模型的性能往往会由于域偏差而恶化。收集所有可能领域的数据来训练模型是昂贵的(比如ChatGPT)。因此,增强ML模型的泛化能力在工业和学术领域都很重要。

与泛化相关的研究课题很多,如领域自适应、元学习、迁移学习等。近年来,领域泛化受到了广泛的关注。如图1所示,领域泛化的目标是从一个或多个不同但相关的领域(即不同的训练数据集)学习模型,该模型将在看不见的测试领域上实现泛化。

fig1

  • 图1:训练集由属于素描、卡通和艺术绘画领域的图像组成。DG旨在学习一个在照片这种看不见的目标域上也能表现良好的模型。

在过去的几年里,领域泛化在计算机视觉和自然语言处理等各个领域都取得了重大进展。DG可以定义如下:

  • X X X表示输入空间, Y Y Y表示输出空间。域(domain)由从分布中采样的数据组成。我们记其为 S = { ( x i , y i ) } i = 1 n ∼ P X Y S=\left\{(x_{i},y_{i})\right\}_{i=1}^{n}\sim P_{XY} S={(xi,yi)}i=1nPXY,其中, x ∈ X , y ∈ Y x\in X,y\in Y xX,yY P X Y P_{XY} PXY表示输入样本和输出标签的联合分布。 X X X Y Y Y表示相应的随机变量。
  • DG如图2所示,给定 M M M个源域 S t r a i n = { S i ∣ i = 1 , . . . , M } S_{train}=\left\{S^{i}|i=1,...,M\right\} Strain={Sii=1,...,M},其中 S i = { ( x j i , y j i ) } j = 1 n i S^{i}=\left\{(x_{j}^{i},y_{j}^{i})\right\}_{j=1}^{n_{i}} Si={(xji,yji)}j=1ni。每个域的联合分布是不同的: P X Y i ≠ P X Y j , 1 ≤ i ≠ j ≤ M P^{i}_{XY}\neq P^{j}_{XY},1\leq i\neq j\leq M PXYi=PXYj,1i=jM。领域泛化的目标是在这些源域上学习一个可推广的预测函数 h : X → Y h:X\rightarrow Y h:XY,以在unseen测试域 S t e s t S_{test} Stest上实现最小的预测误差: m i n h E ( x , y ) ∈ S t e s t [ l ( h ( x ) , y ) ] min_{h}\mathbb{E}_{(x,y)\in S_{test}}[l(h(x),y)] minhE(x,y)Stest[l(h(x),y)]其中, E \mathbb{E} E为期望, l l l为损失函数。

目前有些研究热点与领域泛化密切相关,包括但不限于:迁移学习、领域适应、多任务学习、多领域学习、元学习、终身学习和零样本学习。表1中总结了它们与领域泛化的差异,下面将简要描述这些任务。

学习范式训练数据测试数据条件测试数据是否可访问
Multi-task learning S 1 , . . . , S n S^{1},...,S^{n} S1,...,Sn S 1 , . . . , S n S^{1},...,S^{n} S1,...,Sn Y i ≠ Y j , 1 ≤ i ≠ j ≤ n Y^{i}\neq Y^{j},1\leq i\neq j\leq n Yi=Yj,1i=jnYes
Transfer learning S s o u r c e , S t a r g e t S^{source},S^{target} Ssource,Starget S t a r g e t S^{target} Starget Y s o u r c e ≠ Y t a r g e t Y^{source}\neq Y^{target} Ysource=YtargetYes
Domain adaptation S s o u r c e , S t a r g e t S^{source},S^{target} Ssource,Starget S t a r g e t S^{target} Starget P ( X s o u r c e ) ≠ P ( X t a r g e t ) P(X^{source})\neq P(X^{target}) P(Xsource)=P(Xtarget)Yes
Meta learning S 1 , . . . , S n S^{1},...,S^{n} S1,...,Sn以及来自 S n + 1 S^{n+1} Sn+1的少量样本 S n + 1 S^{n+1} Sn+1 Y i ≠ Y j , 1 ≤ i ≠ j ≤ n + 1 Y^{i}\neq Y^{j},1\leq i\neq j\leq n+1 Yi=Yj,1i=jn+1Yes
Lifelong learning S 1 , . . . , S n S^{1},...,S^{n} S1,...,Sn S 1 , . . . , S n S^{1},...,S^{n} S1,...,Sn S i S^{i} Si按顺序排列Yes
Zero-shot learning S 1 , . . . , S n S^{1},...,S^{n} S1,...,Sn S n + 1 S^{n+1} Sn+1 Y n + 1 ≠ Y i , 1 ≤ i ≤ n Y^{n+1}\neq Y^{i},1\leq i\leq n Yn+1=Yi,1inNo
Domain generalization S 1 , . . . , S n S^{1},...,S^{n} S1,...,Sn S n + 1 S^{n+1} Sn+1 P ( S i ) ≠ P ( S j ) , 1 ≤ i ≠ j ≤ n + 1 P(S^{i})\neq P(S^{j}),1\leq i\neq j\leq n+1 P(Si)=P(Sj),1i=jn+1No
  • 表1:领域泛化与相关学习范式的比较。

多任务学习在几个相关任务上联合优化模型。通过在这些任务之间共享表示,我们可以使模型更好地概括原始任务。请注意,多任务学习并不旨在增强对新任务(unseen)的泛化能力。特别的,多领域学习是一种多任务学习,它在多个相关领域上进行训练,为每个原始领域学习良好的模型,而不是为了增强unseen测试领域的表现。

迁移学习在源任务上训练模型,旨在提高模型在不同但相关的目标领域上的性能。预训练微调是迁移学习的常用策略,其中源域和目标域代表不同的任务,并且在微调训练中访问目标域数据。在DG中,目标域无法访问,训练和测试数据的任务通常是相同的,但它们具有不同的分布。

领域自适应(DA)近年来很流行。DA旨在使用现有的训练源域最大限度地提高给定目标域的性能。DA和DG之间的区别在于,DA可以访问目标域数据,而DG在训练期间看不到它们。这使得DG比DA更具挑战性,但在实际应用中更现实。

元学习旨在通过从以前的经验或任务中学习算法本身。元学习是一种学习到学习的方法,旨在通过从一系列相关任务中学习到通用的学习策略或优化算法,使得模型能够快速适应新任务。元学习要求模型能够在遇到新任务时,通过少量的样本和迭代优化过程快速学习并适应新任务。

终身学习,或称持续学习(continual learning),关注多个连续领域之间的学习能力。它要求模型在保留先前学到的经验的同时,通过适应新知识来不断学习。这也与DG不同,因为终身学习可以在每个时间步长访问目标域,并且它不会显式处理域之间的不同分布。

零样本学习旨在从已看到的类中学习模型,并对训练中未看到的类别的样本进行分类。相反,领域泛化通常研究训练和测试数据来自同一类但分布不同的问题。这么看来,似乎零样本学习是更难的。

零样本学习涉及的数据包括:

  • 已知类:模型训练时用到的带类别标签的图像。
  • 未知类:用于模型测试,注意在训练时不知道这些类别标签。
  • 辅助信息:对已知类和未知类图像的描述或语义属性或词嵌入等信息。该信息充当了已知类和未知类之间的桥梁。

零样本学习可以使用提示范式的思想,根据提示中的语义信息来推断和分类未知类别的样本。

零样本学习和领域泛化都涉及到模型对未知情况下的泛化能力。零样本学习主要关注如何在测试阶段对未知类别进行分类,而领域泛化则关注如何在新领域中对模型进行泛化,以适应不同的数据分布。虽然二者有一定的联系,但在具体问题和应用中,它们有不同的侧重点。其实,DSIL-DDI应属于零样本学习,Capsule-encoder-decoder属于领域泛化


零样本学习(Zero-shot Learning)和小样本学习(Few-shot Learning)是两种不同的学习范式:

  • 零样本学习:在零样本学习中,我们面临的是一种全新的分类任务,即在训练阶段没有见过新类别的样本,但我们要对这些新类别的样本进行分类。这意味着我们需要利用一些先验信息(例如类别的属性、语义描述等)来学习如何分类到新类别。零样本学习旨在解决从已知类别到未知类别的迁移学习问题。
  • 小样本学习:在小样本学习中,我们面临的是样本数量有限的分类任务,但是我们可以访问到每个类别的少量训练样本。与传统的机器学习任务相比,小样本学习更具挑战性,因为我们需要在非常有限的样本上进行学习和泛化。小样本学习的目标是在少量样本的情况下实现准确的分类。

领域泛化方法

fig2

  • 图2:领域泛化方法分类。

领域泛化方法被分为三类:Data manipulation,Representation learning,Learning strategy。

对于Data manipulation:这类方法侧重于处理输入,以帮助学习一般表示。沿着这条线,有两种流行的技术:Data augmentation,主要基于输入数据的增强、随机化和转换;Data generation,生成不同的样本以帮助泛化,比如VAE和GAN。

对于Representation learning:这类方法是领域泛化中最流行的方法。有两种具有代表性的技术:首先是领域不变表示学习,比如performs kernel、对抗性训练、域之间的显式特征对齐或不变风险最小化(invariant risk minimization);其次是特征解纠缠(feature disentanglement),这试图将特征分解为领域共享或领域特定的部分,以更好地泛化。

对于Learning strategy,这类方法侧重于利用一般的学习策略来提高泛化能力,主要包括以下几种方法:集成学习(ensemble learning),它依靠集成的力量来学习统一和泛化的预测函数;元学习,通过构建元学习任务来模拟领域转移需要学习的一般知识;梯度运算,它试图通过直接对梯度进行运算来学习泛化表示;分布式鲁棒优化,学习训练域的最坏分布情况;自监督学习,构建pretext任务来学习泛化表征。此外,还有其他策略,比如度量学习。

表示学习:领域不变表示和特征解纠缠

将预测函数分解为 h = f ∘ g h=f\circ g h=fg,其中 g g g是表示学习函数, f f f是分类器函数,表示学习可以形式化为: m i n f , g E x , y l ( f ( g ( x ) ) , y ) + λ l r e g min_{f,g}\mathbb{E}_{x,y}l(f(g(x)),y)+\lambda l_{reg} minf,gEx,yl(f(g(x)),y)+λlreg其中, l r e g l_{reg} lreg为正则化项。目前,人们设计了许多方法来更好地学习具有相应 l r e g l_{reg} lreg的特征提取函数 g g g。下面,根据不同的学习原理将现有的表征学习分为两大类:领域不变的表征学习和特征解纠缠。

领域不变表征学习

有工作从理论上证明(Analysis of representations for domain adaptation),如果特征表示对不同的领域保持不变,则该表示是通用的,并可转移到不同的域。基于这一理论,已经提出了大量的领域自适应算法。类似地,对于域泛化,目标是将特定特征空间中多个源域之间的表示差异减少到域不变,以便学习的模型能够对看不见的域具有可泛化的能力。沿着这条线,主要有四种类型的方法:基于内核的方法、领域对抗性学习、显式特征对齐和不变风险最小化。

基于kernel的方法

基于核的方法是机器学习中最经典的学习范式之一。基于核的机器学习依赖于核函数将原始数据转换到高维特征空间,不需要计算数据在该空间中的坐标,而是简单地计算特征空间中所有样本对之间的内积。最具代表性的基于核的方法之一是支持向量机(SVM)。对于领域泛化,有很多基于核的算法,其中表示学习函数 g g g被实现为一些feature map φ ( ⋅ ) φ(·) φ(),该feature map很容易使用 核函数 k ( ⋅ , ⋅ ) k(·,·) k(⋅,⋅)(如RBF核和拉普拉斯核)来计算。

在基于核函数的方法中,通常使用核函数来度量样本之间的相似度或距离。常用的核函数包括线性核函数、多项式核函数、高斯核函数等。这些核函数可以将原始数据映射到高维特征空间,使得在该特征空间中的样本之间的距离能够更好地表示它们在原始空间中的相似性。

基于核函数的方法在领域泛化中的应用主要有两个方面:

  • 领域自适应(Domain Adaptation):在领域自适应问题中,训练数据和测试数据来自于不同的数据分布,模型需要在训练数据的领域上学习,然后在测试数据的领域上进行泛化。基于核函数的领域自适应方法通过在核函数中引入领域自适应的约束,例如最大均值差异(Maximum Mean Discrepancy,MMD),来减小训练数据和测试数据之间的领域差异,从而提高模型在测试数据上的性能。
  • 迁移学习(Transfer Learning):在跨领域学习问题中,训练数据和测试数据可能来自于不同的领域,但存在一些共享的信息或知识可以用于泛化。基于核函数的跨领域学习方法通过在核函数中考虑源领域和目标领域的相似性,从而在源领域学到的知识能够帮助提升在目标领域的泛化性能。

总的来说,基于核函数的方法通过将数据映射到高维特征空间,并在该空间中计算相似度或距离来实现领域泛化。它可以在非线性和复杂的数据分布中有效地建模,并在训练数据和测试数据之间存在领域差异的情况下提高模型的泛化性能。这类方法隐含地将领域偏差问题转移到多领域所有样本的相似性,可以想象kernerl的映射根据样本距离将所有数据放到了同一个高维空间

领域对抗学习

领域对抗性训练被广泛用于学习领域不变特征。比如用于DA的领域对抗神经网络(DANN),该网络训练生成器和鉴别器。鉴别器被训练来区分领域,而生成器被训练来欺骗鉴别器来学习域不变特征表示。

具体而言,用于DG的领域对抗学习包括以下几个步骤:

  • 特征提取器:首先,需要设计一个用于提取数据特征的模型,如卷积神经网络CNN。该模型用于将原始数据转换为高层次的特征表示。
  • 领域分类器:为了区分不同领域的数据,需要添加一个领域分类器,用于预测样本来自于哪个源领域。领域分类器可以是一个二分类器,其输入是特征提取器的输出。
  • 领域对抗损失函数:为了实现领域不可区分性,需要通过领域对抗损失函数来训练特征提取器,使其生成的特征在源领域和目标领域上无法被领域分类器区分。
  • 分类器训练:同时,需要在目标领域上进行分类器的训练。通常使用交叉熵损失函数来衡量分类器的分类性能,并将其作为主要优化目标。

通过交替地训练特征提取器、领域分类器和分类器,领域对抗学习方法可以实现在源领域和目标领域上的分类性能和领域不可区分性的平衡。特征提取器在训练过程中学习到的特征表示具有较好的领域泛化性能,可以在目标领域上实现良好的分类性能。

需要注意的是,领域对抗学习的成功与否取决于源领域训练数据的质量。

显式特征对齐

这一系列工作将跨源域的特征对齐,通过显式特征分布对齐或特征归一化来学习域不变表示。

对于特征分布对齐:该方法通过显式地使多个源域的特征分布尽可能接近来实现特征对齐(核方法和对比学习是隐式的)。具体操作包括以下步骤:

  • 统计多个源域的特征分布。使用某种距离度量(如KL散度)来衡量源域之间的特征分布差异。
  • 引入一个最小化领域距离的损失函数,以迫使分布尽可能接近。

对于特征归一化:该方法通过将多个源域的特征进行归一化,使得它们具有相似的统计特性,从而达到特征对齐的目的。具体操作包括以下步骤:

  • 统计多个源域的特征的均值和方差,可以使用样本均值和方差进行估计。
  • 对这些特征进行归一化,例如通过减去均值并除以方差来进行零均值单位方差化。确保在特征归一化过程中,保持特征的一致性。

不变风险最小化

Arjovsky等人从另一个角度考虑了域不变性。他们并不寻求对齐所有域的表示分布,而是在表示空间的顶部强制执行最优分类器,使其在所有域中都相同。直觉是,预测的理想表示是 y y y的cause,因果机制不应受到其他因素或机制的影响,因此是领域不变的。IRM(Invariant risk minimization)可以公式化为: m i n g ∈ G ,   f ∈ ∩ i = 1 M a r g m i n f ′ ∈ F ϵ i ( f ′ ∘ g ) ∑ i = 1 M ϵ i ( f ∘ g ) min_{g\in G,\thinspace f\in\cap_{i=1}^{M}argmin_{f'\in F}\epsilon^{i}(f'\circ g)}\sum_{i=1}^{M}\epsilon^{i}(f\circ g) mingG,fi=1MargminfFϵi(fg)i=1Mϵi(fg)其中, ϵ \epsilon ϵ表示风险risk,即error。对于 g g g的函数类 G G G f f f的函数类 F F F f f f的约束体现了所有域共享相同表示的分类器,并且目标函数鼓励 f f f g g g实现低源域风险。然而,这个问题很难解决,因为它在约束条件下涉及内部优化问题。因此后续开发了一个代理问题来学习更实用的特征提取器 g g g m i n g ∈ G ∑ i = 1 M [ ϵ i ( g ) + λ ∣ ∣ ▽ f ϵ i ( f ∘ g ) ∣ f = 1 ∣ ∣ 2 ] min_{g\in G}\sum_{i=1}^{M}[\epsilon^{i}(g)+\lambda||\triangledown_{f}\epsilon^{i}(f\circ g)|_{f=1}||^{2}] mingGi=1M[ϵi(g)+λ∣∣fϵi(fg)f=12]其中考虑伪表示分类器 f = 1 f=1 f1,并且梯度范数项测量该分类器的最优性。 ϵ i ( g ) \epsilon^{i}(g) ϵi(g)是在第 i i i个领域上的分类误差, λ \lambda λ是一个正则化参数, ∣ ∣ ▽ f ϵ i ( f ∘ g ) ∣ f = 1 ∣ ∣ 2 ||\triangledown_{f}\epsilon^{i}(f\circ g)|_{f=1}||^{2} ∣∣fϵi(fg)f=12表示在整个领域集合上对 f ∘ g f\circ g fg的梯度的范数平方。

优化目标是在不同的领域上最小化分类误差,并通过对 g g g的梯度进行正则化来鼓励 g g g具有平滑的变化。具体操作如下:

  • 针对每个领域 i i i,计算使用 g g g得到的分类误差 ϵ i ( g ) \epsilon^{i}(g) ϵi(g)
  • 对于 g g g,计算分类器 f f f相对于整个领域集合上的分类误差的梯度 ∣ ∣ ▽ f ϵ i ( f ∘ g ) ∣ f = 1 ∣ ∣ 2 ||\triangledown_{f}\epsilon^{i}(f\circ g)|_{f=1}||^{2} ∣∣fϵi(fg)f=12
  • 对于给定的空间 G G G,通过最小化目标函数,可以找到在多个领域上表现良好且具有领域泛化能力的 g ∗ g^{*} g

IRM的目标是通过在训练中强制模型在不同的领域中具有相同的预测结果来实现领域泛化。IRM的实现通常涉及以下步骤:

  • 定义领域集合:首先,需要定义一组不同的领域。每个领域代表训练数据的不同来源或分布。
  • 构建域不变性约束:为了实现领域泛化,需要构建一种域不变性约束。这个约束的目标是使模型对于输入数据的领域变化具有不变性。一种常见的做法是使用领域分类器,它尝试根据输入数据预测其来源领域。通过最小化领域分类器的错误,可以鼓励模型在不同领域中保持一致的预测。
  • 优化模型:在训练过程中,通过最小化域分类器的错误和任务损失来优化模型。域分类器的error鼓励模型学习域不变的表示,而任务loss则与特定任务相关。

IRM的核心思想是通过显式地建模和优化域不变性来实现领域泛化。


特征解纠缠

解纠缠表示学习旨在学习将样本映射到特征向量的函数,该特征向量包含关于不同变量因子的所有信息,每个维度(或维度的子集)仅包含关于某些因子的信息。基于解纠缠的DG方法通常将特征表示分解为可理解的组成(特征子集),其中一个特征是域共享/不变特征,另一个是域特定特征。基于解纠缠的DG的优化目标可以概括为: m i n g c , g s , f E x , y l ( f ( g c ( x ) ) , y ) + λ l r e g + μ l r e c o n ( [ g c ( x ) , g s ( x ) ] , x ) min_{g_{c},g_{s},f}\mathbb{E}_{x,y}l(f(g_{c}(x)),y)+\lambda l_{reg}+\mu l_{recon}([g_{c}(x),g_{s}(x)],x) mingc,gs,fEx,yl(f(gc(x)),y)+λlreg+μlrecon([gc(x),gs(x)],x)其中 g c g_c gc g s g_s gs分别表示域共享和域特定的特征表示提取器。 λ λ λ µ µ µ是权衡参数。 l r e g l_{reg} lreg是一个正则化项,明确鼓励将域共享特征和特定特征分离, l r e c o n l_{recon} lrecon表示防止信息损失的重建损失。注意, [ g c ( x ) , g s ( x ) ] [g_{c}(x),g_{s}(x)] [gc(x),gs(x)]表示两种特征的组合(不限于concat操作)。

根据网络结构和实现机制的选择,基于解纠缠的DG主要可分为三类:多分量分析、生成建模和因果激励方法。

多分量分析

在多分量分析中,通常分别使用域共享和域特定的网络参数来提取域共享和领域特定的特征。

比如Ding和Fu(Deep domain generalization with structured low-rank constraint)为每个域设计了特定于域的网络,为所有域设计了一个共享的域不变网络,以学习解纠缠表示,其中采用低秩重构以结构化低秩方式对齐两种类型的网络。

通常,多分量分析可以在不同的体系结构中实现,并且对于表示解纠缠有效。

生成建模和因果激励

从数据生成过程的角度来看,生成模型可以用于解纠缠。这种方法试图从领域层面、样本层面和标签层面来阐述样本的生成机制。生成模型不仅可以提高OOD性能,还可以用于生成任务,生成式建模对许多潜在的应用都很有用。

因果关系是对统计之外的变量关系(比如联合分布)的更精细描述。因果关系提供了系统在干预下如何表现的信息,因此它自然适用于DG,因为领域转移可以被视为一种干预。特别是,在因果机制下,所需的表示是标签的真正原因(例如,物体形状),因此预测不会受到对相关但语义无关的特征(例如,背景、颜色、风格)的干预影响。

对于领域泛化,He等人重新加权特征,以反映因果效应。Zhang等人将傅立叶特征作为图像的成因因素,并加强了这些特征之间的独立性。使用对象标识的附加数据(这是一个比类标签更详细的标签),在给定相同对象的情况下,强制实现了表示与域索引的条件独立性(Deep stable learning for out-of-distribution generalization)。

对于单源领域泛化,可以使用数据增强来呈现因果因素的信息。增强操作被视为在基于特定领域知识的不相关特征的干预下产生结果。在因果考虑下也有生成方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/525226.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vim强大的快捷键

文章目录 vim强大的快捷键(必须在可视模式下完成)光标移动(上下左右移动)行选中列选中复制粘贴剪切删除取消后悔取消跳到文件的末尾跳转到我呢见的开头保存并且退出vim编辑器自动补全自动格式化回到行首(这一行的第一个…

ESP32设备驱动-MMA8452加速度计驱动

MMA8452加速度计驱动 文章目录 MMA8452加速度计驱动2、硬件准备3、软件准备4、驱动实现MMA8452Q 是一款智能、低功耗、三轴、电容式微加工加速度计,具有 12 位分辨率。 该加速度计具有嵌入式功能,具有灵活的用户可编程选项,可配置为两个中断引脚。 嵌入式中断功能可实现整体…

DJ5-2 差错检测和纠错

目录 一、差错检测和纠错技术 1、发送节点 2、接收节点 3、说明 二、差错检测技术 1、一比特奇偶校验 2、二维奇偶校验 3、Internet 校验和方法(复习) 4、循环冗余检测 CRC 5、差错检测方法比较 一、差错检测和纠错技术 链路层提供比特级差错检…

我为什么要使用vuetify3做为基础组件去开发公司组件库

设计风格 Vuetify是基于Material Design规范,依靠Material Design的设计优势,在无需编写一行css代码就可以得到非常美观的界面功能,同时Vuetify还具备自适应的能力,可以使用一套代码写出同时兼容手机、平板、web的功能&#xff1…

如何在Simulink中使用可变电阻-可变电容-可变电感

1. 原由 前期文章提出了Simulink如何在线修改(动态修改)模块参数的方法,并提供原创的Dynamic Change Parameter模块(简称DCP模块),模块得到了许多朋友的使用。最近收到几位朋友反馈,他们使用DCP…

VGG网络原理与搭建

VGG网络原理与搭建 VGG在2014年由牛津大学著名研究组VGG(Visual Geometry Group)提出,斩获该年ImageNet竞赛中Localization Task(定位任务)第一名和Classification Task(分类任务)第二名。 论文…

HTTP第10讲——响应状态码

背景 HTTP 报文里请求行的组成部分,包括请求方法和 URI。有了请求行,加上后面的头字段就形成了请求头,可以通过 TCP/IP 协议发送给服务器。 服务器收到请求报文,解析后需要进行处理,具体的业务逻辑多种多样&#xff0…

四、c++学习(类的简介)

上一篇我们做了一个简单的界面优化,并且我们可以选择进入游戏界面,所以这一篇我们来实现贪吃蛇和食物。 C学习,b站直播视频 文章目录 4.0 课程目标4.1 结构体4.1.1 c语言面向对象4.1.2 c的结构体4.1.3 内存对齐 4.2 union4.2.1 union应用&am…

Chapter8:线性系统的状态空间分析与综合(上)

第八章:线性系统的状态空间分析与综合 Exercise8.1 已知控制系统结构图如下所示: 其中: u u u为输入, y y y

Gradle版本、Gradle插件版本和AndroidStudio版本之间的对应关系

问题描述 有时候碰到gradle版本死活下载不下来,还会报Gralde Sync Issues,有可能是你的Gradle Wrapper版本和Gradle插件版本、AndroidStudio版本不匹配。 解决方案 Gradle版本和Gradle插件版本之间存在一定的对应关系。Gradle Wrapper是用来指定项目使用的Gradl…

javaweb系列-js引入、输出、变量、数据类型、运算符

1.1 js介绍 js可以让我们的页面更加的智能,让页面和用户进行交互。 1.2 引入方式 同样,js代码也是书写在html中的,那么html中如何引入js代码呢?主要通过下面的2种引入方式: 第一种方式:内部脚本&#x…

深度学习第J9周:Inception v3算法实战与解析

目录 一、理论基础 二、pytorch代码复现1.前期准备 2.代码复现 3.训练运行 3.2指定图片进行预测 三、总结 🍨 本文为[🔗365天深度学习训练营]内部限免文章(版权归 *K同学啊* 所有) 🍖 作者:[K同学啊] &…

K_A39_001 基于STM32驱动TF卡模块读写数据 串口打印

K_A39_001 基于STM32驱动TF卡模块读写数据 串口打印 所有资源导航一、资源说明二、基本参数参数引脚说明 三、驱动说明时序对应程序: 四、部分代码说明1、接线引脚定义1.2、STM32F103C8T6TF卡模块 五、基础知识学习与相关资料下载六、视频效果展示与程序资料获取七、注意事项八…

【英语】大学英语CET考试,口语部分2(课程笔记)

文章目录 1、口语考试介绍与备考攻略1.1 口语考试介绍1.2 考试备考攻略 上课老师:金格妃 上课时间:4h 1、口语考试介绍与备考攻略 方法是通用的:CET4/6,雅思托福,BEC等 近年四六级考试的长度是接近雅思托福的&#x…

【大数据】Presto(Trino)配置参数以及 SQL语法

文章目录 一、概述二、Trino coordinator 和 worker 节点作用1)Trino coordinator 节点作用2)Trino worker 节点作用 三、Trino 参数详细讲解1)coordinator 节点配置1、config.properties 配置文件2、jvm.config 配置文件3、log.properties 配…

libevent高并发网络编程 - 04_libevent实现http服务器

文章目录 1 evhttp简介2 相关的APIevhttp_new()evhttp_free()evhttp_bind_socket()evhttp_set_gencb()evhttp_set_cb()evhttp_request_get_uri()evhttp_request_get_command()evhttp_request_get_input_headers()evhttp_request_get_input_buffer()evhttp_request_get_output_h…

MagicalCoder系列教程(二):如何下载本地安装启动项目?

目录 下载启动 1 windows下载 2 linux下载 3 安装启动方式: 3.1 Windows免安装 3.2 其他操作系统(Mac等其他操作系统) 3.3 启动安装失败 MagicalCoder可视化开发平台:轻松搭建业务系统,为企业创造更多价值&…

【故障排查】【杂项】ingress + Jenkins 上传hpi文件(8MB)报错413

1、ingress Jenkins 上传hpi文件(8MB)报错 413 Request Entity Too Large 处理方法:ingress文件加上annotations ingress-nginx 实际上为nginx,所以在此调整。apiVersion: extensions/v1beta1 kind: Ingress metadata:name: jen…

Dreaming of Freedom

题目: 题意解析: n 个程序员要在 m 个算法里选出最受欢迎的算法,每轮投票每个程序员都会在剩下的算法中选择一个。 在第一轮投票前,m 种算法都可以选择;每轮投票后,只保留有最多票数的算法;只…

蓝桥杯提单day2【题解】

题单链接 蓝桥杯题单day2【题目】_奔跑的星黛露的博客-CSDN博客 题解 蓝肽子序列 链接 https://www.lanqiao.cn/problems/1030/learning/?page1&first_category_id1&sortstudents_count&second_category_id3&tags%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92,%E…