信息检索(十三):On Complementarity Objectives for Hybrid Retrieval

news2024/10/7 10:22:06

On Complementarity Objectives for Hybrid Retrieval

  • 摘要
  • 1. 引言
  • 2. 相关工作
    • 2.1 稀疏和密集检索
    • 2.2 互补性
  • 3. 提出方法
    • 3.1 Ratio of Complementarity (RoC)
    • 3.2 词汇表示(S)
    • 3.3 语义表示(D)
    • 3.4 互补目标
  • 4. 实验
    • 4.1 实验设置
    • 4.2 实验结果
      • 4.2.1 RQ1:正交性的有效性
      • 4.2.2 RQ2:RoC 改进互补性
      • 4.2.3 RQ3:混合检索中互补性的影响
  • 5. 结论
  • 6. 局限性


原文链接:https://aclanthology.org/2023.acl-long.746/
(2023)


摘要

密集检索在各种信息检索任务中都显示出了可喜的结果,而与稀疏检索的优势相结合的混合检索也得到了积极的研究。混合检索的一个关键挑战是使稀疏和稠密互补。现有模型侧重于密集模型,以捕获稀疏模型中忽略的“剩余”特征。我们的主要区别是展示剩余互补性概念是如何受到限制的,并提出一个新的目标,表示为 RoC(互补性比率),它捕获了更全面的互补性概念。我们提出了一种旨在提高 RoC 的两级正交性,然后表明我们模型的改进 RoC 反过来又提高了混合检索的性能。我们的方法在三个代表性 IR 基准上优于所有最先进的方法:MSMARCOPassage、Natural Questions 和 TREC Robust04,具有统计显着性。我们的发现在各种对抗环境中也是一致的.

1)RoC:互补率
2)two-level 正交性 提高 RoC
3)RoC 的提高会提高混合检索的性能

1. 引言

混合检索:稀疏检索与密集检索结果线性相加 取更高得分
两种途径:
  1)侧重密集检索,增加 D,捕获被稀疏检索忽略的特征
    Ps:缺点是增大 D 的时候,D ∩ S 也会增大
  2)本文:侧重 RoC,减少 D 与 S 的交叉
RoC 为什么可以 ?
  1)RoC与上面途径1)兼容
  2)增大 RoC 本质会增强混合检索
表示和匹配查询和文档(或答案)对于设计信息检索 (IR) 和开放域问答 (QA) 模型至关重要。现有的方法已分为稀疏检索和密集检索。
经典的稀疏(或符号)检索,例如 BM25(Robertson 和 Zaragoza,2009),量化查询 q 和文档 d 之间的词汇重叠(或精确匹配),并按词频 (tf) 和逆文档频率 (idf) 进行加权。这种计算可以有效地定位到一些具有倒排索引的高分 q-d 对,但可能无法匹配术语不匹配的对。例如,具有相同意图的文本对“facebook更改密码”和“fb修改passwd”不共享任何共同词,因此该对无法通过词法检索进行匹配。
为了克服这种不匹配,密集检索模型,例如基于 BERT 的 DPR(Karpukhin 等人,2020 年)或 coCondenser(Gao 和 Callan,2021 年),旨在通过将查询和文档编码为低维嵌入向量来支持软“语义匹配” 。训练密集表示,以便“password”和“passwd”在空间中位置接近,即使它们具有不同的词汇表示。

每个模型的这些互补优势产生了自然激励的混合模型(Gao et al, 2020; Yadav et al, 2020; Ma et al, 2021),我们将其表示为 BM25+DPR,从两个模型中提取分数并选择最高的文档线性组合分数

为了说明我们如何推进 BM25+DPR 基线,图 1(a) 显示了 BM25+DPR 在自然问题上的 Recall@10,其中黄色圆圈代表由 BM25 或 S 回答的问题,蓝色圆圈代表由 BM25 或 S 回答的问题DPR,或 D。理想情况下,两个检索器一起应该涵盖 U 域中的所有问题,但失败率为 46.5%,对应于 U − D ∪ S。

