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

Transformers 2023年度回顾 :从BERT到GPT4

人工智能已成为近年来最受关注的话题之一,由于神经网络的发展,曾经被认为纯粹是科幻小说中的服务现在正在成为现实。从对话代理到媒体内容生成,人工智能正在改变我们与技术互动的方式。特别是机器学习 (ML) 模型在自然语言处理 (NLP) 领域取得了重大进展。一个关键的突破是引入了“自注意力”和用于序列处理的Transformers架构,这使得之前主导该领域的几个关键问题得以解决。

在本文中,我们将研究革命性的Transformers架构以及它如何改变NLP,我们还将全面回顾从BERT到Alpaca的Transformers模型,重点介绍每种模型的主要特征及其潜在应用。

类bert的文本模型

第一部分是基于Transformer编码器的模型,用于向量化、分类、序列标记、QA(问答)、NER(命名实体识别)等。

1、BERT Google / 2018

Transformer 编码器,wordpiece tokenization(30K 词汇量)。输入嵌入由三个向量组成:标记向量、可训练位置向量和片段向量(第一个文本或第二个文本)。模型输入是 CLS 标记嵌入、第一个文本的嵌入和第二个文本的嵌入。

BERT 有两个训练任务:Masked Language Modeling (MLM) 和 Next Sentence Prediction (NSP)。在 MLM 中,15% 的令牌被屏蔽,80% 被 MASK 令牌替换,10% 被随机令牌替换,10% 保持不变。模型会预测正确的 令牌,而损失仅在这 15% 的屏蔽令牌上计算。在 NSP 中,模型预测第二个文本是否跟在第一个文本之后。预测是在 CLS 令牌的输出向量上进行的。

为了加快训练速度,首先90%的训练在序列长度为 128 个标记上进行,然后剩下的10% 的时间在 512 个标记上训练模型以获得更有效的位置嵌入。

2、RoBERTa Facebook / 2019

BERT的改进版本,它只在MLM上训练(因为NSP被认为不太有用),训练序列更长(512个令牌)。使用动态屏蔽(当再次处理相同的数据时,不同的令牌被屏蔽),训练超参数是精心选择的。

3、XLM Facebook / 2019

训练多语言模型的方法之一是使用不同的基本模型(目前最流行的模型是基于RoBERTa的XLM-R)。在最初的XLM中,所有语言都有一个共享的BPE词汇表。

XLM 有两个训练任务:MLM和翻译。翻译本质上与一对文本上的 MLM 相同,但文本是彼此的平行翻译,具有随机掩码和段嵌入编码语言。

4、Transformer-XL Carnegie Mellon University / 2019

该模型设计用于处理长序列,主要有两个思想:片段的循环处理和相对位置编码。

长文本被分成几个片段,每次处理一个片段。前一段的输出被缓存,在计算当前段中的自我关注时,键和值是基于当前段和前一段的输出计算的(只是简单地连接在一起)。梯度也只在当前段内计算。

这种方法不适用于绝对位置。所以模型中重新参数化了注意力权重公式。绝对的位置编码向量被一个固定的矩阵取代,该矩阵基于标记位置之间距离的正弦值和对所有位置共有的可训练向量。

5、ERNIE 清华大学,华为 / 2019

将知识图谱中有关命名实体的信息嵌入到 BERT 中。输入由一组文本标记和一组实体标记组成(每个标记代表整个实体)。文本标记由 BERT 编码。在 BERT 之上,有一组 K 编码器块(约占网络参数的 3%)。在这些块中:

  • 文本标记的更新向量和实体标记的原始向量首先独立地计算自注意力;
  • 实体向量与它们在文本中出现的第一个标记相匹配;
  • 使用GeLU 激活,并且用于获得文本标记的新隐藏表示;
  • 文本和实体标记的新向量从隐藏表示中获得,并作为输入传递给下一个编码器块。

在预训练期间,计算三种损失:MLM、NSP 和来自令牌的实体预测(如自编码器),自编码器使用下面规则:

  • 在 5% 的情况下,实体被替换为错误的实体,但匹配被保留,模型必须预测正确的实体;
  • 在 15% 的情况下,匹配被移除,模型必须仅基于文本来预测实体;
  • 在其他情况下,是正常的。

