信息检索(37):Query-as-context Pre-training for Dense Passage Retrieval

news2024/11/13 11:51:35

Query-as-context Pre-training for Dense Passage Retrieval

  • 标题
  • 摘要
  • 1 引言
  • 2 初步:上下文监督预训练
    • 2.1 coCondenser
    • 2.2 CoT-MAE
  • 3 查询即上下文预训练
    • 3.1 预训练
    • 3.2 微调
  • 4 实验
    • 4.1 预训练
    • 4.2 微调
    • 4.3 基线
    • 4.4 主要结果
    • 4.5 域外评估
  • 5 分析
    • 5.1 生成的查询数量的影响
    • 5.2 混合上下文的影响
  • 6 相关工作
  • 7 结论
  • 8 局限性


原文链接:https://aclanthology.org/2023.emnlp-main.118.pdf
(2023)


标题

query 作为 context
预训练

摘要

最近,已经开发出通过使用上下文监督预训练来提高密集段落检索性能的方法。
这些方法只是认为同一文档中的两个段落是相关的,而不考虑弱相关对的潜在负面影响。因此,本文提出了查询即上下文预训练,这是一种简单而有效的预训练技术来缓解这个问题。查询即上下文预训练假设从段落派生的查询更有可能与该段落相关,并形成段落-查询对。然后将这些段落-查询对用于对比或生成上下文监督的预训练。
预训练模型在大规模段落检索基准和域外零样本基准上进行评估。实验结果表明,查询即上下文预训练为检索性能带来了可观的收益,证明了其有效性和效率。

1 引言

段落检索是从大型语料库中检索相关段落以响应查询的过程,这在网络搜索等各种下游应用中非常有用(Fan 等人,2021;Guo 等人,2022;Lin 等人,2021a )、问答系统(Karpukhin 等人,2020;Lee 等人,2020;Zhu 等人,2021)和对话系统(Gao 等人,2022a;Yu 等人,2021)。预训练语言模型 (PLM) 的成功(Devlin 等人,2018 年;Liu 等人,2019 年)促进了更强大的基于 PLM 的密集和稀疏段落检索方法的开发

基于PLM的密集检索方法(Xiong等,2020;Lu等,2021;Hofstätter等,2021;Gao和Callan,2021b;Ren等,2021b;Ma等,2022;Liu和Shao,2022;Wu et al, 2022;Wang et al, 2022)使用 PLM 将查询和段落编码到共享语义空间中。然后通过点积或余弦相似度来测量查询和段落表示之间的语义关系。预训练和微调技术已经被开发出来以提高密集检索模型的性能。密集检索的预训练过程旨在通过辅助自监督或上下文监督任务来提高编码器的文本表示建模能力。

上下文监督预训练(Gao 和 Callan,2021b;Wu 等人,2022)假设同一文档中的两个段落 1 是上下文相关的或彼此相关的,因此可用于对比学习或上下文解码。
然而,上下文监督的预训练忽略了这样一个事实:文档中的段落在许多情况下可能是弱相关的,甚至是不相关的。如图 1 所示,MS-MARCO 语料库(Nguyen 等人,2016)文档中的两个段落在内容上不直接相关。根据我们通过人工注释的统计结果,coCondenser 训练数据中只有 35.5% 的段落对(Gao and Callan,2022)具有较高的相关性。统计详情请参阅附录A。
这些弱相关或不相关的段落与上下文监督预训练所基于的假设不一致,并且可能不利于上下文监督预训练。

与密集检索相反,稀疏检索基于“词袋”假设,并将段落和查询表示为基于稀疏术语的向量。基于 PLM 的稀疏检索(Nogueira 和 Lin,2019;Dai 和 Callan,2019; Mao 等人,2020;Formal 等人,2021b,a;Mallia 等人,2022)使用 PLM 来改进稀疏向量(Nogueira 和 Lin, 2019),它预测一组相关查询以丰富段落内容,从而缓解不匹配问题。查询预测已被证明在稀疏检索中有效,但尚未在密集检索的背景下进行探索,特别是在密集检索中。这就提出了一个问题:查询预测技术是否可以使针对密集检索而定制的预训练过程受益。