改进有两个方向:(1)放大|D| (2)使其与S更具互补性。图1(b)绘制了CLEAR(Gao等人,2020),旨在强调稀疏模型中忽略的“剩余”特征,或者增加|D − S|。
虽然 |D − S|故障率从 15.2%(图 1a)增加到 20.0%(图 1b),正如预期的那样,失败率并没有显着减少,从 46.5%(图 1a)到 41.8%(图 1b)。我们认为,扩大 |D| 会导致失败案例的减少。从 47.6(图 1a)到 54%(图 1b),与保持 D 固定的假设场景相比,但当交叉点减少时,故障案例从 41.8% 显着减少到 14.1%。
在这里插入图片描述
基于这些观察,我们提出了一种新的互补性度量,考虑了剩余互补性|D − S|,但相对于|D|,表示为互补性比率(RoC)。当两个模型不相交时,RoC 被设计为 1(图 1c);当 D 包含在 S 中时,RoC 被设计为 0。
在这里插入图片描述
RoC具有以下两个优点:
• RoC向后兼容现有的剩余互补概念。我们稍后得出(第 3 节)优化 RoC 可以分为两个子目标:增加 |D − S|和 |D ∩ S|,其中前者与剩余互补性兼容。
• RoC 乘以|D ∪ S| 时,可直接近似混合模型可以回答的问题数量。因此,以提高 RoC 作为目标,自然与提高混合猎犬的性能相关。

凭借这些优势,我们使用表 1 中的指标来解释 CLEAR 仅建立在剩余互补性上的局限性。 CLEAR 增加 |D − S|按预期,但增加 |D ∩ S|由于它们的相关性,将其作为其副产品(见图 1b)。
相比之下,我们提出了一种简单但有效的双级正交性来解决这种相关性,并实现了两个子目标,从而显着提高了 RoC。表 1 显示 RoC 的提高也与召回率的提高相关*。
我们验证了 RoC 的增强可以提高三个 IR 数据集上的混合检索性能:MS MARCO、Natural Questions 和 TREC Robust04

2. 相关工作

2.1 稀疏和密集检索

稀疏(或符号)空间通常是独立的,使得诸如倒排索引或位图之类的数据结构可以有效地识别具有精确匹配的匹配候选,并且也可以有效地计算排名。 BM25(Robertson 和 Zaragoza,2009)是一种著名的使用词袋表示的词汇排名模型。
同时,密集检索模型(Shen等,2014;Guo等,2016;Zhai等,2016;Nogueira和Cho,2019;Zhan等,2020)被提出来解决术语不匹配问题,可以将其分类为分为两组(Guo et al, 2016):(1)基于嵌入的模型和(2)基于交互的模型。我们的目标场景是前者,将查询 q 和文档 d 表示为两个独立的密集向量,并使用向量相似度来匹配 q-d。然而,我们还讨论了如何将我们的想法应用于基于交互的排名方法(Nogueira 和 Cho,2019;McDonald 等人,2018),在没有向量的情况下捕获逐词交互,我们在第 3.3 节中将其作为非嵌入模型讨论。

2.2 互补性

为了利用互补性,已经有一些方法可以将两个空间结合起来,或者将知识从一个空间转移到另一个空间。
首先,对于组合,一种简单的方法是聚合两个空间的分数(Ma et al, 2021),然后将其改进为更复杂的模型,例如 CLEAR(Gao et al, 2020)通过 BM25 的残差进行学习。具体来说,当q-d对在词汇上难以匹配时,边距变大,那么语义匹配的损失就被强调。换句话说,模型经过训练

其次,对于迁移,SparTerm(Bai et al, 2020)通过将 BERT 的上下文知识提炼到词袋空间中来学习稀疏表示。具体来说,基于 BERT 编码器,SparTerm 首先生成词汇术语语义重要性的密集分布,然后控制每个术语的激活,确保最终表示的稀疏性。这意味着,基于术语的匹配方法的表示能力可以提高到语义级匹配。我们的属于结合两个空间的第一类,但我们提出了一个名为 RoC 的新指标来直接评估混合检索中的互补性。表 1 显示了现有的互补性指标仅部分覆盖 RoC。同时,我们还讨论了如何将我们的方法与第二类方法(即 SparTerm)相结合,以实现进一步的收益(第 4.3 节)。

3. 提出方法

