【论文共读】【翻译】【GPT】Improving Language Understanding by Generative Pre-Training

GPT 原论文地址

翻译:
Improving Language Understanding by Generative Pre-Training
通过生成式预训练提高语言理解能力

0. 摘要

自然语言理解包括各种不同的任务,例如文本蕴涵、问答、语义相似性评估和文档分类。尽管大量未标记的文本语料库很丰富,但用于学习这些特定任务的标记数据很少,这使得判别性训练的模型难以充分执行。我们证明,通过对各种未标记文本语料库进行语言模型的生成预训练,然后对每个特定任务进行判别性微调,可以实现这些任务的巨大收益。与之前的方法相比,我们在微调过程中利用任务感知的输入转换来实现有效的传输,同时需要对模型架构进行最少的更改。我们在自然语言理解的广泛基准上证明了我们的方法的有效性。我们的通用任务不可知模型优于使用专门针对每个任务设计的架构的判别性训练模型,在所研究的 12 个任务中,有 9 个任务在现有水平的基础上有了显着提高。例如,我们在常识推理(故事完形填空测试)上实现了 8.9% 的绝对改进,在问答(RACE)方面实现了 5.7% 的绝对改进,在文本蕴涵(MultiNLI)上实现了 1.5% 的绝对改进。

1. 引言

从原始文本中有效学习的能力对于减轻自然语言处理 (NLP) 中对监督学习的依赖至关重要。大多数深度学习方法需要大量的手动标记数据,这限制了它们在许多缺乏注释资源的领域的适用性[61]。在这些情况下,可以利用来自未标记数据的语言信息的模型提供了一种有价值的替代方法,可以收集更多注释,而收集更多注释可能既耗时又昂贵。此外,即使在有大量监督的情况下,以无监督的方式学习良好的表示也可以提供显着的性能提升。到目前为止,最令人信服的证据是广泛使用预训练词嵌入[10,39,42]来提高一系列NLP任务的性能[8,11,26,45]。

然而,从未标记的文本中利用不仅仅是单词级别的信息具有挑战性,主要有两个原因。首先,目前尚不清楚哪种类型的优化目标在学习对迁移有用的文本表示时最有效。最近的研究着眼于各种目标,如语言建模[44]、机器翻译[38]和语篇连贯性[22],每种方法在不同的任务上都优于其他方法.1其次,对于将这些学习到的表征转移到目标任务的最有效方法还没有达成共识。现有的技术包括对模型架构进行特定于任务的更改[43,44],使用复杂的学习方案[21]和添加辅助学习目标[50]。这些不确定性使得开发有效的半监督学习方法来进行语言处理变得困难。

在本文中,我们探索了一种半监督方法,该方法使用无监督预训练和监督微调的组合来完成语言理解任务。我们的目标是学习一种通用表示,这种表示可以在几乎没有适应性的情况下转移到广泛的任务中。我们假设可以访问大量未标记的文本语料库和几个带有手动注释训练示例(目标任务)的数据集。我们的设置不要求这些目标任务与未标记的语料库位于同一域中。我们采用两阶段的培训程序。首先,我们在未标记的数据上使用语言建模目标来学习神经网络模型的初始参数。随后,我们使用相应的监督目标将这些参数调整到目标任务中。

对于我们的模型架构,我们使用了Transformer [62],它已被证明在各种任务上表现强劲,如机器翻译[62]、文档生成[34]和句法解析[29]。与递归网络等替代方案相比,这种模型选择为我们提供了更结构化的内存,用于处理文本中的长期依赖关系,从而在各种任务中实现强大的传输性能。在传输过程中,我们利用了源自遍历式方法[52]的特定任务输入适应,该方法将结构化文本输入处理为单个连续的标记序列。正如我们在实验中展示的那样,这些适应使我们能够有效地进行微调,只需对预训练模型的架构进行最小的更改。