预训练模型可以像常规 BERT 模型一样进行微调(有 CLS 令牌)。也可以使用额外的程序进行微调以确定实体及其类型之间的关系。

6、XLNet Carnegie Mellon University / 2019

因为BERT训练过程存在问题:

  • 在训练期间,损失计算仅计算掩码标记。
  • 只有个别标记被屏蔽,一个屏蔽标记的预测不会影响其他标记的预测。
  • 模型在训练期间主动看到的实际应用程序中没有 MASK 令牌。

XLNet 基于 Transformer-XL,除了替换语言建模 (PLM) 任务外,它学习在短的上下文中预测标记,而不是直接使用 MASK。这确保了梯度会计算所有标记并消除了对特殊掩码标记的需要。

上下文中的标记被打乱(比如:可以根据第 i-2个和第i+1个标记预测第 i 个标记),但它们的位置仍然是已知的。这无法通过当前的位置编码(包括 Transformer-XL)实现。当尝试在给定上下文的一部分的情况下预测令牌的概率时,模型不应该知道本身的令牌,但应该知道令牌在上下文中的位置。为了解决这个问题,他们将self-attention 分为两个流:

  • 在每个标记位置,有两个向量而不是一个:内容向量和查询向量。
  • 内容向量包含有关令牌的完整信息,而查询向量仅包含位置信息。
  • token 的两个向量都是基于上下文向量计算的,但是 self-attention 中的查询向量是使用过去的内容向量计算的,内容向量是使用过去的查询向量计算的。
  • query vector 不接收关于相应 token 的内容的信息,但知道上下文的所有信息,而 content vector 包含完整的信息。

在微调期间,如果忽略查询向量,模型将像常规的 Transformer-XL 一样工作。

在实践中该模型的要求上下文必须足够长,以便模型能够正确学习。它在与 RoBERTa 相同数量的数据上学习,结果相似,但由于实现的复杂性,该模型并没有像 RoBERTa 那样流行。

7、ALBERT Google / 2019

在不牺牲质量的情况下简化BERT:

  • 在不同的编码器块中使用共同的参数,并且已经证明可以共享自注意力的权重,但是分离全连接层的权重会导致质量下降。
  • 与BERT相比,使用了更小的输入嵌入和更大的隐藏层向量。这可以通过在网络输入处使用一个额外的投影矩阵来实现,这样也可以将嵌入的大小与隐藏表示的大小解耦。
  • 模型的参数减少了18倍,运行速度提高了1.7倍。

模型在MLM和句子顺序预测(SOP)上进行训练。

8、DistilBERT Google / 2019

另一种优化BERT的方法是蒸馏:

  • 编码器块的数量减半
  • 三个损失成分:MLM、与教师模型输出的交叉熵,以及相应层输出之间的余弦距离。
  • 模型比教师模型小40%,速度快60%,并且在各种任务上保持了97%的质量。

9、LaBSE Google / 2020

基于BERT的多语言矢量化模型。它在MLM和TLM上进行训练(20%的标记被屏蔽),然后对其进行微调。它支持100多种语言,包含500K个标记的词汇表。

10、ELECTRA Google, Stanford University / 2020

使用生成对抗方法加速BERT训练:

  • 训练了两个类bert模型:一个小型生成器和一个主鉴别器
  • 生成器在MLM上进行训练,然后填充掩码令牌
  • 鉴别器被训练来预测由生成器生成的文本的原创性(替换检测任务)
  • 训练完成后,去掉生成器,用鉴别器进行微调

训练数据的数量与RoBERTa或XLNet相同,并且模型比BERT、RoBERTa和ALBERT更快地学习到相似的质量水平。训练时间越长,它的表现就越好。

11、DeBERTa Microsoft / 2020

另一种将标记向量的内容和位置分离为两个单独的向量的模型:

  • 位置向量在所有层之间共享,并且是相对的,即标记之间的每个可能距离都有一个。
  • 为它们添加了两个新的权重矩阵K_pos和Q_pos。
  • 对注意力权重计算进行修改,简化为三个乘积的和:Q_cont * K_cont + Q_cont * K_pos + K_cont * Q_pos
  • 与ALBERT中一样,使用投影矩阵将嵌入大小与隐藏标记表示向量的大小解耦。