3.1 RoC 的优化目标
  1)D∩S 变小
  2)D-S 变大

3.2 & 3.3
  词汇表示 和 语义表示 都表示成向量

3.4 两种正交性
  1)嵌入正交性,通过损失函数限制词汇表示向量和语义表示向量在表示空间正交
  2)输入正交性,因为稀疏方法在语义相似但不同的term上表现差,通过加入扰动,使得精确匹配变得不精确,增强模型学习不精确匹配的能力
我们在 3.1 节中提出 RoC,然后讨论 S(3.2 节)和 D(3.3 节)是如何实现的。 3.4 节讨论了如何组合 D 和 S 来优化 RoC。

在这里插入图片描述

3.1 Ratio of Complementarity (RoC)

RoC 是一个可以衡量互补性并直接近似图 1 中的失败案例的度量,即 RoC ∝ |U − F ail|其中 U 表示所有答复文件。基于这个假设,我们的目标是最大化 |D ∪ S| · 罗克。我们将这个目标描述为两个子目标如下:
(∝ :正比于符号;≃:渐近等于)
在这里插入图片描述

第一个子目标是优化 |D ∩ S|,为此我们将稀疏模型和稠密模型捕获的特征彼此分开。第二个子目标是最大化 |D −S|,为此我们建议捕获稀疏模型的剩余特征。我们在 3.3 节中描述了如何实现每个子目标。

3.2 词汇表示(S)

虽然可以使用任何词汇检索器,但我们使用 BM25(Robertson 和 Zaragoza,2009)描述我们的方法来构建符号表示(图 2(左)中的绿色向量 qlex),以捕获词汇匹配。 BM25 分数可以写为查询和文档的词袋表示之间的内积。我们将 BM25 的 q 和 d 表示定义为 qbm25 和 dbm25 ∈ R |V |分别,其中表示 qbm25 和 dbm25 的第 i 个元素可以写成如下:
在这里插入图片描述

其中 IDF(·) 是术语 i 的逆文档频率,TF(·) 是给定文档中术语 i 的频率。因此,BM25(q,d)可以表示为qbm25和dbm25之间的内积。

由于词汇表示的维数比语义表示的维数大得多,因此需要将 qbm25 和 dbm25 压缩到低维空间。对于这种压缩,Luan 等人 (2020) 发现随机投影 (Vempala, 2004) 对于保留文档排名有效,我们在本工作中采用了这种方法。
尽管存在压缩损失,但可以通过改变嵌入维度 k 来限制该损失。在 NQ 实验中,我们遵循 Luan 等人(2020)的协议,将 k 设置为 715,这保证了 768 维 BERT 嵌入的错误低于 0.038。随机投影是通过矩阵 A 进行线性变换,矩阵 A ∈ R 768×|V |是从 Rademacher 分布中以相等的概率从两个值中随机采样的:{− 1 √ 768 , 1 √ 768 }。
最终的词法表示 qlex 和 dlex 可以通过以下方式获得:
在这里插入图片描述
与等式。 (3),qlex 和 dlex 与 BERT 的语义向量位于同一维空间,同时保留排名。此外,我们的目标是加强与 3.3 节中语义向量的互补性。
根据词汇表示,查询 q 和文档 d 之间的最终相关性得分通过内积计算,如下所示:
在这里插入图片描述
这个相关性分数近似于BM25分数,同时,我们可以在语义空间中处理qlex和dlex这两个向量。

3.3 语义表示(D)

对于语义表示(图 2(左)中的粉色向量),我们采用最先进的(coCondenser;(Gao 和 Callan,2021))用于解释目的,由基于 BERT 的双编码器结构组成(德夫林等人,2019)。因此,我们的密集检索遵循 BERT 的架构、设置和超参数。遵循 BERT 的输入风格,我们将 wordpiece tokenizer 应用于输入文档和查询,然后在开头添加 [CLS] 标记,在末尾添加 [SEP] 标记,如下所示:
在这里插入图片描述

然后,我们从 [CLS] 标记处的 BERT 表示中获取查询和文档的嵌入。 q 和 d 的语义表示可以表述如下:
在这里插入图片描述