在我们的统计分析中,预测的查询与段落的内容更好地一致(参见附录 A),这一观察结果表明,查询预测可能是缓解上下文监督预训练中弱相关段落问题的一种有前途的方法。因此,本文重点探讨查询预测技术,以改进密集检索的上下文监督预训练方法。我们提出的方法称为“查询即上下文预训练”,假设从段落(使用 T5 等生成模型)派生的查询更有可能是该段落的相关上下文。与之前使用从文档中随机选择的两个段落创建训练对的上下文监督方法相比,查询即上下文方法通过将段落与预测查询相结合来生成训练对,如图 2 所示。

使用 queryas-context 设置有几个优点。首先,查询更有可能与段落相关,因为它是从段落生成的。此外,在监督下游检索训练中使用段落查询对与在预训练中使用段落查询对是一致的,这有助于弥合两个过程之间的差距。最后,由于段落-查询对通常比以前使用的段落-段落对短,因此它加快了预训练过程并减少了训练开销。

为了验证我们提出的查询即上下文预训练的有效性,我们在大规模网络搜索基准上进行了实验:MS-MARCO Passage Ranking (Nguyen et al, 2016)、TREC Deep Learning (DL) Track 2019 (Craswell)等人,2020a)和 Track 2020(Craswell 等人,2020b)。我们还使用大量域外数据集在 BEIR(Thakur 等人,2021)基准上评估查询即上下文预训练模型。实验结果表明,query-ascontext 比竞争基线取得了相当大的进步。

我们的贡献可以总结如下:
• 我们揭示了上下文监督预训练过程中先前被忽视的弱相关段落对的问题。
• 我们提出查询即上下文预训练,这是一种简单而有效的预训练技术,可以缓解上述问题。
• 实验表明,查询即上下文预训练带来了可观的收益,同时加快了预训练速度。

2 初步:上下文监督预训练

在本节中,我们首先概述预训练语料库。随后,我们描述了掩码语言建模任务,它作为预训练的基础任务。最后,我们提出了两种具有代表性的对比和生成上下文监督预训练方法,我们提出的查询即上下文将应用于这些方法。
预训练语料库给定一组文档,我们从每个文档中随机提取一对段落,形成训练语料库,如下所示:
在这里插入图片描述
其中 {xi , yi} 是来自同一文档的一对段落

**掩码语言建模 (MLM) **
形式上,给定一个带有 n 个标记的段落 x,一个特殊标记 [CLS] 会添加到该段落的开头,从而产生
在这里插入图片描述

其中 x0 代表 [CLS] 标记。然后,随机选择一定比例的位置作为“掩码位置”(mask_pos),并用特殊令牌[MASK]或随机令牌替换。然后,屏蔽的段落会通过文本编码器,该编码器通常由 L 层转换器块组成。对于编码器中的第 l 个 Transformer 层,其输出是该层的隐藏状态
在这里插入图片描述

然后使用最后一层的输出来计算 MLM 的目标损失
在这里插入图片描述

其中 CE 是交叉熵函数的缩写, 是 xi 相应隐藏状态到词汇分布的投影。

2.1 coCondenser

coCondenser (Gao and Callan, 2021b) 是一种代表性的对比上下文监督方法。
对于 coCondenser,来自文档的两个段落被认为是相关的并形成正对,而来自不同文档的两个段落被认为是不相关的并形成负对。
这些对构成了用于对比学习的小批量。生成段落嵌入表示的常见方法是使用编码器最后一层中 [CLS] 位置的隐藏状态,即 h L 0 。因此,段落x和y的嵌入表示为h L 0 (x)和h L 0 (y),简化为hx和hy。然后,对于小批量 B,对比学习目标 w.r.t x 表述为:
在这里插入图片描述
其中 τ 是温度超参数,sim (,) 是点积相似度函数。

编码器上还附加了一个额外的辅助解码器,它由 N 层 Transformer 组成。辅助解码器采用来自第 L 层的 [CLS] 表示(即 h L 0 )和来自编码器的第 M(例如第 6)层的令牌表示(即 {hM 1 ,…)的串联。 …, hM n },作为输入。与 MLM 类似,辅助解码器最后一层的输出用于执行辅助 MLM 预训练。
在这里插入图片描述
最后,coCondenser的总损耗为:
在这里插入图片描述