类GPT 和T5模型

基于完整Transformers的模型。它的应用范围非常广泛:除了上一节的任务外,它还包括会话代理、机器翻译、逻辑和数学推理、代码分析和生成,以及基本上文本生成。最大和“最智能”的模型通常基于解码器架构。此类模型通常在 few-shot 和 zero-shot 模式下无需微调即可表现良好。

1、GPT-2 OpenAI / 2018

解码器在因果LM的任务上进行训练(根据左侧上下文预测下一个令牌)。从体系结构的角度来看,有一些小的变化:从每个解码器块中移除交叉注意层,并使用了LayerNorm

使用的标记器是字节级BPE (50K词汇表),没有使用类似的子字符串例如(“dog”、“dog!”、“dog.”)。最大序列长度为 1024。层输出缓存所有先前生成的标记。

2、T5 Google / 2019

在MLM上进行完整的预训练(15%的令牌被屏蔽),跨度由代码掩码(<X>, <Y>,…)屏蔽。输出预测序列<X>span<Y>span…

LayerNorm在自注意力层和全连接层输入之前应用。使用相对位置编码:

位置由可学习的嵌入编码,其中每个“嵌入”只是在计算注意力权重时添加相应logit的标量

矩阵B是跨层共享的,但对于不同的自注意力注头是不同的。

每一层考虑令牌之间的128个距离,其余的归零,这样可以对比训练期间看到的序列更长的序列进行推理。

标记化使用sentencepece (32K词汇表)完成,在预训练期间最大序列长度为512。

3、BART Facebook / 2019

另一个完整的transformers,但是用GeLU取代了ReLU。训练它从噪声文本(AE去噪)中预测原始文本,噪声类型如下:

  • 令牌屏蔽
  • 删除令牌
  • 令牌填充
  • 句子中令牌顺序颠倒
  • 使随机令牌成为序列的开始

使用字节级BPE(词汇表大小为50K)

4、CTRL Salesforce / 2019

使用前缀代码令牌(例如,<Horror> input text…)控制生成的解码器。在训练期间将代码分配给适当的文本,然后在推理期间使用代码生成相应样式的文本。该模型是在因果LM上训练的,并且没有使用额外的损失。使用的标记化是BPE,词汇表大小为250K。

4、GPT-3 OpenAI / 2020

这是一个具有Sparse Transformer架构的GPT-2模型,并且增加了2048个令牌的序列长度。还记的那句话吗:别问,问就是GPT3

5、mT5 Google / 2020

基于T5模型,具有类似的训练,但使用多语言数据。ReLU激活被替换为GeGLU,词汇表扩展到250K个标记。

6、GLAM Google / 2021

这个模型在概念上类似于Switch Transformer,但更侧重于在少样本的模式下工作,而不是微调。不同规模的模型使用32到256个专家层,K=2。使用来自Transformer-XL的相对位置编码。在处理令牌时,只有不到10%的网络参数被激活。

7、 LaMDA Google / 2021

类似gpt的模型。该模型是一个会话模型,在因果LM上进行了预训练,并在生成和判别任务上进行了微调。该模型还可以对外部系统(搜索、翻译)的调用。

8、GPT-NeoX-20B EleutherAI / 2022

这个模型类似于GPT-J,也使用旋转位置编码。模型权重使用float16表示。最大序列长度为2048。

9、BLOOM BigScience / 2022

这是46种语言和13种编程语言的最大开源模型。为了训练模型,使用一个名为ROOTS的大型聚合数据集,其中包括大约500个开放数据集。

10、PaLM Google / 2022

这是一个大型多语言解码器模型,使用Adafactor进行训练,在预训练时禁用dropout,在微调时使用0.1。

11、LLaMA Meta / 2023

用于科学研究的开源大型gpt类LM,已用于训练多个指令模型。该模型使用了pre-LayerNorm、SwiGLU激活和RoPE位置嵌入。因为开源所以这是弯道超车的主要模型之一。

文本的指导模型

这些模型抓哟用于校正模型输出(例如 RLHF)以提高对话和任务解决期间的响应质量。

1、InstructGPT OpenAI / 2022

这项工作调整GPT-3以有效地遵循指示。该模型在一个由提示和答案组成的数据集上进行微调,这些提示和答案是人类根据一套标准认为好的。基于InstructGPT,OpenAI 创建了一个被我们现在熟知的模型ChatGPT。