我们在四种类型的语言理解任务上评估了我们的方法——自然语言推理、问答、语义相似性和文本分类。我们的通用任务不可知模型优于采用专门针对每个任务设计的架构的判别性训练模型,在所研究的 12 项任务中,有 9 项任务在现有技术水平的基础上有了显着提高。例如,我们在常识推理(故事完形填空测试)[40]上实现了8.9%的绝对改进,在问答(RACE)[30]上实现了5.7%的绝对改进,在文本蕴涵(MultiNLI)[66]上实现了1.5%的绝对改进,在最近推出的GLUE多任务基准上实现了5.5%的绝对改进[64]。我们还分析了预训练模型在四种不同设置下的零样本行为,并证明它为下游任务获得了有用的语言知识

2 相关工作

NLP 的半监督学习 我们的工作大致属于自然语言的半监督学习类别。这种范式引起了人们的极大兴趣,并应用于序列标记[24,33,57]或文本分类[41,70]等任务。最早的方法使用未标记的数据来计算单词级或短语级的统计数据,然后将其用作监督模型中的特征[33]。在过去的几年中,研究人员已经证明了使用词嵌入[11,39,42]的好处,这些词嵌入是在未标记的语料库上训练的,可以提高各种任务的表现[8,11,26,45]。然而,这些方法主要传递单词级别的信息,而我们的目标是捕获更高级别的语义。

最近的方法已经研究了从未标记数据中学习和利用的不仅仅是单词级别的语义。短语级或句子级嵌入可以使用未标记的语料库进行训练,已被用于将文本编码为适合各种目标任务的向量表示[28,32,1,36,22,12,56,31]。

无监督预训练
无监督预训练是半监督学习的一种特例,其目标是找到一个好的初始化点,而不是修改监督学习目标。早期的工作探索了该技术在图像分类[20,49,63]和回归任务[3]中的应用。随后的研究[15]表明,预训练作为一种正则化方案,可以在深度神经网络中实现更好的泛化。在最近的工作中,该方法已被用于帮助训练深度神经网络执行各种任务,如图像分类[69]、语音识别[68]、实体消歧[17]和机器翻译[48]

与我们最接近的工作范围是使用语言建模目标预训练神经网络,然后在监督下根据目标任务对其进行微调。Dai等[13]和Howard和Ruder[21]遵循这种方法来改进文本分类。然而,尽管预训练阶段有助于捕获一些语言信息,但他们对 LSTM 模型的使用将其预测能力限制在短范围内。相比之下,我们选择的转换器网络使我们能够捕获更远距离的语言结构,正如我们的实验所证明的那样。此外,我们还展示了我们的模型在更广泛的任务上的有效性,包括自然语言推理、释义检测和故事完成。其他方法[43,44,38]使用来自的隐藏表示。在目标任务上训练监督模型时,将预训练的语言或机器翻译模型作为辅助特征。这涉及到每个单独的目标任务的大量新参数,而在传输过程中,我们需要对模型架构进行最少的更改。

辅助训练目标 添加辅助无监督训练目标是半监督学习的另一种形式。Collobert 和 Weston [10] 的早期工作使用了各种辅助 NLP 任务,如 POS 标记、分块、命名实体识别和语言建模来改进语义角色标记。最近,Rei [50]在其目标任务目标中添加了辅助语言建模目标,并展示了序列标记任务的性能提升。我们的实验也使用了一个辅助目标,但正如我们所展示的,无监督的预训练已经学习了与目标任务相关的几个语言方面。

3. 框架

我们的培训程序包括两个阶段。第一阶段是在大量文本语料库上学习高容量语言模型。接下来是微调阶段,在这个阶段,我们将模型调整为具有标记数据的判别任务。

3.1 无监督的预训练
给定一个无监督的标记语料库 U = {u1, . . . , un},我们使用标准语言建模目标来最大化以下可能性:
在这里插入图片描述
其中 k 是上下文窗口的大小,条件概率 P 是使用参数为 Θ 的神经网络建模的。这些参数是使用随机梯度下降法训练的[51]。

在我们的实验中,我们使用多层Transformer解码器[34]作为语言模型,它是Transformer[62]的变体。此模型对输入上下文令牌应用多头自注意力操作,然后是位置前馈层,以在目标令牌上产生输出分布:
在这里插入图片描述
其中 U = (u−k, . . . , u−1) 是标记的上下文向量,n 是层数,We 是标记嵌入矩阵,Wp 是位置嵌入矩阵。