其中 Pool(·) 表示 [CLS] 池化提取隐藏状态 h 上的第一个向量。它们的语义相关性Scoresem是通过qsem和dsem的内积来计算的:Scoresem = qsem·dsem。
DPR 的训练损失是正通道的负对数似然:
在这里插入图片描述

其中 d + 和 d − 表示对应于给定查询 q 的正文档和负文档。为了选择负面文档,我们遵循之前作品中的惯例(Karpukhin et al, 2020; Sachan et al, 2021; Gau et al, 2020),即硬负抽样,选择从 BM25 检索到的排名靠前的文档不包含答案。

3.4 互补目标

我们提出嵌入级和输入级正交性约束,这会减少 |D ∩ S|并分别增加|D − S|。

嵌入级正交性
为了减少|D∩S|,我们将语义和词汇表示空间之间的特征分开。具体来说,我们强制词汇和语义表示之间的正交性(即 qlex ⊥ qsem)。通过方程式训练 BERT 时(7),我们使用余弦相似度施加额外的约束,对特征进行归一化,以约束两个向量(lex 和 sem)的方向。我们定义正交性的损失函数如下:
在这里插入图片描述

其中⟨·,·⟩是内积。如果两个向量完全垂直,则损失等于 0;否则,它具有正值。
这与我们最小化两个向量的共同特征的目标是一致的,从而减少重叠 |D ∩ S|语义 (D) 和词汇 (S) 模型,如图 1© 所示。添加此正交性损失,BERT-ranker 的最终损失函数计算如下:
在这里插入图片描述
虽然我们可以调整上述聚合,但我们根据经验发现 1:1 聚合是有效的。

输入级正交性
增加 |D − S|在输入级别,我们遵循使用稀疏模型忽略的残差特征的约定,例如不匹配术语之间的同义词,例如“password = passwd”。为了这个目标,我们提出了一种扰乱匹配标记子集的方法,以学习不匹配的术语,类似于去噪自动编码器(Hill 等人,2016)。在去噪自动编码器中,输入文本被随机噪声函数破坏,然后训练解码器恢复原始文本,学习方差的鲁棒特征(Vincent 等人,2008)。相反,虽然我们的令牌扰动没有恢复解码器,但我们的区别是破坏精确匹配,重点是软匹配。给定 q-d 对,我们将 d 中的一组完全匹配的标记表示为 XEM = {xi |xi ∈ q 和 xi ∈ d}。通过随机采样,我们将 Xem 中的标记替换为 [MASK] 标记,并将新序列 d ’ 输入到 BERT 中。通过令牌扰动,我们修改式(1)中的 dsem。 (6) 转为 d ′ sem,计算如下:
在这里插入图片描述

其中 Sample(·) 是标记的随机采样。‡ 此扰动仅适用于训练过程,我们不会在推理时使用它。
这种扰动使得解缠结思想不仅能够应用于新模型,而且能够应用于各种现有模型(参见第 4.1 节)。

最终相关性得分
为了汇总两个 IR 模型的分数,我们遵循主要基线的约定(Karpukhin 等人,2020;Gao 等人,2020;Ma 等人,2021),使用线性组合
在这里插入图片描述

其中 λ 是控制不同尺度权重的超参数。

4. 实验

4.2
1)两级正交成功增强了 RoC
2)增强 RoC 能够增强互补性,对于 bm25 来说困难的例子(不依赖词汇的例子),增强RoC之后变现更好
3)混合检索效果也变好

在本节中,我们描述实验设置并制定我们的研究问题来指导我们的实验。

4.1 实验设置

数据集
为了验证我们方法的有效性,我们对以下三个数据集进行查询-段落(或查询文档)匹配,这些数据集被广泛使用且具有统计多样性(表 2):
MS MARCO-Passage§(Nguyen 等人,2016):该基准提供了 880 万个段落,标签是从 Bing 搜索引擎检索到的前 10 个结果中获取的。由于官方测试集的相关标签未公开,因此我们仅评估开发集。我们使用 MRR@10 和 R@100 来评估全排序检索的性能。
NQ(Kwiatkowski 等人,2019):在此数据集中,我们的目标是从总共 25 万个段落中找到回答给定问题的相关段落,并且标签来自注释者识别的维基百科文章中的跨度。遵循 DPR(Karpukhin 等人,2020),我们将包含答案的段落视为评估 R@k 时的相关段落。
• TREC Robust04 (Voorhees et al, 2005):该数据集包含 250 个主题查询和 528K 文档。由于 Robust04 中没有发布正式的训练/测试分割,我们遵循 McDonald 等人 (2018) 中提供的分割设置,使用 5 折交叉验证。
我们尊重原始工作中使用的指标,它解释了不同数据集的不同指标。 Robust04 使用广泛,但尺寸较小,因此我们也遵循研究尺寸较大的 MS MARCO 和 Natural Questions 的惯例。