欲了解更多详细信息,请参阅(Gao 和 Callan,2021b)。

2.2 CoT-MAE

CoT-MAE(Wu et al, 2022)是一种代表性的生成式上下文监督方法,它使用非对称编码器-解码器结构,具有 L 层的深层编码器和 N 层的浅层解码器。它同时对编码器和解码器执行 MLM 训练。对于一对通道 {x, y},假设 x 被馈送到编码器侧,y 被馈送到解码器侧。

在编码器方面,仅使用段落中未屏蔽的标记来重建 x,类似于 BERT 的 MLM 过程,但具有更高的屏蔽率(例如 30%)。在解码器侧,y 使用其未屏蔽的标记和上下文段落 x 来重建。解码器将 x 的句子嵌入(即 hx)和屏蔽 y 的单词表示作为输入,将其连接为:
在这里插入图片描述
然后串联 d 0 穿过 N 层 Transformer 块,k 层的隐藏状态表示为:
在这里插入图片描述

然后将解码器最后一层的输出用于 LM 预训练,损失定义为:
在这里插入图片描述

下标ctx表示该过程是上下文监督的。然后,我们将编码器和解码器的损失相加,得到最终的损失:
在这里插入图片描述

欲了解更多详细信息,请参阅(Wu et al,2022)。

3 查询即上下文预训练

在本节中,我们首先介绍查询即上下文预训练的细节,然后介绍预训练模型在检索任务上的微调过程。

3.1 预训练

预训练是在没有注释的大规模文档上进行的。对于每个文档 D,我们提取一组最大长度为 {x0, x1, …} 的段落。接下来(Nogueira 和 Lin,2019),对于每个段落 xi ,我们使用微调的 T5 模型来生成查询。我们应用 topp=0.95 和 topk=25 的核采样来生成多个查询以促进多样性。

特别地,每个段落 xi 将被输入到微调的 T5 模型中,并生成 C 个候选查询,{qij} C j=1。在训练过程中,我们将随机选择一个候选查询作为段落的上下文:
在这里插入图片描述

段落和采样查询形成训练对{xi , yi},可用于替换等式1中使用的原始对。具体而言,段落-查询对直接用于coCondenser的对比预训练。对于 CoT-MAE,我们将段落输入编码器,并查询解码器进行生成预训练。 coCondenser 和 CoT-MAE 的模型实现已在第 2.1 和 2.2 节中介绍。

3.2 微调

我们对下游检索任务进行微调,以验证预训练的有效性。接下来(Gao 和 Callan,2021b;Wu 等人,2022),MS-MARCO 上的微调过程基于具有硬负挖掘的两阶段管道(Gao 等人,2022b),如图 3 所示。此过程涉及两个训练阶段:双编码器检索器 1 和双编码器检索器 2,它们均使用查询即上下文预训练模型进行初始化。检索器通过手动注释的段落-查询对的对比学习进行训练。对于手动注释的段落-查询对(p +,q+),段落和查询的表示形成正例(hp+,hq+)。当训练检索器1时,对于查询q+,负样本{p-}包括批量负样本和BM25挖掘的硬负样本。当训练检索器 2 时,也会使用训练有素的检索器 1 来挖掘硬负例,并与其他负样本相结合来创建负样本 {p -}。两个阶段均使用 InfoNCE 损失进行优化

在这里插入图片描述

其中 τ 是固定为 1 的温度超参数,sim (,) 是点积相似度函数。
根据(Thakur 等人,2021),我们使用 MS-MARCO negatives2 训练检索器,以在 BEIR 基准上进行域外评估

4 实验

在本节中,我们提供有关预训练和微调过程的详细信息。然后我们展示实验结果。

4.1 预训练

查询即上下文数据集
(Gao 和 Callan,2021b;Wu 等人,2022)之后,预训练数据集是从 MS-MARCO 段落语料库收集的,该语料库包含 320 万个文档。我们使用 NLTK 将每个文档拆分为句子,并将这些句子分组为不超过 144 个连续标记的段落。对于每个段落,我们通过公共 T5 模型 3 生成候选查询。在预训练期间,我们在每一步选择一批段落,并随机选择一个候选查询作为每个段落的上下文,以形成相关对。