3.2 监督微调
在使用方程 1 中的目标训练模型后,我们将参数调整到监督目标任务中。我们假设有一个标记的数据集 C,其中每个实例都由一系列输入标记 x 1 , . . . , xm 和一个标签 y 组成。输入通过我们的预训练模型,获得最终变压器模块的激活 h m l ,然后将其馈入具有参数 Wy 的附加线性输出层以预测 y:
在这里插入图片描述
这为我们提供了以下最大化目标:
在这里插入图片描述
我们还发现,将语言建模作为微调的辅助目标有助于学习:(a)提高监督模型的泛化能力,以及(b)加速收敛。这与先前的工作[50,43]一致,他们也观察到使用这种辅助物镜的性能有所提高。具体来说,我们优化了以下目标(权重 λ):
在这里插入图片描述
总的来说,我们在微调过程中唯一需要的额外参数是 Wy 和分隔符标记的嵌入(在下面的第 3.3 节中描述)。
在这里插入图片描述
3.3 特定于任务的输入转换:
对于某些任务,例如文本分类,我们可以直接微调我们的模型,如上所述。某些其他任务,如问答或文本蕴涵,具有结构化的输入,例如有序的句子对,或文档、问题和答案的三元组。由于我们的预训练模型是在连续的文本序列上训练的,因此我们需要进行一些修改才能将其应用于这些任务。以前的工作提出了在转移表征之上学习任务特定的架构[44]。这种方法重新引入了大量特定于任务的定制,并且不对这些额外的架构组件使用迁移学习。取而代之的是,我们使用遍历式的方法[52],将结构化输入转换为我们的预训练模型可以处理的有序序列。这些输入转换使我们能够避免在任务之间对架构进行大量更改。我们在下面提供了这些输入转换的简要说明,图 1 提供了一个视觉说明。所有转换都包括添加随机初始化的开始和结束标记(his、hei)。

文本蕴涵 对于蕴涵任务,我们将前提 p 和假设 h 令牌序列连接起来,中间有一个分隔符令牌。

相似性 对于相似性任务,被比较的两个句子没有固有的顺序。为了反映这一点,我们修改了输入序列,以包含两种可能的句子顺序(中间有一个分隔符),并独立处理每个序列以产生两个序列表示 h m l,它们在被馈入线性输出层之前被逐个元素添加。

问答和常识推理 对于这些任务,我们得到了一个上下文文档 z、一个问题 q 和一组可能的答案 {ak}。我们将文档上下文和问题与每个可能的答案连接起来,并在两者之间添加一个分隔符标记以获取 [z; q; $; ak]。这些序列中的每一个都使用我们的模型独立处理,然后通过softmax层进行归一化,以产生可能答案的输出分布。

4. 实验

4.1 设置
设置无监督预训练 我们使用 BooksCorpus 数据集[71]来训练语言模型。它包含 7,000 多本独特的未出版书籍,来自各种类型,包括冒险、奇幻和浪漫。至关重要的是,它包含很长一段连续的文本,这使得生成模型能够学习根据长程信息进行调节。另一个数据集,即1B Word Benchmark,由类似的方法ELMo[44] 使用,其大小大致相同但在句子层面上被洗牌 - 破坏远程结构。我们的语言模型在这个语料库上实现了非常低的标记级困惑度,为 18.4。
在这里插入图片描述
** 模型说明** 我们的模型很大程度上遵循了原始 Transformer 的工作[62]。我们训练了一个 12 层仅解码器的转换器,带有 mask 的自注意力头(768 维状态和 12 个注意力头)。对于位置前馈网络,我们使用了 3072 维内部状态。我们使用了Adam优化方案[27],最大学习率为2.5e-4。在前 2000 次更新中,学习率从 0 线性增加,并使用余弦调度退火到 0。我们在 64 个随机抽样的连续序列的 512 个令牌的小批量上训练 100 个 epoch。由于 layernorm [2] 在整个模型中被广泛使用,因此简单的 N(0, 0.02) 权重初始化就足够了。我们使用具有 40,000 次合并 [53] 和残差、嵌入和注意力丢失的字节对编码 (BPE) 词汇表(速率为 0.1)进行正则化。我们还采用了 [37] 中提出的 L2 正则化的修改版本,在所有非偏置或增益权重上 w = 0.01。对于激活函数,我们使用了高斯误差线性单元(GELU)[18]。我们使用了学习的位置嵌入,而不是原始工作中提出的正弦版本。我们使用 ftfy library2 来清理 BooksCorpus 中的原始文本,标准化一些标点符号和空格,并使用 spaCy 分词器