实现
对于 DPR 编码器,我们使用 BERT 的基本版本(Uncased)(Devlin 等人,2019)。对于训练,我们设置批量大小 10 并使用 Adam(Kingma 和 Ba,2015)优化器,学习率为 0.0002。为了稳定训练,我们使用范数为 1.0 的梯度裁剪(Pascanu et al, 2013),并且在 3 个 epoch 的训练迭代后,我们将每个 epoch 的学习率减半。我们遵循 DPR(Karpukhin 等人,2020)的其他训练细节,例如硬负采样。
作为超参数,我们根据开发集上的 MAP 自动找到 λ 的最佳值,其中我们以 0.1 步长在 [0, 2] 范围内搜索 λ。在 MARCO-Passage、Natural Questions 和 Robust04 上,λ 的最佳配置分别为 1.5、1.3 和 2.0。

评价指标
对于任务评估,我们计算以下指标并报告平均性能:平均倒数排名 (MRR)、平均平均精度 (MAP)、归一化折扣累积增益 (nDCG) 和前 k 个排名的召回率 (R@k)。对于召回率,我们遵循之前的工作 (Karpukhin et al, 2020),该工作被计算为 top-k 检索到的段落包含答案的问题的比例。对于 MAP 和 nDCG,我们使用最新的 TREC 评估脚本**来计算这些指标。采用 Bonferroni 校正的 t 检验的 p 值 < 0.05 结果在表 3 中以粗体显示。

基线
我们将我们的模型与以下最先进的检索基线进行比较。我们使用 SPARTERM(Bai 等人,2020)、COCONDENSER(Gao 和 Callan,2021)和 BM25 作为基线。
SPARTERM 是一种使用 BERT 的基于术语的检索模型,并给出词汇匹配分数。 BM25是一种著名的使用TF和IDF的词法匹配方法。对于 BM25,我们使用 Pyserini†† 开源实现。
对于 coCondenser,我们使用开源实现来重现。
另一方面,我们使用混合空间基线,例如 COCONDENSER+BM25 (Naive sum) 和 CLEAR (Gao et al, 2020)。
两种方法都通过合并稀疏模型和稠密模型的分数来给出相似性分数。请注意,我们的 CLEAR 实现比他们发布的结果表现更好,因为我们使用 coCondenser 更新了其基本变压器。为了公平比较,我们的和 CLEAR 都建立在相同的 coCondenser 实现之上。

4.2 实验结果

研究问题
为了评估我们方法的有效性,我们解决了以下研究问题:
• RQ1:两级正交性是否改善了RoC?
• RQ2:改进的RoC 是否有助于更好的互补性?
• RQ3:改进的互补性是否改善了混合检索?

4.2.1 RQ1:正交性的有效性

我们进行了消融研究,以确认这两个正交约束是否有助于改善 RoC。如表 5 所示,与朴素求和相比,嵌入级正交性将 RoC 提高了 0.1,输入级正交性提高了 0.06。应用这两种方法将 RoC 提高了 0.15,这与 CLEAR 相比是一个显着的改进,而 CLEAR 仅比朴素总和提高了 0.05
在这里插入图片描述

4.2.2 RQ2:RoC 改进互补性

在本节中,我们展示了我们的方法通过使用混合检索的召回以及对抗性评估来提高互补性。
首先,我们的(图 3)显示 RoC 比 CLEAR 高 0.15,因为与 CLEAR(图 1b)相比,RoC 有所改善,并且故障案例减少。换句话说,RoC 是 |D ∪ S| 的更可靠的预测因子,它与性能直接相关。
在这里插入图片描述