模型实现
(Wu et al, 2022)之后,CoT-MAE 的编码器使用预训练的 12 层 BERT 模型进行初始化,而解码器则从头开始初始化。我们使用 AdamW 优化器对模型进行最多 50k 步的预训练,学习率为 4e-4,批量大小为 16k,线性调度的预热率为 0.1。我们使用 16 个 Tesla V100 GPU 训练模型 60 小时,然后丢弃解码器,只留下编码器进行微调。
接下来(Gao 和 Callan,2021b),coCondenser 的编码器是从预训练的 12 层 Condenser(Gao 和 Callan,2021a)模型初始化的。
训练使用 AdamW 优化器在 8 个 Tesla V100 GPU 上进行,历时 90 小时,执行 120,000 个步骤,学习率为 1e-4,全局批量大小为 2k,权重衰减为 0.01。一旦预训练完成,Condenser 头就会被丢弃,从而得到一个与 BERTbase 具有相同架构的模型,用于微调。

4.2 微调

数据集和评估
我们在 MSMARCO 通道排名(Nguyen 等人,2016)、TREC 深度学习 (DL) Track 2019(Craswell 等人,2020a)和 2020(Craswell 等人,2020b)上微调预训练的 coCondenser 和 CoT-MAE评估任务。

MS-MARCO(Nguyen 等人,2016)是一个基准数据集,包含从 Bing 搜索和网页收集的真实用户查询,总共包含约 880 万个段落。训练集包含大约 500,000 个带注释的查询-文档对,而开发集包含 6,980 个带注释的查询。由于测试集不是公开的,因此开发集用于根据之前的工作进行评估(Gao 和 Callan,2021b;Wu 等人,2022)。我们使用 MRR@10、Recall@50 和 Recall@1K 评估我们在 MS-MARCO 上的性能。

TREC 深度学习 (DL)(Craswell 等人,2020a,b)轨道为测试集提供了更详细的注释,以评估排名模型的真实能力。我们评估 2019 年和 2020 年的测试集。 2019 年测试集包含 43 个带注释的查询,2020 年测试集包含 54 个带注释的查询。我们使用 NDCG@10 评估我们在 TREC 上的表现。

实施
我们重用了广泛采用的评估管道(Gao 和 Callan,2021b;Wu 等人,2022;Gao 等人,2022b),并使用通用随机种子(42)来支持再现性。请注意,当我们专注于改进预训练技术时,我们不使用任何增强的方法,例如从强大的重新排序器中蒸馏(Ren 等人,2021b;Santhanam 等人,2021)或多向量表示( Khattab 和 Zaharia,2020),这可以带来进一步的改进。微调仅在 MS-MARCO 数据集上进行训练,并在开发集和 TREC DL 2019/2020 测试集上进行评估。它使用 AdamW 优化器在 8 个 Tesla V100 GPU 上进行训练,学习率为 2e-5,全局批量大小为 64,权重衰减为 0.01。

段落长度也设置为144,负深度设置为200,微调迭代中一个查询的负段落数为15。

4.3 基线

我们的基线方法包括稀疏检索方法和密集检索方法,如表1所示。稀疏检索基线的结果主要来自(Qu et al,2020),包括BM25、docT5query(Nogueira and Lin,2019)、DeepCT( Dai 和 Callan,2019)和 GAR(Mao 等人,2020)。

密集检索基线的结果主要来自(Gao and Callan, 2021b; Liu and Shao, 2022; Ren et al, 2021b; Ma et al, 2022),包括ANCE (Xiong et al, 2020)、SEED (Lu et al, 2022) 2021)、TAS-B(Hofstätter 等人,2021)、RetroMAE(Liu 和 Shao,2022)、SimLM(Wang 等人,2022)等。我们将查询作为上下文的性能与其在两个检索器 1 上的基线进行比较和猎犬2

4.4 主要结果

如表 1 所示,结果表明查询即上下文预训练可以提高性能。