** 微调细节 ** 除非指定,否则我们将重用无监督预训练中的超参数设置。我们将 dropout 添加到分类器中,比率为 0.1。对于大多数任务,我们使用 6.25e-5 的学习率和 32 的批处理大小。我们的模型可以快速微调,对于大多数情况来说,3 个时期的训练就足够了。我们使用线性学习率衰减计划,预热超过训练的 0.2%。λ 设置为 0.5。

4.2 监督微调
我们对各种监督任务进行实验,包括自然语言推理、问答、语义相似性和文本分类。其中一些任务可以作为最近发布的 GLUE 多任务基准测试 [64] 的一部分使用,我们利用了它。图 1 提供了所有任务和数据集的概述。

自然语言推理 自然语言推理 (NLI) 的任务,也称为识别文本蕴涵,涉及阅读一对句子并从蕴涵、矛盾或中性之间的关系来判断它们之间的关系。尽管最近引起了很多人的兴趣[58,35,44],但由于存在各种各样的现象,如词汇蕴涵、共指以及词汇和句法的歧义,这项任务仍然具有挑战性。我们评估了五个具有不同来源的数据集,包括图像标题 (SNLI)、转录语音、流行小说和政府报告 (MNLI)、维基百科文章 (QNLI)、科学考试 (SciTail) 或新闻文章 (RTE)。

表 2 详细介绍了我们的模型和以前最先进的方法的不同 NLI 任务的各种结果。我们的方法在五个数据集中的四个数据集上明显优于基线,与之前的最佳结果相比,MNLI的绝对改善高达1.5%,SciTail的绝对改善率为5%,QNLI的绝对改善率为5.8%,SNLI的绝对改善率为0.6%。这证明了我们的模型能够更好地对多个句子进行推理,并处理语言歧义的各个方面。在RTE上,我们评估的较小数据集之一(2490个示例),我们达到了56%的准确率,低于多任务biLSTM模型报告的61.7%。鉴于我们的方法在更大的NLI数据集上的强大性能,我们的模型也可能从多任务训练中受益,但我们目前还没有对此进行探索。
在这里插入图片描述
问答和常识推理 另一个需要单句和多句推理的任务是问答。我们使用最近发布的RACE数据集[30],该数据集由英语段落和初中和高中考试的相关问题组成。该语料库已被证明包含比其他数据集(如CNN [19]或SQuaD [47])更多的推理类型问题,为我们的模型提供了完美的评估,该模型经过训练可以处理远程上下文。此外,我们还评估了故事完形填空测试[40],该测试涉及从两个选项中选择多句故事的正确结尾。在这些任务上,我们的模型再次以显着的优势优于之前的最佳结果 - 在Story Cloze上高达8.9%,在RACE上总体上为5.7%。这证明了我们的模型能够有效地处理远程环境。

语义相似性 语义相似性(或释义检测)任务涉及预测两个句子在语义上是否等同。挑战在于识别概念的改写、理解否定和处理句法歧义。我们使用三个数据集来完成这项任务——Microsoft释义语料库(MRPC)[14](从新闻来源收集)、Quora问题对(QQP)数据集[9]和语义文本相似性基准(STS-B)[6]。我们在三个语义相似性任务中的两个(表4)上获得了最先进的结果,在STS-B上获得了1分的绝对增益。QQP 的性能增量非常显着,与单任务 BiLSTM + ELMo + Attn 相比,绝对提高了 4.2%。