其次,我们还可以观察到逆境下的互补性。我们遵循(Wei 和 Zou,2019)的约定,将查询分为两组:BM25-Easy 和 BM25-Hard。具体来说,我们通过对所有查询的 BM25 的 MRR@10 分数进行排序来定义简单集和困难集。前 50% 是 BM25-Easy,其中仅 BM25 就已经具有竞争力,其余的是 BM25-Hard,这对词汇检索器不利。
我们希望混合模型能够在硬集上超越 BM25 排名。带着这样的期望,我们在图 4 上比较了混合模型提供更好排名的比率(相对于 MRR@10)。令人惊讶的是,CLEAR 并没有将 DPR 的比率提高很多(+1.5%),这与图 5 中的结果一致。相比之下,我们将该比率显着提高了+10.2%。
在这里插入图片描述
观察不利场景的另一种方法是构建具有较少匹配项的不利数据集。具体来说,查询和文档之间词汇匹配的术语被同义词替换(如(Wei 和 Zou,2019)中类似的做法)。图 5 比较了 CLEAR 和我们的方法如何推广到这个不利的集合。原始数据集上的两个模型在早期 epoch 中都快速提高了 MRR,而直到 epoch 5 之前,在逆向集上的 MRR 提升并不明显。然而,这种差距仅在我们的模型中减小(图 5b),而在 CLEAR 中保持不变(图 5a),表明 CLEAR 仍在继续专注于词汇匹配,同时我们学习利用语义匹配。
在这里插入图片描述

4.2.3 RQ3:混合检索中互补性的影响

在这个实验中,我们验证了增强互补性对各个性能方面的影响。
我们首先比较混合模型和我们的模型的性能,以表明我们的两级正交性提高了混合检索性能以及两个模型之间的互补性。在表3中,与coCondenser+BM25(Naive sum)相比,我们的方法在MSMARCO上将MRR@10提高了0.78,在NQ和Robust04上将MAP分别提高了1.50和2.21,这表明互补性提高了文档排名。与最先进的模型 CLEAR 相比,我们的方法在 MSMARCO 上实现了 0.64 的 MRR@10 增益,在 NQ 和 Robust04 上分别实现了 1.04 和 0.88 的 MAP 增益。请注意,我们的方法具有统计上显着的性能改进,如表 3 中的上标所示。

嵌入级和输入级方法的消融研究
为了研究两级正交性对混合检索性能的孤立影响,我们在 NQ 和 Robust04 中进行了消融研究,如表 4 所示。为此,我们将每个组件(嵌入级或输入级目标)添加到基线模型中:DPR+BM25(朴素总和)。在这两个数据集中,我们观察到嵌入级和输入级方法可以在基线上实现显着改进,这表明增强的互补性提高了混合检索性能。请注意,嵌入级目标比输入级目标更有效,这与表 5 中的互补性改进结果一致。
我们还可以在表 6 中看到,输入级目标甚至适用于非嵌入模型。
在这里插入图片描述

长度泛化性
基于 BERT 在 NQ 数据集中对长文档准确率较低的众所周知的弱点(Luan 等人,2020),我们验证了改进的互补性对长文档鲁棒性的影响。我们提出的模型优于 CLEAR,并且在除一组之外的所有长度上都获得了最佳分数。
这表明互补性在长度泛化中起着至关重要的作用。结果和详细信息在 A.1 节中描述

5. 结论

我们研究混合检索的问题,其中现有的最先进技术追求部分互补的概念。相比之下,我们提出了 RoC,这是一种能够更全面地描述稀疏模型和密集模型之间互补性概念的指标。然后,我们提出一个简单但有效的两级正交目标来增强 RoC,并验证优化 RoC 可以增强互补性和检索性,从而在三个代表性 IR 基准(MSMARCO-Passage、Natural Questions 和 TREC Robust04)中表现优于最先进的水平,并推广到对抗性设置。

6. 局限性