coCondenser
重现 coCondenser 时,预训练步骤扩展到 120k 步骤。检索器 2 的主要评估指标 MSMARCO 通道排名数据集上的 MRR@10 与原始论文相比提高了 0.6pp(Gao 和 Callan,2021b)。当使用query-ascontext预训练时,在MRR@10上有0.6pp的进一步提升。在 TREC DL 19 和 20 测试集上,DL 19 提高了 2pp,DL 20 提高了 3.4pp。此外,查询即上下文预训练还提高了检索器 1 的 MRR@10 和 R@50 分数。

CoT-MAE
在重现 CoT-MAE 时,为了提高效率,我们采用了比(Wu et al, 2022)大得多的批量大小,这使我们能够将训练步骤数从 1200k 减少到 50k。这导致训练速度更快,但与原始论文相比,MS-MARCO MRR@10 指标的性能在某种程度上较低。然而,当应用queryas-context预训练时,在MRR@10上有1.4pp的明显提升,达到40.2。即使与原始论文中 1200k 模型的性能相比,我们仍然实现了 0.8pp 的显着改进。据我们所知,这是单向量预训练(不是重新排序蒸馏)密集检索器的最新结果。在 TREC DL 19 和 20 测试集上,DL 19 提高了 0.8pp,DL 20 提高了 3pp。此外,query-ascontext 预训练还提高了 MRR@10、R@50 和 R@1k 分数猎犬 1.
总体而言,查询即上下文预训练方法是有效的,可以改善对比和生成上下文监督预训练。这主要有两个原因:(1)预训练模型可以为检索器1和检索器2提供更好的参数初始化; (2)更好的检索器1可以用来挖掘更有效的硬负例,这进一步提高了检索器2的训练。

4.5 域外评估

我们在零样本基准 BEIR 上评估了查询即上下文预训练模型的域外性能(Thakur 等人,2021)。 BEIR 基准包含来自 18 个不同数据集的 9 个不同的开放域信息检索任务。
我们在 14 个公开可用的数据集4 上评估模型。如表中所示,当使用 queryas-context 预训练时,coCondenser 和 CoT-MAE 结果都显示出对大多数数据集的显着改进。具体来说,使用 queryas-context 预训练提高了 coCondenser 模型在 9 个不同数据集上的性能。CoT-MAE 的改进更为显着,在 13 个数据集上观察到显着的增益。

5 分析

在本节中,我们检查效率优势并分析不同设置对查询即上下文预训练的影响。

5.1 生成的查询数量的影响

在预训练期间,使用多个候选查询会带来更好的多样性,因为每个段落在每个时期都与不同的候选查询配对。因此,我们探讨生成的查询数量的影响。如表 3 所示,对于 coCondenser,将查询数量从 1 增加到 5 略微提高了 MS-MARCO 数据集上的性能,并导致 TREC DL 19 和 20 测试集上的良好改进。对于 CoT-MAE,使用 5 个查询会导致 MS-MARCO 数据集和 TREC DL 20 测试集的性能增加,而 TREC DL 19 测试集的性能略有下降。然而,进一步增加候选查询的数量通常会带来性能的下降。适当数量的查询保留了它们与段落的相关性,从而在查询即上下文预训练中产生更高的性能。

5.2 混合上下文的影响

我们进一步探讨了混合两种上下文对(段落-查询和段落-段落)的效果。在训练步骤中,我们以相同的概率随机选择使用通道查询或通道通道对作为输入。

如表 4 所示,尽管增加了上下文的多样性,但混合并没有改善 coCondenser 和 CoT-MAE 的效果。这种减少与附录 A 中人工注释的相关性结果一致。段落-段落对具有较高比例的低相关性对,因此组合段落-查询和段落-段落对将不如单独使用段落-查询对有效。这也表明,对于针对密集检索的预训练,训练对的相关性比多样性更为重要

6 相关工作

密集检索

在微调和预训练阶段,已经开发了不同的技术来改进密集检索。在微调阶段,尝试包括挖掘硬负例(Xiong et al, 2020; Zhan et al, 2021)、后期交互(Khattab and Zaharia, 2020)、查询聚类(Hofstätter et al, 2021)、重排序蒸馏(Lin et al, 2021) al, 2021b; Santhanam 等人, 2021)、数据增强(Qu 等人,2020)和联合学习(Ren 等人,2021b;Zhang 等人,2022b,2021)。