分类
最后,我们还评估了两种不同的文本分类任务。语言可接受性语料库(CoLA)[65]包含关于句子是否符合语法的专家判断,并检验了训练模型的先天语言偏见。另一方面,斯坦福情绪树库(SST-2)[54]是一个标准的二元分类任务。我们的模型在 CoLA 上获得了 45.4 分,这比之前的最佳结果 35.0 有了特别大的飞跃,展示了我们的模型学习的先天语言偏见。该模型在 SST-2 上的准确度为 91.3%,与最先进的结果相比具有竞争力。我们在 GLUE 基准测试中还获得了 72.8 的总分,明显优于之前的 68.9 分。

在这里插入图片描述
总体而言,在我们评估的 12 个数据集中,有 9 个数据集取得了最先进的新结果,在许多情况下都优于集成。我们的结果还表明,我们的方法适用于不同大小的数据集,从较小的数据集,如STS-B(≈5.7k个训练样本)到最大的一个-SNLI(≈550k个训练样本)。

5. 分析

传输的层数的影响 我们观察了将可变数量的层从无监督预训练转移到有监督的目标任务的影响。图 2(左)展示了我们的方法在 MultiNLI 和 RACE 上的性能与传输的层数的关系。我们观察到的标准结果是,转移嵌入提高了性能,并且每个转换器层为MultiNLI上的完全转移提供了高达9%的进一步优势。这表明预训练模型中的每一层都包含用于求解目标任务的有用功能。

在这里插入图片描述
零样本行为 我们想更好地理解为什么 transformer 的语言模型预训练是有效的。一个假设是,底层生成模型学习执行我们评估的许多任务,以提高其语言建模能力,并且结构性更强。与 LSTM 相比,变压器的注意力记忆有助于传输。我们设计了一系列启发式解决方案,这些解决方案使用底层生成模型来执行任务,而无需进行监督微调。我们在图 2(右)中可视化了这些启发式解决方案在生成预训练过程中的有效性。我们观察到这些启发式方法的性能是稳定的,并且在训练过程中稳步提高,这表明生成式预训练支持各种任务相关功能的学习。我们还观察到 LSTM 在其零样本性能中表现出更高的方差,这表明 Transformer 架构的电感偏置有助于传输

对于 CoLA(语言可接受性),示例被评分为生成模型分配的平均令牌对数概率,并通过阈值法进行预测。对于 SST-2(情感分析),我们将标记非常附加到每个示例中,并将语言模型的输出分布限制为仅 positive 和 negative 这两个词,并猜测它为预测分配更高概率的标记。对于 RACE(问答),我们选择生成模型在根据文档和问题进行条件处理时分配的最高平均令牌对数概率的答案。对于DPRD [46](winograd模式),我们用两个可能的指称替换定代词,并预测生成模型在替换后为序列的其余部分分配更高的平均标记对数概率的分辨率。

消融研究 我们进行了三种不同的消融研究(表5)。首先,我们检查了在微调过程中没有辅助LM物镜的方法的性能。我们观察到辅助目标有助于 NLI 任务和 QQP。总体而言,这一趋势表明,较大的数据集受益于辅助目标,但较小的数据集则不会。其次,我们通过将其与使用相同框架的单层2048单元LSTM进行比较来分析Transformer的影响。我们观察到,当使用 LSTM 而不是 Transformer 时,平均分数下降了 5.6。LSTM 仅在一个数据集 MRPC 上优于 Transformer。最后,我们还比较了我们的 transformer 架构,该架构直接在监督目标任务上训练,无需预训练。我们观察到,缺乏预训练会损害所有任务的表现,与我们的完整模型相比,导致 14.8% 的下降。

6. 结论