我们利用 MS-MARCO,这是一种提供大规模相关注释的资源。然而,与大多数检索数据集一样,该数据集可能包含注释偏差。鉴于数据集提供的语料库中存在大量文档,相关性注释分布稀疏,所有其他文档都被认为是不相关的。
因此,一些相关文档可能会被错误地标记为不相关,从而导致漏报。 MSMARCO 中一个值得注意的注释偏差是相关标签与精确匹配术语高度相关(Xiong 等人,2020)。
这种偏差在训练或评估阶段造成了限制。为了适当地解决这种注释偏差,我们可能需要使用人类或神经注释器重新组织标记过程,或者我们可以旨在设计和训练一个能够适应这种偏差的模型。我们将此任务保留给未来的研究工作。

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

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

相关文章

哪里有视频素材网站免费下载?高清烟花视频素材哪里有?

如果你在寻找那些能点亮夜空的绚丽烟花视频素材&#xff0c;或者无水印的高清视频素材&#xff0c;那下面这些资源网站将会是你的宝库。今天&#xff0c;我要分享给你一些最佳的无水印视频素材下载网站&#xff0c;让你的视频制作闪耀起来。 1.蛙学府 这个网站是视频创作者的天…

windows使用docker运行TP6使用swoole内置http服务

1&#xff0c;下载docker-Windows客户端 下载地址&#xff1a;https://www.docker.com/products/docker-desktop docker --version #查看docker版本 docker-compose --version #查看docker-compose版本 2&#xff0c;安装环境 使用一键安装包&#xff1a;https://gitee.com/yes…

如何在Linux CentOS部署宝塔面板并实现固定公网地址访问内网宝塔

文章目录 一、使用官网一键安装命令安装宝塔二、简单配置宝塔&#xff0c;内网穿透三、使用固定公网地址访问宝塔 宝塔面板作为建站运维工具&#xff0c;适合新手&#xff0c;简单好用。当我们在家里/公司搭建了宝塔&#xff0c;没有公网IP&#xff0c;但是想要在外也可以访问内…

Android和IOS应用开发-Flutter 应用中实现记录和使用全局状态的几种方法

文章目录 在Flutter中记录和使用全局状态使用 Provider步骤1步骤2步骤3 使用 BLoC步骤1步骤2步骤3 使用 GetX&#xff1a;步骤1步骤2步骤3 在Flutter中记录和使用全局状态 在 Flutter 应用中&#xff0c;您可以使用以下几种方法来实现记录和使用全局状态&#xff0c;并在整个应…

深度学习pytorch——基本数据类型创建Tensor(持续更新)

声明&#xff1a;本深度学习笔记基于课时18 索引与切片-1_哔哩哔哩_bilibili学习而来 All is about Tensor 定义&#xff1a;Tensors are simply mathematical objects that can be used to describe physical properties, just like scalars and vectors. In fact tensors a…

粤嵌6818开发板通过MobaXterm使用SSH连接开发板

链接&#xff1a;https://pan.baidu.com/s/18ISP4Ub1HtQx6jCvTQTUHw?pwdfjmu 提取码&#xff1a;fjmu 1.把SSH_config.tar.bz 下载到开发板中 2.解压 SSH_config.tar.bz 解压命令&#xff1a;tar -xzvf SSH_config.tar.bz 3.配置SSH 进入SSH/openssh目录&am…

【深度长文】聊一聊 Java AbstractQueuedSynchronizer 以及在 ReentrantLock 中的应用

文章目录 AQS 原理简述内部数据结构公平锁 vs. 非公平锁ReentrantLock 非公平锁ReentrantLock 公平锁 AQS 源码分析加锁过程addWaiteracquireQueuedshouldParkAfterFailedAcquirecancelAcquire 解锁过程unparkSuccessor AbstractQueuedSynchronizer (AQS) 是 Java 并发包中&…

【Qt问题】解决已经下载好的qt怎么添加或卸载其他组件

问题描述&#xff1a; 使用一段时间Qt以后发现需要用到某个组件&#xff0c;比如Qt Webengine这个组件等&#xff0c;而此时我又不可能把Qt卸载了&#xff0c;重新安装一次。 解决办法&#xff1a; 其实Qt提供了安装或卸载其他组件的方式&#xff0c;以下是操作步骤&#xff…

nuxt3项目总结