在预训练阶段,尝试分为两类。一类侧重于使用辅助自监督自动编码任务改进编码器(Lu et al, 2021;Gao and Callan, 2021a;Liu and Shao, 2022;Zhou et al, 2022)。另一类提出了类似于预训练中的段落检索的段落预测任务(Chang 等人,2020;Gao 和 Callan,2021b;Ma 等人,2022)。该类别中最相关的方法是(Gao 和 Callan,2021b)和(Wu 等人,2022)。 (Gao 和 Callan,2021b)引入了上下文监督的对比预训练过程,假设来自同一文档的段落比来自不同文档的段落更接近。 (Wu 等人,2022)通过上下文嵌入辅助的解码器端重建任务引入了上下文监督的生成屏蔽自动编码任务。
我们的工作就是建立在这两种方法的基础上的。

查询预测
查询预测是一项最初引入 IR 社区的技术,用于扩展段落。它可以通过在构建倒排索引之前生成额外的查询并将其附加到段落中来显着提高 BM25 的性能(Nogueira 和 Lin,2019)。查询预测还被用来学习更好的稀疏(Mallia 等人,2021)或密集(Li 等人,2022)文档表示。在数据稀缺的场景中,查询预测可以通过在目标域上生成合成查询来进行模型训练,从而用于域适应(Ma et al, 2020)。为了减少生成数据中的噪声,交叉编码器也可用于伪标记(Wang 等人,2021)。与我们最相关的工作是(Li et al, 2022),它使用一组生成的伪查询对每个文档进行编码,以获得查询信息的文档表示。然而,(Li et al, 2022)专注于改进密集检索的微调过程,而我们正在研究预训练过程。

7 结论

在这项工作中,我们提出了查询即上下文预训练,这是一种简单而有效的技术,可以缓解上下文监督预训练期间先前被忽视的弱相关对的问题。大量的实验很好地验证了其有效性和效率。

8 局限性

与从同一文档中随机选择的另一个段落相比,一个段落更有可能与其相应生成的查询具有高度相关性。然而,受限于T5模型的能力,仍然存在大量不相关的段落查询对。我们相信更强大的大型语言模型有潜力进一步缓解这个问题,这留待我们未来的研究。

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

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

相关文章

【QuikGraph】C#调用第三方库实现迪杰斯特拉(Dijkstra)算法功能

QuikGraph库介绍 项目地址:https://github.com/KeRNeLith/QuikGraph QuikGraph为.NET提供了通用的有向/无向图数据结构和算法。 QuikGraph提供了深度优先搜索、广度优先搜索、A*搜索、最短路径、k最短路径,最大流量、最小生成树等算法。 QuikGraph最初…

【一支射频电缆的诞生】GORE 戈尔

工具连接: https://microwave-cablebuilder.gore.com/ 控制参数: 连接器: 欣赏

基于yolov8+gradio目标检测演示系统设计

YOLOv8与Gradio:开启目标检测的可视化新篇章 随着人工智能技术的飞速发展,目标检测作为计算机视觉领域的重要分支,已经广泛应用于安防监控、自动驾驶、医疗影像等多个领域。而YOLO(You Only Look Once)系列算法作为目…

力扣每日一题124:二叉树中的最大路径和

题目 困难 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root…

Python 将Excel转换为多种图片格式(PNG, JPG, BMP, SVG)

目录 安装Python Excel库 使用Python将Excel工作表转换为PNG,JPG或BMP图片 使用Python将Excel特定单元格区域转换为PNG,JPG或BMP图片 使用Python将Excel工作表转换为SVG图片 有时,你可能希望以图片形式分享Excel数据,以防止他…

视频封面一键提取:从指定时长中轻松获取您想要的帧图片

在数字媒体时代,视频已成为人们获取信息、娱乐和沟通的主要形式之一。而一个好的视频封面,往往能够吸引观众的眼球,增加视频的点击率和观看量。然而,对于很多视频创作者和编辑者来说,如何从视频中快速、准确地提取出合…

时序分解 | Matlab实现LMD局域均值分解