2、Flan-T5 Google / 2022

适用于T5的指导模型。在某些任务中,Flan-T5 11B在没有这种微调的情况下优于PaLM 62B。这些模型已经作为开源发布。

3、Sparrow DeepMind / 2022

基本模型是通过在选定的高质量对话上对Chinchilla进行微调获得的,前80%的层被冻结。然后该模型被进一步训练,使用一个大提示来引导它进行对话。有几个奖励模型也在Chinchilla的基础上进行训练。该模型可以访问搜索引擎并检索最多500个字符的片段,这些片段可以成为响应。

在推理过程中,奖励模型用于对候选人进行排序。候选项要么由模型生成,要么从搜索中获得,然后最好的一个成为响应。

4、Alpaca Stanford University / 2023

上面LLaMA 的指导模型。主要重点是使用GPT-3构建数据集的过程:

  • 目标是获得一组Task-Input-Output三元组,其中Input可以为空。
  • 人类会生成175个带有答案的任务提示,这些提示被输入到GPT-3中,GPT-3会生成新的任务。
  • 生成过程是迭代的,在每个步骤中,都提供了一些来自人类的任务示例和一些来自先前生成的任务示例。
  • GPT-3将生成的任务分为分类任务或非分类任务,并根据此生成不同的输入和输出。
  • 三元组根据质量和与数据库中现有三元组的不相似度进行过滤。

总共生成了52K个唯一的三元组,并对LLaMA 7B进行了微调。

5、Koala Berkeley University / 2023

这是在指令数据上对LLaMA进行微调,但与上面的Alpaca不同的是,它不仅在GPT-3等大型模型生成的数据上进行微调。还数据集的组成为:

  • 30k个关于数学、诗歌和对话的说明和回答样本;
  • 52K个Alpaca 数据集的样本;
  • 160K对用户对有用性和危害偏好的模型响应;
  • 20K对带有用户问题和评分的模型回答;
  • 93K个总结,用户对其质量评分;

与GPT-3相比,没有质量的增加。但是在盲测中,用户更喜欢Koala 的回答,而不是Alpaca 的回答。

从文本生成图像的模型

基于文本描述的图像生成器。扩散模型与transformers 相结合在这一领域占据主导地位,不仅可以生成图像,还可以进行内容操作和分辨率增强。

1、DALL-E OpenAI / 2021

这项工作分两个阶段进行:对图像的标记进行训练,然后学习文本和图像的联合生成模型。

在第一阶段,训练dVAE,其中将图像从256x256x3空间转换为32x32xdim并返回,其中dim是隐藏表示向量的维度。总共有8192个这样的标记向量,这些标记向量将在模型中进一步使用。

使用的主要模型是稀疏transformer 解码器。文本令牌和图像令牌作为输入,模型学习联合分布(Causal LM),之后可以基于文本生成图像令牌。dVAE基于这些相同的令牌生成一个映像。文本标记的损失权重是1/8,图像标记的权重损失是7/8。

对于文本标记,有常规嵌入和位置嵌入,对于图像标记,有常规的、按列定位的和按行定位的嵌入。文本标记序列的最大长度为256,标记化为BPE (16K词汇表)。

2、GLIDE OpenAI / 2021

一种在像素级操作并由文本控制的扩散模型(DM)。它基于U-Net架构,具有卷积、注意和残差连接。使用不同的方法来控制生成。使用CLIP获得的图像向量和文本向量的标量积

3、Latent Diffusion [Stable Diffusion] CompVis [Stability AI] / 2021 [2022]

在像素空间中工作的扩散模型,主要包含2个模型:

  • 一种用于从潜在空间降维和生成的VAE自编码器
  • 内部表征的DM

自编码器以类似gan的方式进行训练,在其结果上使用鉴别器,并将额外的正则化表示与标准正态分布的接近程度。

结果在潜在空间中进入DM解码:如果条件是一个向量,则在步骤的输入处与潜在向量连接,如果是一个向量序列,则用于不同U-Net层的交叉注意。对于文本提示使用CLIP向量。

这个通用的模型可以被训练用于不同的任务:文本到图像,着色,绘画,超分辨率。