nuxt3项目总结 仓库 前言 大半年的时间&#xff0c;项目从秋天到春天&#xff0c;从管理后台到APP再到数据大屏&#xff0c;技术栈从vue3到uniApp再到nuxt3&#xff0c;需求不停的改&#xff0c;注释掉代码都快到项目总体的三分之一。 一、准备-搭建项目架子 1.1 创建一个…

windows无法启动HV主机服务 服务(位于本地计算机上) 错误 1068:依赖服务或组无法启动

背景: LZ本地装了VMware Workstation虚拟机,里面装了Oracle, 又在Docker里装了PostgreSQL, 操作系统是Windows10 专业版 如果启动VM,就报这个错Device/Credential Guard 不兼容 参考这个博客,就可以解决 与Device/Credetial Guard不兼容 我用到的是方法二, 但是想用Docker时, …

吴恩达机器学习笔记 二十四 决策树模型 学习过程 什么时候停止分裂 如何选择结点特征

案例&#xff1a;识别小猫&#xff0c;上面这个分类的特征 x 采用分类值&#xff08;几个离散的值&#xff09; 决策树最顶端的结点称根结点(root node)&#xff0c;除了根结点和叶子结点之外的叫决策结点(decision node)&#xff0c;最底层的叫叶子结点(leaf node)&#xff0c…

JVM的双亲委派模型和垃圾回收机制

jvm的作用是解释执行java字节码.java的跨平台就是靠jvm实现的.下面看看一个java程序的执行流程. 1. jvm中的内存区域划分 jvm也是一个进程,进程在运行过程中,要行操作系统申请一些资源.这些内存空间就支撑了后续java程序的执行. jvm从系统申请了一大块内存,这块内存在java程序使…

蓝桥杯2022年第十三届省赛真题-选数异或

solution1&#xff08;55/100 只保留最后一次的位置&#xff0c;其实有点问题&#xff0c;能骗一点分数 #include<iostream> #include<map> using namespace std; const int maxn 1e5 10; int a[maxn]; int main(){int n, m, x, l, r, t, flag;map<int, int…

知识分享:宣传海报中的APP下载二维码如何制作?

近期&#xff0c;在北京地铁西直门站内&#xff0c;出现了一组十分醒目的海报&#xff0c;海报上加大、加粗的趣味文字深深地共情了每一个苦命的打工人。 比如&#xff1a; 查询我的精神状态 老板画的饼有多大&#xff1f; 为什么早上的会那么好睡&#xff1f; 再比如&#x…

云计算与APP开发,如何利用云端服务提升应用性能?

随着移动应用程序&#xff08;APP&#xff09;的普及&#xff0c;如何提升应用性能成为了开发者们关注的重点之一。而云计算技术的发展为APP开发者提供了全新的解决方案。本文将探讨云计算与APP开发的结合&#xff0c;以及我们公司提出的解决方案&#xff0c;帮助开发者利用云端…

人工智能如何撬动新质生产力发展?

全国两会期间&#xff0c;“新质生产力”成为高频词&#xff0c;引发高度关注。新质生产力是由技术革命性突破、生产要素创新性配置、产业深度转型升级催生的当代先进生产力。而人工智能被视为形成新质生产力的重要引擎。 随着人工智能&#xff08;AI&#xff09;技术跨越奇点…

24.2 SpringCloud电商进阶开发

24.2 SpringCloud电商进阶开发 1. 定时任务1.1 使用场景1.2 CRON表达式1.3 代码实战*****************************************************************************************************1. 定时任务 1.1 使用场景

数学建模-多目标规划算法(美赛建模)

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是viperrrrrrr~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff…

拆解Spring boot:Springboot为什么如此丝滑而简单?源码剖析解读自动装配

&#x1f389;&#x1f389;欢迎光临&#xff0c;终于等到你啦&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;持续更新的专栏《Spring 狂野之旅&#xff1a;从入门到入魔》 &a…

关于Zookeeper分布式锁

背景 之前说到分布式锁的实现有三种 1、基于数据库实现的分布式锁 2、Redis分布式锁 3、Zookeeper分布式锁 前者redis分布式锁博客已具体介绍&#xff0c;此博客最终决定补齐关于Zookeeper分布式锁的实现原理。 简述 Zoopkeeper&#xff0c;它是一个为分布式的协调服务&…