时序分解 | Matlab实现LMD局域均值分解 目录 时序分解 | Matlab实现LMD局域均值分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 时序分解 | Matlab实现LMD局域均值分解 Matlab语言 1.算法新颖小众,用的人很少,包含分解图 2.直接替换数据即可用…

进入泛型的世界

泛型的理解和好处 泛型的好处 编译时,检查添加元素的类型,提高了安全性减少了类型转换的次数,提高效率 不使用泛型 Dog-加入->Object-取出->Dog(向下转型) Dog放入到ArrayList 会先转成Object,在转…

数据分享—中国土壤有机质数据

土壤有机质数据是进行区域土地资源评价,开展自然地理研究常使用的数据,本期推文主要分享全国土壤有机质数据集。梧桐君会不定期分享地理信息数据,欢迎大家长期订阅。 数据来源 “万物土中生”,小编今天要分享的中国土壤有机质数…

通过mvn archetype 创建一个spring boot start 工程

mvn archetype https://maven.apache.org/archetype/index.html 遇到的问题 对于想自定义一个spring-boot-start的同学,比如 Springboot自定义Starter启动器 整个过程很繁琐。 定义属性开关增加 spring boot test start插件定义自动装载 spring.factories or org.springfra…

安装Ununtu后常见问题(无法远程连接、root密码等)

安装Ununtu后常见问题(无法远程连接、root密码、无法ifconfig等) 提示:安装完Ununtu系统后会遇到一些常见的问题,本文一次洗解决 文章目录 安装Ununtu后常见问题(无法远程连接、root密码、无法ifconfig等)一…

【全开源】排队叫号系统基于FastAdmin+GatewayWorker(源码搭建/上线/运营/售后/维护更新)

一款基于FastAdminGatewayWorker开发的多项目多场景排队叫号系统,支持大屏幕投屏,语音播报叫号,可用于餐厅排队取餐、美甲店排队取号、排队领取、排队就诊、排队办理业务等诸多场景,助你轻松应对各种排队取号叫号场景。 功能简介…

全国招标信息招标原文查询接口

招标信息招标原文查询接口 避开会员 全国招标投标查询API是解析商机的数据之门,它提供了一个高效、实时且定制化的方式来获取和分析招标投标信息。无论您是一家小型企业还是一家大型企业,都可以受益于这一强大工具,加速商业决策,…

音视频-H264编码封装- MP4格式转Annex B格式

目录 1:H264语法结构回顾 2:H264编码补充介绍 3:MP4模式转Annex B模式输出到文件示例 1:H264语法结构回顾 在之前文章里介绍过H264的语法结构。 传送门: 视音频-H264 编码NALU语法结构简介 2:H264编码补充介绍 H…

内存操作数及寻址方式

debug命令 debug命令,即DOS实用程序。DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以追踪执行过程…

新iPadPro是怎样成为苹果史上最薄产品的|Meta发布AI广告工具全家桶| “碾碎一切”,苹果新广告片引争议|生成式AI,苹果倾巢出动

Remini走红背后:AI生图会是第一个超级应用吗?新iPadPro是怎样成为苹果史上最薄产品的生成式AI,苹果倾巢出动Meta发布AI广告工具全家桶,图像文本一键生成解放打工人苹果新iPadPro出货量或达500万台,成中尺寸OLED发展关键…

牛客NC404 最接近的K个元素【中等 二分查找+双指针 Java/Go/PHP】

题目 题目链接: https://www.nowcoder.com/practice/b4d7edc45759453e9bc8ab71f0888e0f 知识点 二分查找;找到第一个大于等于x的数的位置idx;然后从idx开始往两边扩展Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、…

10分钟了解Golang泛型

泛型是Golang在1.18版本引入的强大工具,能够帮助我们在合适的场合实现简洁、可读、可维护的代码。原文: Go Generics: Everything You Need To Know 导言 可能有人会觉得Go泛型很难,因此想要借鉴其他语言(比如Java、NodeJS)的泛型…

timerfd加epoll封装定时器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、用timerfd加epoll封装定时器的优点2、代码实现 1、用timerfd加epoll封装定时器的优点 定时器为什么需要timerfd 在设计定时器时,我们首先想到的就是…