4、Imagen Google / 2022

Imagen背后的主要思想是增加文本编码器的大小比增加DM的大小可以给生成模型带来更多的好处。所以CLIP被替换为T5-XXL。

从图像生成文本的模型

本节中的模型通常被称为多模态模型,因为它们在生成文本的同时能够分析不同性质的数据。生成的文本可以是自然语言,也可以是一组命令,例如机器人的命令。

1、CoCa Google / 2022

一个单独的图像编码器(ViT或CNN) +一个共享解码器,其中前半部分处理文本,后半部分与图像编码器的输出共同处理文本。

288x288的图像被切成18x18的块,编码器将其转换为向量+基于所有这些向量的共享注意力池向量。

解码器的前半部分的输出是文本向量和序列末尾的CLS标记向量,使用sentencepece (64K词汇表)进行标记化。文本和图像矢量通过交叉注意在解码器的后半部分合并。

两个损失的权重分别:

  • 图像的注意力池向量与图像描述对的文本的CLS标记向量之间的相似性。
  • 整个解码器输出的自回归损失(以图像为条件)。

在微调过程中,图像编码器可以被冻结,只有注意力池可以被微调。

2、PaLM-E Google / 2023

图像由ViT编码,输出向量以及文本令牌和命令被输入PaLM, PaLM生成输出文本。

PaLM-E用于所有任务,包括 VQA、对象检测和机器人操作。

3、GPT-4 OpenAI / 2023

这是一个具有少量已知细节的封闭模型。据推测,它有一个具有稀疏注意力和多模态输入的解码器。它使用自回归训练和微调RLHF,序列长度从8K到32K。

它已经在人类考试中进行了零样本和少样本的测试,并达到了类似人类的水平。它可以立即和逐步解决基于图像的问题(包括数学问题),理解和解释图像,并可以分析和生成代码。还适用于不同的语言,包括小语种。

总结

当前各种大型模型蜂拥而至,模型的基数一直在增长,但是简单的层的增加和数据集的增长被各种更好的技术替代,这些技术允许质量改进(使用外部数据和工具,改进网络结构和新的微调技术)。但是越来越多的工作表明训练数据的质量比数量更重要:正确选择和形成数据集可以减少训练时间并提高结果质量。

OpenAI现在正在走向闭源,他们已经尝试过不释放GPT-2的权重但没有成功。但是GPT4是黑盒,近几个月来改进和优化开源模型的微调成本和推理速度的趋势在很大程度上降低了大型私有模型作为产品的价值,开源模型在质量上也正迅速赶上巨头,这又可以弯道超车了。

最后开源模型的总结如下:

  • 在编码器模型块中,XLM、RoBERTa 和 LaBSE 模型被认为是可靠的多语言解决方案;
  • 在开放的生成模型中,最有趣的是 LLaMA 和来自 EleutherAI 的模型(都有它们所有的微调版本)、Dolly-2、BLOOM(同样有指令微调选项);
  • 代码方面,SantaCoder的模型还不错,但是总体来说质量也明显落后于ChatGPT/GPT-4;
  • Transformer-XL 和 Sparse Transformer 实现了其他模型中使用的技术,可以仔细研究。

相关文章:

Transformers 2023年度回顾 :从BERT到GPT4

人工智能已成为近年来最受关注的话题之一&#xff0c;由于神经网络的发展&#xff0c;曾经被认为纯粹是科幻小说中的服务现在正在成为现实。从对话代理到媒体内容生成&#xff0c;人工智能正在改变我们与技术互动的方式。特别是机器学习 (ML) 模型在自然语言处理 (NLP) 领域取得…...

判断两个对象某些字段的值是否相同

1、借助mybatis plus的方法 import com.baomidou.mybatisplus.core.toolkit.LambdaUtils; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda; import lombok.SneakyThrows; import o…...

TYPE-C接口取电芯片介绍和应用场景

随着科技的发展&#xff0c;USB PDTYPE-C已经成为越来越多设备的充电接口。而在这一领域中&#xff0c;LDR6328Q PD取电芯片作为设备端协议IC芯片&#xff0c;扮演着至关重要的角色。本文将详细介绍LDR6328Q PD取电芯片的工作原理、应用场景以及选型要点。 一、工作原理 LDR63…...