我们引入了一个框架,通过生成式预训练和判别式微调,使用单一任务无关的模型实现强大的自然语言理解。通过对具有长段连续文本的多样化语料库进行预训练,我们的模型获得了重要的世界知识和处理长程依赖性的能力,然后成功地将其转移到解决判别性任务中,如问答、语义相似性评估、蕴涵确定和文本分类,提高了我们研究的 12 个数据集中的 9 个的最新技术水平。长期以来,使用无监督(预)训练来提高判别性任务的表现一直是机器学习研究的一个重要目标。我们的研究表明,实现显著的性能提升确实是可能的,并提供了关于哪些模型(转换器)和数据集(具有长程依赖性的文本)最适合这种方法的提示。我们希望这将有助于对自然语言理解和其他领域的无监督学习进行新的研究,进一步提高我们对无监督学习如何以及何时工作的理解。

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

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

相关文章

基于 uPlot.js 的分段彩色条形图

本文由ScriptEcho平台提供技术支持 项目地址:传送门 基于 uPlot.js 的分段彩色条形图 应用场景 分段彩色条形图广泛应用于数据可视化领域,用于展示数据的分布和趋势。它可以通过不同的颜色来表示数据的不同范围,帮助用户快速识别和理解数…

苹果手机微信拉黑了怎么恢复?简单3招,找回好友!

我们平时在使用微信和朋友交往的过程中,难免会产生一些摩擦,有时候我们可能因为一时冲动或误会而误将好友拉入黑名单。但当冷静下来,想要找回那份友谊时,该怎么办呢?别急,这里有3招简单又实用的方法&#x…

React间的组件通信

一、父传子&#xff08;props&#xff09; 步骤 父组件传递数据&#xff0c;子组件标签身上绑定属性子组件接收数据&#xff0c;props的参数 // 子组件 function Son(props) {return (<div>this is Son, {props.name}</div>) }// 父组件 function App() {const n…

WebGIS的地图渲染|SVG|Canvas|Canvas

说到地图&#xff0c;平时我们使用过百度地图、高德地图、腾讯地图等&#xff0c;如果涉及地图开发需求&#xff0c;也有很多选择&#xff0c;如前面提到的几个地图都会提供一套JS API&#xff0c;此外也有一些开源地图框架可以使用&#xff0c;如OpenLayers、Leaflet、Mapbox、…

EasyExcel 初使用—— Java 实现多种写入 Excel 功能

前言 大家好&#xff0c;我是雪荷。之前有一篇博客&#xff08;EasyExcel 初使用—— Java 实现读取 Excel 功能_java easyexcel.read-CSDN博客&#xff09;介绍了 Java 如何读取 Excel 表格&#xff0c;那么此篇博客就和大家介绍下 Java 如何利用 EasyExcel 写入 Excel。 Ea…

使用阿里云云主机通过nginx搭建文件服务器

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、准备基础环境二、安装配置nginx三、阿里云安全组配置安全组配置 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4ee96f38312e4771938e40f463987…

React Router-v6.25.1

以下例子是根据vitereactts构建的&#xff0c;使用路由前先安装好这些环境&#xff01;&#xff01;&#xff01;&#xff01; 1、路由的简单使用 首先要创建一个浏览器路由器并配置我们的第一个路由。这将为我们的 Web 应用启用客户端路由。 该main.jsx文件是入口点。打开它…

数字看板:跨行业需求下的创新与升级

在当今这个数据驱动的时代&#xff0c;数字看板作为信息展示与决策支持的重要工具&#xff0c;正逐步渗透到各行各业之中。从智慧城市到智能制造&#xff0c;从金融分析到医疗健康&#xff0c;数字看板以其直观、动态、高效的特点&#xff0c;成为了连接数据与决策者的桥梁。本…

Linux系列--shell编程一

一、Linux系统结构 一、内核层 内核是Linux系统的核心部分&#xff0c;它负责管理系统各种硬件设备、文件系统、内存管理和进程管理等核心任务。Linux内核设计了良好的模块化结构&#xff0c;可以动态地加载和卸载内核模块&#xff0c;这使得内核可以兼容各种不同的硬件设备和…

基于联咏 NT98692芯片赋能边缘计算IP摄像机与XVR监控系统解决方案