基于TI TPSXX系列 Buck电路应用计算-外围器件详细计算过程

TPS54202 Buck电路应用计算 1、电气特性2、内部框图3、典型应用电路4、设计需求5、计算EN引脚电阻6、FB引脚电阻估算7、查看反馈电压电压基准8、输入电容计算10、FB引脚反馈电阻计算11、功率电感计算12、输出电容计算13、前馈电容计算15、Layout布局TPS54202-中文版 1、电气特…...

NOIP2012提高组day1-T3:开车旅行

题目链接 [NOIP2012 提高组] 开车旅行 题目描述 小 A \text{A} A 和小 B \text{B} B 决定利用假期外出旅行&#xff0c;他们将想去的城市从 1 1 1 到 n n n 编号&#xff0c;且编号较小的城市在编号较大的城市的西边&#xff0c;已知各个城市的海拔高度互不相同&#xf…...

Golang Web框架性能对比

Golang Web框架性能对比 github star排名依次: Gin Beego Iris Echo Revel Buffalo 性能上gin、iris、echo网上是给的数据都是五星&#xff0c;beego三星&#xff0c;revel两星 beego是国产&#xff0c;有中文文档,文档齐全 根据star数&#xff0c;性能&#xff0c;易用程度…...

【OCR】 - Tesseract OCR在mac系统中安装

Tesseract OCR 在Mac环境下安装Tesseract OCR&#xff08;Optical Character Recognition&#xff09;通常可以通过Homebrew包管理器进行。以下是安装步骤&#xff1a; 安装Homebrew 如果你还没有安装Homebrew&#xff0c;请访问 https://brew.sh/ 并按照页面上的说明安装。…...

了解不同方式导入导出的速度之快

目录 一、用工具导出导入 Navicat&#xff08;速度慢&#xff09; 1.1、导入&#xff1a; 共耗时&#xff1a; 1.2、导出表 共耗时&#xff1a; 二、用命令语句导出导入 2.1、mysqldump速度快 导出表数据和表结构 共耗时&#xff1a; 只导出表结构 导入 共耗时&…...

2024年第九届计算机与通信系统国际会议(ICCCS2024) ,邀您相约西安!

会议官网: ICCCS2024 | Xian China 时间: 2024年4月19-22日 地点: 中国西安 会议简介&#xff1a; 近年来&#xff0c;信息通信在不断发展&#xff0c;为计算机网络的进步与发展提供了先进可靠的技术支持。随着计算机网络与通信技术的深入发展&#xff0c;计算机通信技术、数…...

获取直播间的最新评论 - python 取两个list的差集

python 取两个list的差集 作用&#xff1a;比如我要获取评论区列表&#xff0c;先获取了一遍&#xff0c;这个时候有人评论了几条&#xff0c;我再获取一遍后&#xff0c;找出多的那几条 使用set数据类型来取两个列表的差集。差集表示仅包含在第一个列表中而不在第二个列表中…...

2023年度总结:但行前路,不负韶华

​ &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;Vir2021GKBS &#x…...

智数融合|低代码入局,推动工业数字化转型走"深"向"实"

当下&#xff0c;“数字化、智能化”已经不再是新鲜词汇。事实上&#xff0c;早在几年前&#xff0c;就有企业开始大力推动数字化转型&#xff0c;并持续进行了一段时间。一些业内人士甚至认为&#xff0c;“如今的企业数字化已经走过了成熟期&#xff0c;进入了深水区。” 但事…...

初学者的基本 Python 面试问题和答案

文章目录 专栏导读1、什么是Python&#xff1f;列出 Python 在技术领域的一些流行应用。2、在目前场景下使用Python语言作为工具有什么好处&#xff1f;3、Python是编译型语言还是解释型语言&#xff1f;4、Python 中的“#”符号有什么作用&#xff1f;5、可变数据类型和不可变…...

支持向量机(Support Vector Machines,SVM)

什么是机器学习 支持向量机&#xff08;Support Vector Machines&#xff0c;SVM&#xff09;是一种强大的机器学习算法&#xff0c;可用于解决分类和回归问题。SVM的目标是找到一个最优的超平面&#xff0c;以在特征空间中有效地划分不同类别的样本。 基本原理 超平面 在二…...

golang一个轻量级基于内存的kv存储或缓存

golang一个轻量级基于内存的kv存储或缓存 go-cache是一个轻量级的基于内存的key:value 储存组件&#xff0c;类似于memcached&#xff0c;适用于在单机上运行的应用程序。 它的主要优点是&#xff0c;本质上是一个具有过期时间的线程安全map[string]interface{}。interface的结…...

henauOJ 1103: 统计元音

题目描述 统计每个元音字母在字符串中出现的次数。 输入 输入数据首先包括一个整数n&#xff0c;表示测试实例的个数&#xff0c;然后是n行长度不超过100的字符串。 输出 对于每个测试实例输出5行&#xff0c;格式如下&#xff1a; a:num1 e:num2 i:num3 o:num4 u:num5 多…...

虚幻引擎:开创视觉与创意的新纪元

先看看据说虚幻5做出来的东西吧&#xff1a; 虚幻引擎5&#xff01;&#xff01;&#xff01;4K画质PS5实机演示&#xff01; 好了&#xff0c;用文字认识一下吧&#xff1a; 虚幻引擎5.3对UE5的核心工具集作了进一步优化&#xff0c;涉及渲染、世界构建、程序化内容生成&…...

T527 Android 13 编译步骤

步骤1&#xff1a; cd longan./build.sh config (0 2 1) 选择 Android 平台&#xff1a; 步骤2&#xff1a;选择IC为t527&#xff1a; 步骤3&#xff1a;板子类型选为demo_car&#xff1a; 步骤4&#xff1a;选择 flash&#xff0c;默认选择 default 则可&#xff1a; 步骤5&…...

OpenAI ChatGPT-4开发笔记2024-04:Chat之Tool之2:multiple functions

从程序员到ai Expert 1 定义参数和函数2 第一轮chatgpt3 第一轮结果和function定义全部加入prompt再喂给chatgpt4 大结局7 参考资料 上一篇解决了调用一个函数的问题。这一篇扩展为调用3个。n个自行脑补。 1 定义参数和函数 #1.设定目标 import json import openai#1.定义para…...

14:00面试,14:07就出来了,问的问题有点变态。。。

前言 刚从小厂出来&#xff0c;没想到网盘我在另一家公司又寄了。 在这家公司上班&#xff0c;每天都要加班&#xff0c;但看在钱给的比较多的份上&#xff0c;也就不太计较了。但万万没想到一纸通知&#xff0c;所有人不准加班了&#xff0c;不仅加班费没有了&#xff0c;薪…...

206. 反转链表(Java)

题目描述&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 输入&#xff1a; head [1,2,3,4,5] 输出&#xff1a; [5,4,3,2,1] 代码实现&#xff1a; 1.根据题意创建一个结点类&#xff1a; public class ListNode {int val…...

LeetCode 2807. 在链表中插入最大公约数【链表,迭代,递归】1279

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

Hive之set参数大全-3

D 是否启用本地任务调试模式 hive.debug.localtask 是 Apache Hive 中的一个配置参数&#xff0c;用于控制是否启用本地任务调试模式。在调试模式下&#xff0c;Hive 将尝试在本地模式下运行一些任务&#xff0c;以便更容易调试和分析问题。 具体来说&#xff0c;当 hive.de…...

Golang拼接字符串性能对比

g o l a n g golang golang的 s t r i n g string string类型是不可修改的&#xff0c;对于拼接字符串来说&#xff0c;本质上还是创建一个新的对象将数据放进去。主要有以下几种拼接方式 拼接方式介绍 1.使用 s t r i n g string string自带的运算符 ans ans s2. 使用…...

【问题解决】web页面html锚点定位后内容被遮挡问题解决【暗锚】

正常的锚点跳转 a标签的href填写目标元素的id即可 <a href"#my_target">to div1</a> <div id"my_target">div1</div> 内容被顶栏遮挡示例 但是当id所在元素被嵌套多层flex和relative布局之后&#xff0c;跳转后部分内容会被遮挡…...

easyui datagrid无数据时显示无数据

这里写自定义目录标题 需求解决办法 需求 使用datagrid显示记录时&#xff0c;结果查询记录数为0&#xff0c;此时需要显示无数据。 示例代码 <table id"dg"></table>$(#dg).datagrid({url:datagrid_data.json,columns:[[{field:code,title:Code,widt…...