联咏 NT98692 是一款新世代整合度极高的 SoC&#xff0c;具有高影像品质、低位元率、低功耗&#xff0c;针对 8Kp30 边缘运算 IP 摄影机与后端监控系统 XVR 应用。此 SoC 整合了 ARM Quad Cortex A73 CPU 核心、新一代 ISP 和 AI ISP、H.265/H.264 视讯压缩编解码器、DSP、高效…

C++ primer plus 第16章string 类和标准模板库, 函数符概念

C primer plus 第16章string 类和标准模板库, 函数符概念 C primer plus 第16章string 类和标准模板库, 函数符概念 文章目录 C primer plus 第16章string 类和标准模板库, 函数符概念16.5.1 函数符概念程序清单16.15 functor.cpp 16.5.1 函数符概念 正如 STL定义了容器和迭代…

数据结构和算法入门

1.了解数据结构和算法 1.1 二分查找 二分查找&#xff08;Binary Search&#xff09;是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半&#xff0c;然后比较目标值与中间元素的大小关系&#xff0c;从而确定应该在左半部分还是右半部分继续查找。这个…

基于 HTML+ECharts 实现智慧安防数据可视化大屏(含源码)

构建智慧安防数据可视化大屏&#xff1a;基于 HTML 和 ECharts 的实现 随着科技的不断进步&#xff0c;智慧安防系统已经成为保障公共安全的重要工具。通过数据可视化&#xff0c;安防管理人员可以实时监控关键区域的安全状况、人员流动以及设备状态&#xff0c;从而提高应急响…

XSS攻击与CSRF攻击

XSS攻击 XSS&#xff08;Cross Site Scripting&#xff0c;跨站脚本攻击&#xff09;&#xff0c;是指攻击者利用站点的漏洞&#xff0c;在表单提交时&#xff0c;在表单内容中加入一些恶意脚本&#xff0c;当其他正常用户浏览页面&#xff0c;而页面中刚好出现攻击者的恶意脚…

ffmpeg更改视频的帧率

note 视频帧率调整 帧率(fps-frame per second) 例如&#xff1a;原来帧率为30&#xff0c;调整后为1 现象&#xff1a;原来是每秒有30张图像&#xff0c;调整后每秒1张图像&#xff0c;看着图像很慢 实现&#xff1a;在每秒的时间区间里&#xff0c;取一张图像…

【数据结构】手把手教你单链表(c语言)(附源码)

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;数据结构 目录 前言 1.单链表的概念与结构 2.单链表的结构定义 3.单链表的实现 3.1 单链表的方法声明 3.2 单链表方法实现 3.2.1 打印链表 3.2.2 创建新…

四、GD32 MCU 常见外设介绍(8)SPI 模块介绍

串行外设接口&#xff08;Serial Peripheral Interface&#xff0c;缩写为 SPI&#xff09; 提供了基于SPI 协议的数据发送和接收功能&#xff0c; 可以工作于主机或从机模式。 SPI 接口支持具有硬件 CRC 计算和校验的全双工和单工模式。 8.1.SPI 基础知识 SPI 物理层 SPI接…

基于dcm4chee搭建的PACS系统讲解(三)服务端使用Rest API获取study等数据

文章目录 DICOMWeb Support模块主要数据结构ER查询信息基本信息metadata信息统计信息 实践查询API及参数解析API返回的json数组定义VRObjectNodeObjectMapper解析显示指定tag并解析 后记 前期预研的PACS系统&#xff0c;近期要在项目中上线了。因为PACS系统采用无权限认证&…

qt--电子相册

一、项目要求 设计一个电子相册&#xff0c;点击上一张&#xff0c;切换到上一张图片&#xff0c;点击下一张&#xff0c;切换到下一张图片。 要求&#xff1a;图片的展示可以循环&#xff08;QList<QString>&#xff09; 要求&#xff1a;界面美观 二、项目代码 本质是通…

概率论--矩估计

目录 简介 矩估计法的基本步骤 延伸 矩估计法在大样本情况下的准确性和有效性如何评估&#xff1f; 在实际应用中&#xff0c;矩估计法的局限性有哪些具体例子&#xff1f; 如何处理矩估计法在某些情况下可能出现的不合理解或无法唯一确定参数的问题&#xff1f; …