动态规划python简单例子-斐波那契数列

def fibonacci(n):dp [0, 1] [0] * (n - 1) # 初始化动态规划数组for i in range(2, n 1):dp[i] dp[i - 1] dp[i - 2] # 计算斐波那契数列的第 i 项print(dp)return dp[n] # 返回斐波那契数列的第 n 项# 示例用法 n 10 # 计算斐波那契数列的第 10 项 result fibonac…...

免 费 搭 建 多模式商城:b2b2c、o2o、直播带货一网打尽

鸿鹄云商 b2b2c产品概述 【b2b2c平台】&#xff0c;以传统电商行业为基石&#xff0c;鸿鹄云商支持“商家入驻平台自营”多运营模式&#xff0c;积极打造“全新市场&#xff0c;全新 模式”企业级b2b2c电商平台&#xff0c;致力干助力各行/互联网创业腾飞并获取更多的收益。从消…...

Python AttributeError: ‘NoneType‘ object has no attribute ‘shape‘如何解决

Python AttributeError: ‘NoneType‘ object has no attribute ‘shape‘ 运行出现上述错误&#xff0c;这个错误表示某个图像对象为 NoneType &#xff0c;没有 shape 属性。通常情况下&#xff0c;这是因为 OpenCV 没有能够正确地加载图像&#xff0c;导致无法访问图像数据。…...

vue3自定义确认密码匹配验证规则

// 自定义确认密码匹配验证规则 const matchPassword (rules:any, value:any, callback:any) > {if (value ! addData.payPwd) {callback(new Error(两次密码输入不一致&#xff01;))} else {callback()} }const rules reactive({payPwd: [{ required: true, message: &q…...

宁波网站建设使用技巧分享/中国第三波疫情将在9月份

已知二叉树的中序和先序遍历可以唯一确定后序遍历、已知中序和后序遍历可以唯一确定先序遍历&#xff0c;但已知先序和后序&#xff0c;却不一定能唯一确定中序遍历。现要求根据输入的中序遍历结果及后序遍历结果&#xff0c;要求输出其先序遍历结果。输入第一行为中序序列 第二…...

wordpress模板 美容/怎么做网络平台

1、以声明方式向ASP.NET服务器控件添加客户端事件处理程序 在控件的标记中添加事件特性&#xff0c;例如&#xff0c;onmouseover或onkeyup&#xff0c;针对特性值添加要执行的客户端脚本 注意始终都要在特性中的客户端脚本之后添加一个分号(;).这是必须的&#xff0c;这样就可…...

陕西网站开发公司/广州网络营销运营

edit类型的子窗口 ES_MULTILINE&#xff1a;多行输入文本框 窗口的消息&#xff1a; WL_COMMAND&#xff1a; EN_CHANGE&#xff1a;当edit窗口内的文本内容改变的时候&#xff0c;edit子窗口给父窗口发送一个WL_COMMAND消息&#xff0c;其通知码是EN_CHANGE。 WM_GETTEXT&…...

兰州网站哪里做/广州seo关键词优化费用

这次要为我的python程序加上数据库&#xff0c;主要是实现从mysql中查询出数据并在页面上显示出来。 首先是mysql的配置文件config.py host"127.0.0.1" user"root" password"" charset"utf8" database"service" port3306 然…...

公司网站不续费能打开网页吗/宁波seo外包优化

近期博主在GitChat上举办了一场 彻底玩转Tampermonkey的Chat 欢迎各位前来捧场. 报名地址 使用 Tampermonkey 编写高级跨网站自动化任务脚本 在Tamermokeny中编辑脚本可以很容易地控制自己的网页 处理一般性的操作外,如更换问题,图片,注入样式和脚本外 如果我们要做更多 这就…...

东莞做网站 南城石佳/seo快速收录快速排名

HP-Socket 是一套通用的高性能 Windows Socket 组件包&#xff0c;包含服务端组件&#xff08;IOCP 模型&#xff09;和客户端组件&#xff08;Event Select 模型&#xff09;&#xff0c;广泛适用于 Windows 平台的 TCP 通信系统。HP-Socket 对通信层实现完全封装&#xff0c;…...