AGI 之 【Hugging Face】 的【Transformer】的 [ 解码器 ] / [ 认识 Transformer ]的简单整理

news2024/12/23 7:05:43

AGI 之 【Hugging Face】 的【Transformer】的 [ 解码器 ] / [ 认识 Transformer ]的简单整理

目录

AGI 之 【Hugging Face】 的【Transformer】的 [ 解码器 ] / [ 认识 Transformer ]的简单整理

一、简单介绍

二、Transformer

三、解码器

四、认识Transformer

1、Transformer的生命树

2、编码器分支

3、解码器分支

4、编码器-解码器分支


一、简单介绍

AGI,即通用人工智能(Artificial General Intelligence),是一种具备人类智能水平的人工智能系统。它不仅能够执行特定的任务,而且能够理解、学习和应用知识于广泛的问题解决中,具有较高的自主性和适应性。AGI的能力包括但不限于自我学习、自我改进、自我调整,并能在没有人为干预的情况下解决各种复杂问题。

AGI能做的事情非常广泛:

    跨领域任务执行:AGI能够处理多领域的任务,不受限于特定应用场景。
    自主学习与适应:AGI能够从经验中学习,并适应新环境和新情境。
    创造性思考:AGI能够进行创新思维,提出新的解决方案。
    社会交互:AGI能够与人类进行复杂的社会交互,理解情感和社会信号。

关于AGI的未来发展前景,它被认为是人工智能研究的最终目标之一,具有巨大的变革潜力:

    技术创新:随着机器学习、神经网络等技术的进步,AGI的实现可能会越来越接近。
    跨学科整合:实现AGI需要整合计算机科学、神经科学、心理学等多个学科的知识。
    伦理和社会考量:AGI的发展需要考虑隐私、安全和就业等伦理和社会问题。
    增强学习和自适应能力:未来的AGI系统可能利用先进的算法,从环境中学习并优化行为。
    多模态交互:AGI将具备多种感知和交互方式,与人类和其他系统交互。

Hugging Face作为当前全球最受欢迎的开源机器学习社区和平台之一,在AGI时代扮演着重要角色。它提供了丰富的预训练模型和数据集资源,推动了机器学习领域的发展。Hugging Face的特点在于易用性和开放性,通过其Transformers库,为用户提供了方便的模型处理文本的方式。随着AI技术的发展,Hugging Face社区将继续发挥重要作用,推动AI技术的发展和应用,尤其是在多模态AI技术发展方面,Hugging Face社区将扩展其模型和数据集的多样性,包括图像、音频和视频等多模态数据。

在AGI时代,Hugging Face可能会通过以下方式发挥作用:

        模型共享:作为模型共享的平台,Hugging Face将继续促进先进的AGI模型的共享和协作。
        开源生态:Hugging Face的开源生态将有助于加速AGI技术的发展和创新。
        工具和服务:提供丰富的工具和服务,支持开发者和研究者在AGI领域的研究和应用。
        伦理和社会责任:Hugging Face注重AI伦理,将推动负责任的AGI模型开发和应用,确保技术进步同时符合伦理标准。

AGI作为未来人工智能的高级形态,具有广泛的应用前景,而Hugging Face作为开源社区,将在推动AGI的发展和应用中扮演关键角色。

(注意:以下代码运行,可能需要科学上网)

二、Transformer

Transformer 是一种深度学习模型架构,最初由 Vaswani 等人在 2017 年的论文《Attention is All You Need》中提出。它引入了基于注意力机制的结构,克服了传统 RNN(递归神经网络)在处理长序列输入时的效率和效果问题。Transformer 模型特别适用于自然语言处理(NLP)任务,如机器翻译、文本生成和文本分类等。

Transformer 架构主要由编码器(Encoder)和解码器(Decoder)两个部分组成:

  •     编码器(Encoder):

        编码器由多个相同的编码层堆叠而成。
        每个编码层包含两个子层:多头自注意力机制(Multi-Head Self-Attention Mechanism)和前馈神经网络(Feedforward Neural Network)。
        编码器的输入是源序列,通过各层的处理,编码器生成对源序列的表示。

  •     解码器(Decoder):

        解码器也由多个相同的解码层堆叠而成。
        每个解码层包含三个子层:多头自注意力机制、编码器-解码器注意力机制(Encoder-Decoder Attention Mechanism)和前馈神经网络。
        解码器的输入是目标序列,通过各层的处理,解码器生成对目标序列的预测。

Hugging Face 是一个致力于推动 NLP 研究和应用的公司。其主要产品是开源的 Transformers 库,该库实现了各种基于 Transformer 架构的模型,并提供了易于使用的 API。

Transformers 库

  •     模型实现:

        1)Transformers 库实现了许多流行的 Transformer 模型,例如 BERT、GPT、T5、RoBERTa 等。

        2)这些模型经过预训练,可以直接用于各种下游任务,如文本分类、情感分析、命名实体识别等。

  •     使用和定制:

        1)用户可以轻松加载预训练模型,进行微调或直接使用。

        2)库中提供了丰富的工具和方法,用于模型训练、评估和部署。

  •     管道(Pipeline)API:

       1) Transformers 库的 Pipeline API 简化了常见任务的实现过程,如文本分类、问答系统、文本生成等。

        2)用户只需几行代码即可完成复杂的 NLP 任务。

Transformer 架构在 Hugging Face 的应用

  •     预训练和微调: Hugging Face 提供了大量预训练的 Transformer 模型,这些模型在大型数据集上进行预训练,并可以在小数据集上进行微调,适应特定任务。
  •     社区和模型库: Hugging Face Hub 上有成千上万的模型,由社区成员和 Hugging Face 提供,这些模型可以被下载、使用、评估和分享。
  •     集成和部署: Transformers 库支持在各种平台和环境中部署 Transformer 模型,包括云服务、边缘设备和移动设备。

通过 Hugging Face,研究人员和开发者可以快速地利用 Transformer 架构的强大功能,解决各种 NLP 任务,并推动 NLP 技术的发展。

三、解码器

解码器(Decoder)是神经网络的一部分,通常在序列到序列(sequence-to-sequence)任务中使用,比如机器翻译、文本生成和对话系统。解码器的主要功能是将编码器(Encoder)生成的中间表示转换成目标序列。Transformer 架构中的解码器由多个解码器层(Decoder Layers)组成,每个解码器层包括多头自注意力机制、编码器-解码器注意力机制和前馈神经网络(Feed-Forward Neural Network)。下面是解码器及其组件的详细介绍:

Transformer 解码器架构

Transformer 解码器包含以下主要部分:

  1. 输入嵌入层(Input Embedding Layer):将输入序列中的每个标记(token)转换为高维向量表示。包括位置嵌入(Position Embedding),以便模型能够区分序列中不同位置的标记。

  2. 多个解码器层(Decoder Layers):每个解码器层包含三个主要子层:

    • Masked Multi-Head Self-Attention(遮掩的多头自注意力):计算输入序列中每个标记与其他标记之间的注意力分数,但遮掩未来的标记以防止模型在预测当前标记时看到未来的标记。
    • Encoder-Decoder Attention(编码器-解码器注意力):计算解码器的输入标记与编码器输出的注意力分数,以关注编码器生成的中间表示。
    • 前馈神经网络(Feed-Forward Neural Network):将每个标记的表示通过两个全连接层进行非线性变换。
  3. 输出层(Output Layer):将解码器生成的表示转换为目标词汇表中的概率分布,以预测下一个标记。

解码器的工作原理

在训练阶段,解码器的输入是目标序列的移位版本(shifted target sequence),在推理阶段(inference stage),解码器会在每一步预测下一个标记,并将其作为下一步的输入。

解码器在序列生成任务中的应用

解码器在序列生成任务中的应用包括:

  • 机器翻译:将输入句子编码成上下文向量,然后解码成目标语言的句子。
  • 文本生成:根据输入的条件生成连贯的文本。
  • 对话系统:根据对话历史生成下一句回复。

Transformer 解码器是一个复杂的模块,通过多头注意力机制和前馈神经网络对序列数据进行处理。解码器的设计使其能够在序列生成任务中发挥重要作用,生成高质量的目标序列。理解解码器的各个组件及其工作原理,对于构建和优化序列到序列模型至关重要。

Transformer解码器层放大图

如图所示,解码器和编码器的主要区别在于解码器有两个注意力子层:

确保我们在每个时间步生成的词元只基于过去的输出和当前正在预测的词元。如果没有这样做,那么解码器将能够在训练时通过简单复制目标翻译来欺骗我们,导致训练失败。我们需要对输入进行掩码,以确保任务不是简单复制目标翻译。

  • -

请注意,与自注意力层不同,编码器-解码器注意力中的key和query向量可能具有不同的长度。这是因为编码器和解码器输入通常涉及长度不同的序列。因此,此层中的注意力得分矩阵是矩形的,而不是正方形的。

对编码器栈的输出key和value向量执行多头注意力,并以解码器的中间表示作为query 。在这种方式中,编码器-解码器注意力层学习如何关联来自两个不同序列(例如两种不同语言)的词元。在每个块中,解码器都可以访问编码器的key和value。

我们来看一下需要进行哪些修改才能在自注意力层中添加掩码,然后将编码器-解码器注意力层的实现作为一道作业题留给你。掩码自注意力的技巧是引入一个掩码矩阵,该矩阵对角线下方的元素为1,上方的元素为0:

# 获取输入序列的长度
seq_len = inputs.input_ids.size(-1)

# 创建一个下三角矩阵,表示遮掩未来的标记
# tril 函数用于创建一个下三角矩阵,其中只有主对角线及以下部分为1,其余部分为0
mask = torch.tril(torch.ones(seq_len, seq_len)).unsqueeze(0)

# 查看第一个遮掩矩阵
mask[0]

运行结果:

tensor([[1., 0., 0., 0., 0.],
        [1., 1., 0., 0., 0.],
        [1., 1., 1., 0., 0.],
        [1., 1., 1., 1., 0.],
        [1., 1., 1., 1., 1.]])

这里我们使用了PyTorch的tril()函数来创建下三角矩阵。一旦我们有了这个掩码矩阵,我们可以使用Tensor.masked fill()将所有的0替换为负无穷来防止每个注意力头查看后面的词元:

# 使用 mask 填充 scores 矩阵中需要遮掩的位置
# masked_fill 函数用于将 mask 中为 0 的位置在 scores 矩阵中替换为 -inf
# 这样可以确保在计算注意力权重时,被遮掩的位置不会影响结果
scores.masked_fill(mask == 0, -float("inf"))

运行结果:

tensor([[[27.1825,    -inf,    -inf,    -inf,    -inf],
         [ 0.1586, 28.4586,    -inf,    -inf,    -inf],
         [ 0.7316,  0.1006, 28.5450,    -inf,    -inf],
         [-0.3873,  0.6837, -0.4750, 26.8700,    -inf],
         [ 0.4209, -1.1623, -1.7036, -0.7450, 28.0119]]],
       grad_fn=<MaskedFillBackward0>)

通过将矩阵对角线上方的值设为负无穷,可以保证当我们对分数进行softmax时,注意力权重都为0,因为e-=0(回想一下softmax计算的是规范化指数)。我们只需要对本章早先实现的缩放点积注意力函数进行一点点修改,就能轻松地包含这种掩码行为:

def scaled_dot_product_attention(query, key, value, mask=None):
    # 计算缩放点积注意力得分
    dim_k = query.size(-1)
    scores = torch.bmm(query, key.transpose(1, 2)) / sqrt(dim_k)
    if mask is not None:
        # 使用 mask 填充 scores 矩阵中需要遮掩的位置
        scores = scores.masked_fill(mask == 0, float("-inf"))
    # 计算注意力权重
    weights = F.softmax(scores, dim=-1)
    # 使用注意力权重加权 value 矩阵,得到最终的注意力输出
    return weights.bmm(value)

这里的解码器层实现相当简单。如果你想了解更多,我们建议读者参考Andrej Karpathy创作的minGPT的优秀实现(https://oreil.ly/kwsOP)。

至此我们讲述了很多技术细节,希望你现在应该对Transformer架构每个部分的工作原理有了很好的理解。在开始构建比文本分类更高级的任务模型之前,我们稍微退后一步,看一看Transformer模型的各种分支,以及它们之间的关系。

  • -

这里我们用一个示例看看是否帮助你解开编码器-解码器注意力的神秘面纱。想象一下,你(解码器)正在班上,参加一场考试。你的任务是根据前面的单词(解码器输入)来预测下一个单词,听起来很简单,但实际上非常难(你自己试试,预测本书的某一段的下一个单词)。幸运的是,你旁边的同学(编码器)拥有整篇文章。不幸的是,他们是留学生,文章是用他们的母语写的。不过聪明如你,你还是想出了一种作弊的方式。你画了一幅小漫画,描述了你已经拥有的文章内容(query),交给了你的同学。然后他们会尝试找出哪一段文章与那个描述匹配(key),并画一幅漫画描述紧随该段文章之后的单词(value),然后把这个答案传给你。有了这种系统性的帮助,你轻松地通过了考试。

四、认 Transformer

Transformer模型有三种主要的架构:编码器、解码器和编码器-解码器。早期Transformer模型的初步成功触发了模型开发的寒武纪爆发,研究人员在各种大小和性质的数据集上使用新的预训练目标构建各种模型,并调整架构以进一步提高性能。虽然模型的种类仍在迅速增长,但它们仍然可以分为三大类。

1、Transformer

随着时间的推移,三种主要的架构都进行了各自的演进。如下图,展示了一些最著名的模型及其后代。

Transformer最突出的架构及生命树

Transformer模型总计有超过50种不同的架构,因此上图未能涵盖所有架构,它只列出了一些重要的里程碑。我们前面介绍了Transformer模型最初的架构,现在我们着重研究一些比较关键的后代架构,我们先从编码器分支开始。

2、编

A. Wang et al., “GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding”(https://arxiv.org/abs/1804.07461),(2018).

基于Transformer架构的第一个纯编码器模型是BERT。当初它发布时,在流行的GLUE基准测试中 (该测试度量跨几个难度级别的NLU任务),它的表现优于所有当时最先进的模型。在此之后,BERT的预训练目标和架构持续进行适配并进一步提高了性能。纯编码器模型仍然在NLU任务(如文本分类、命名实体识别和问答)的研究和工业中占主导地位。我们简要地讲述一下BERT模型及其变体:

2.1 BERT

J. Devlin et al., “BERT:Pre-Training of Deep BidirectionalTransformersfor Language Understanding”(https://arxiv.org/abs/1810.04805),(2018).

BERT针对这两个目标进行预训练:预测文本中的掩码词元,确定一个文本段是否有可能跟随另一个文本段 。前者称为掩码语言建模(MLM),后者称为下一句预测(NSP)。

2.2 DistilBERT

V. Sanh et al., “DistilBERT,a Distilled Version of BERT:Smaller,Faster,Cheaper and Lighter”(https://arxiv.org/abs/1910.01108),(2019).

虽然BERT取得了极好的结果,但它太大了,使其在需要低延迟的环境中部署变得棘手。通过在预训练期间使用一种称为知识蒸馏的技术,DistilBERT实现了97%的BERT性能,同时使用的内存量减少了40%,速度提高了60% 。有关知识蒸馏的更多详细信息,后面会介绍。

2.3 RoBERTa

Y. Liu et al., “RoBERTa:A Robustly Optimized BERT Pretraining Approach”(https://arxiv.org/abs/1907.11692),(2019).

在BERT发布之后进行的一项研究表明,通过修改预训练方案,可以进一步提高其性能。RoBERTa采用更大的批量、更多的训练数据进行更长时间的训练,并且放弃了NSP任务 。这些改变与原始的BERT模型相比显著提高了性能。

2.4 XLM

G. Lample, and A. Conneau, “Cross-Lingual Language Model Pretraining”(https://arxiv.org/abs/1901.07291), (2019).

跨语言语言模型(XLM) 探索了几种用于构建多语言模型的预训练目标,包括来自类GPT模型的自回归语言建模和来自BERT的MLM。此外,XLM预训练论文的作者还介绍了翻译语言建模(TLM),这是MLM对多语言输入的扩展。通过实验这些预训练任务,它们在几个多语言NLU基准测试以及翻译任务中取得了最先进的结果。

2.5 XLM-RoBERTa

A. Conneau et al., “Unsupervised Cross-Lingual Representation Learning at Scale”(https://arxiv.org/abs/1911.02116),(2019).

基于XLM和RoBERTa的研究,XLM-RoBERTa或XLM-R模型通过大规模扩展训练数据将多语言预训练推向了更高的水平 。该模型的开发人员使用Common Crawl语料库(https://commoncrawl.org)创建了一个包含2.5TB文本的数据集,并在此数据集上训练了一个编码器MLM。由于该数据集没有平行文本(即译文),因此放弃了XLM的TLM目标。这种方法在低资源语言方面大幅领先于XLM和多语言BERT变体。

2.6 ALBERT

Z. Lan et al., “ALBERT:A Lite BERT for Self-Supervised Learning of Language Representations”(https://arxiv.org/abs/1909.11942),(2019).

ALBERT模型做了三处改进使得编码器的架构更加高效 。首先,它从隐藏维度解耦了词元嵌入的维度,从而能够让嵌入维度更小,从而节省参数,尤其是当词汇量很大时。其次,所有层共享相同的参数,从而能够进一步降低参数数量。最后,将NSP目标替换为句子排序预测:模型预测两个连续句子的顺序是否交换了,而不是预测它们是否属于同一个文档或主题。这些改变令使用更少的参数训练更大的模型,并在NLU任务中达到更高的性能成为可能。

2.7 ELECTRA

K. Clark et al., “ELECTRA:Pre-Training Text Encoders as Discriminators Rather Than Generators”(https://arxiv.org/abs/2003.10555),(2020).

标准MLM的预训练目标有一个局限性,在每个训练步骤中,只更新了掩码词元的表示,而没有更新其他输入词元。为解决这个问题,ELECTRA采用了一种双模型方法 :第一个模型(通常很小)像标准的掩码语言模型一样工作,预测掩码的词元;然后,第二个模型(鉴别器)预测第一个模型输出中的哪些词元最初是被掩码的。换句话说,鉴别器需要对每个词元进行二分类,这种方法使训练效率提高了30倍。在使用ELECTRA模型执行下游任务时,判别器将像标准BERT模型一样进行微调。

2.8 DeBERTa

P. He et al., “DeBERTa:Decoding-Enhanced BERT with Disentangled Attention”(https://arxiv.org/abs/2006.03654),(2020).

A. Wang et al., “SuperGLUE:A Stickier Benchmark for General-Purpose Language Understanding Systems”(https://arxiv.org/abs/1905.00537),(2019).

DeBERTa模型做了两个架构上的改进 。首先,每个词元表示为两个向量:一个表示内容,另一个表示相对位置。通过将词元的内容与相对位置分离,自注意力层可以更好地建模相邻词元对的依赖关系。另一方面,单词的绝对位置也很重要,特别是对于解码。因此,在词元解码头的softmax层之前添加了一个绝对位置嵌入。DeBERTa是第一个(作为集合)在SuperGLUE基准测试 上击败人类基线的模型(SuperGLUE是GLUE的更难版本,由用于度量NLU性能的几个子任务组成)。

至此我们讲述了一些主要的纯编码器模型,我们来看一下纯解码器模型。

3、解

Transformer解码器模型的进展在很大程度上是由OpenAI所推动的。这些模型在预测序列中下一个单词方面表现出色,因此主要用于文本生成任务。它们的进展是通过使用更大的数据集和将语言模型扩展到更大规模来推动的。我们来看看这些迷人的生成模型的演变历史:

3.1 GPT

A. Radford et al., “Improving Language Understanding by Generative Pre-Training”(https://openai.com/blog/language-unsupervised),OpenAI(2018).

GPT将自然语言处理中的两个关键思想融合在了一起 :新颖高效的Transformer解码器架构和迁移学习。在该架构中,模型通过基于前面的单词预测下一个单词来预训练。该模型使用了BookCorpus进行训练,在分类等下游任务上取得了优秀的结果。

3.2 GPT-2

A. Radford et al., “Language Models Are Unsupervised Multitask Learners”(https://openai.com/blog/betterlanguage-models),OpenAI(2019).

受以上GPT简单且可扩展的预训练方法成功的启发,GPT-2对原始模型和训练集进行了升级 。GPT-2能够产生一系列连贯的文本。由于担心可能被误用,因此GPT-2分阶段发布,先发布较小的模型,然后再发布完整的模型。

3.3 CTRL

N.S. Keskar et al., “CTRL:A ConditionalTransformerLanguage Model for Controllable Generation”(https://arxiv.org/abs/1909.05858),(2019).

像GPT-2这样的模型可以根据输入序列(即提示)生成延续输出。然而,用户对所生成序列的风格控制较弱。条件转换语言(CTRL)模型通过在序列开头添加“控制词元”来解决这个问题 。这样可以控制所生成文本的风格,实现多样化的生成。

3.4 GPT-3

J. Kaplan et al., “Scaling Laws for Neural Language Models”(https://arxiv.org/abs/2001.08361),(2020).

T. Brown et al., “Language Models Are Few-Shot Learners”(https://arxiv.org/abs/2005.14165),(2020).

GPT在升级成GPT-2之后取得了成功,OpenAI对不同规模的语言模型的行为进行了彻底的分析,发现计算量、数据集大小、模型大小和语言模型的性能之间存在着简单的幂律规律 。受到这些分析的启发,OpenAI对GPT-2放大100倍,得到了拥有1750亿个参数的GPT-3 。GPT-3除了能够生成令人印象深刻的逼真文本段落外,还展现出少样本学习的能力:只需要提供少量的几个任务样本(如将文本翻译成代码),GPT-3就能够在新样本上完成新的任务。OpenAI没有开源GPT-3,但提供了API(https://oreil.ly/SEGRW)接口供人们调用。

3.5 GPT-Neo/GPT-J-6B

S. Black et al., “GPT-Neo:Large Scale Autoregressive Language Modeling with Mesh-TensorFlow”(https://doi.org/10.5281/zenodo.5297715),(2021); B. Wang and A. Komatsuzaki,“GPT-J-6B:A 6 Billion Parameter Autoregressive Language Model”(https://github.com/kingoflolz/mesh-transformer-jax),(2021).

GPT-Neo和GPT-J-6B类似于GPT,由EleutherAI(https://eleuther.ai)训练,EleutherAI是一个旨在重新创建和发布GPT-3同等规模模型的研究人员组织 。GPT-Neo和GPT-J-6B是GPT-3的1750亿个参数完整版本的较小变体,具有13亿、27亿和60亿个参数,主要与OpenAI提供的GPT-3模型较小版本相竞争。

Transformer生命树的最后一个分支是编码器-解码器模型。

4、编-

虽然目前业内通常使用纯编码器或纯解码器栈来构建模型,但是Transformer架构有几种编码器-解码器变体在自然语言理解和生成领域都具有创新应用。

4.1 T5

C. Raffel et al., “Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer”(https://arxiv.org/abs/1910.10683),(2019).

T5模型将所有的自然语言理解和生成任务都转化为文本到文本任务 (即序列到序列任务),统一了它们的处理方式。既然所有任务都被定义为序列到序列任务,因此就自然而然采用了编码器-解码器架构。例如,对于文本分类问题,编码器的输入是文本,而解码器的输出则是文本而不是类(即将预测标注生成为文本)。我们将在第6章中更详细地讨论这个问题。T5模型使用Transformer原始架构,数据使用C4数据集(一个超大规模的文本语料库,爬取了各种来源的网页文本数据)。T5模型将所有SuperGLUE任务转换为文本到文本任务进行掩码语言建模预训练。其中110亿个参数的最大版本在几个基准测试中取得了当时业界最好的成绩。

4.2 BART

M. Lewis et al., “BART: Denoising Sequence-to-Sequence Pre-Training for Natural Language Generation, Translation, and Comprehension”(https://arxiv.org/abs/1910.13461), (2019).

BART将BERT和GPT的预训练流程整合进编码器-解码器架构中 。BART对输入序列进行了多种变换,包括从简单掩码到句子置换、词元删除和文档反转。这些修改后的输入被传入编码器中进行处理,然后由解码器重构为原始文本。通过这种方式,BART模型具有更强的灵活性,既可以用于NLU任务,也可以用于自然语言生成(N L G)任务,并且在两方面都取得了最先进的性能表现。

4.3 M2M-100

A. Fan et al., “Beyond English-Centric Multilingual Machine Translation”(https://arxiv.org/abs/2010.11125),(2020).

传统上,翻译模型是针对一种语言对和一个翻译方向构建的。显然,这无法扩展到众多语言,而实际上有些知识是可以在多种语言对之间共享的,这些知识可以用于在罕见语言之间进行翻译。M2M-100是第一个可以在任意100种语言之间进行翻译的翻译模型 。这样就可以对罕见和少数民族语言进行高质量的翻译。该模型使用前缀词元(类似于[CLS]特殊词元)来表示源语言和目标语言。

4.4 BigBird

M. Zaheer et al., “Big Bird:Transformersfor Longer Sequences”(https://arxiv.org/abs/2007.14062),(2020).

Transformer模型的一个主要局限是注意力机制的二次存储需求,导致最大上下文大小受到限制。BigBird通过使用线性缩放的稀疏注意力形式来解决这个问题 。这种方法令BigBird的最大上下文大小从大多数BERT模型的512个词元扩展到了4096个词元,从而能够容纳更多的上下文知识。这对需要保存长依赖项的场景特别有用,例如文本摘要。

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

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

相关文章

io_contextttttttttttt

创建上下文——io_context_t 它是一个上下文结构&#xff0c;在内部它包含一个完成队列&#xff0c;在线程之间是可以共享的。 提交请求——iocb io回调数据结构&#xff0c;和io_submit配合使用。 处理结果 通过io_event处理结果&#xff0c; struct io_event {void *data…

智胜未来:AI如何重塑SaaS用户增长战略

在当今这个数字化时代&#xff0c;SaaS&#xff08;软件即服务&#xff09;已成为企业运营的重要支柱&#xff0c;而人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;正以前所未有的方式重塑着SaaS行业的面貌&#xff0c;特别是对其用户增长战略产生了深远影响。…

洛谷P7044 「MCOI-03」括号(栈括号的贡献 组合数经典问题)

题目 思路来源 P7044 「MCOI-03」括号 题解 - 洛谷专栏 题解 统计一对括号的贡献&#xff0c;对于一个左括号i&#xff0c;找到其右第一个匹配的括号的位置j 这样对于不包含这个(i,j)对的区间[l,r]&#xff08;1<l<i&#xff0c;i<r<j&#xff09;来说&#xff…

在docker配置Nginx环境配置

应用于商业模式集中&#xff0c;对于各种API的调用&#xff0c;对于我们想要的功能进行暴露&#xff0c;对于不用的进行拦截进行鉴权。用于后面的付费 开发环境 正式上线模式 一、常用命令 停止&#xff1a;docker stop Nginx重启&#xff1a;docker restart Nginx删除服务&a…

【已解决】ip2region解析ip获取地区位置 在linux部署出现java文件操作报错:java.io.FileNotFoundException

1、依赖 <dependency><groupId>org.lionsoul</groupId><artifactId>ip2region</artifactId><version>2.7.0</version></dependency>2.加入ip2region.xdb文件 ip2Region下载地址 3.加入到项目里面去 把 ip2region.xdb 文件放…

Windows环境使用SpringBoot整合Minio平替OSS

目录 配置Minio环境 一、下载minio.exe mc.exe 二、设置用户名和密码 用管理员模式打开cmd 三、启动Minio服务器 四、访问WebUI给的地址 SpringBoot整合Minio 一、配置依赖&#xff0c;application.yml 二、代码部分 FileVO MinioConfig MinioUploadService MinioController 三…

Python (Ansbile)脚本高效批量管理服务器和安全

1、简介 在现代 IT 基础设施中&#xff0c;管理大量服务器是一项复杂而繁琐的任务。特别是在检查服务器的存活状态以及 SSH 登录等任务上&#xff0c;手动操作非常耗时且容易出错。本文将介绍如何使用 Python 脚本实现对多台服务器的批量检查和管理&#xff0c;包括检查服务器…

用dify实现简单的Agent应用(AI信息检索)

这篇文章里&#xff0c;我们来聊聊如何使用字节最新的豆包大模型&#xff0c;在 Dify 上来快速完成一个具备理解需求、自主规划、自主选择工具使用的简单智能体&#xff08;Agent&#xff09;。 准备工作 完整准备过程分为&#xff1a;准备 Docker 环境、启动 Dify 程序、启动…

Spring框架的学习SpringMVC(1)

1.什么是MVC (1)MVC其实就是软件架构的一种设计模式&#xff0c;它将软件的系统分为&#xff0c;&#xff08;视图&#xff0c;模型&#xff0c;控制器&#xff09;三个部分 1.1View(视图) 视图也就是&#xff0c;在浏览器显示的那一个部分&#xff0c;是后端数据的呈现 1.…

02-部署LVS-DR群集

1.LVS-DR工作原理 LVS-DR模式&#xff0c;Director Server作为群集的访问入口&#xff0c;不作为网购使用&#xff0c;节点Director Server 与 Real Server 需要在同一个网络中&#xff0c;返回给客户端的数据不需要经过Director Server 为了响应对整个群集的访问&#xff0c;…

实验一 MATLAB \ Python数字图像处理初步

一、实验目的&#xff1a; 1&#xff0e;熟悉及掌握在MATLAB\Python中能够处理哪些格式图像。 2&#xff0e;熟练掌握在MATLAB\Python中如何读取图像。 3&#xff0e;掌握如何利用MATLAB\Python来获取图像的大小、颜色、高度、宽度等等相关信息。 4&#xff0e;掌握如何在M…

电脑录音怎么录?简单四个方法轻松搞定!

在电脑上录制音频是一项非常实用的技能&#xff0c;适合多种场合的需求。例如&#xff0c;你可能需要录制自己的声音&#xff0c;用于录音广播、演示或视频制作&#xff1b;也可能需要录制电脑中的声音&#xff0c;如音乐、游戏音效或在线直播&#xff1b;或者需要捕捉浏览器中…

2024 年 亚太赛 APMCM (A题)中文赛道国际大学生数学建模挑战赛 | 飞行器外形的优化 | 数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题&#xff01; 完整内容可以在文章末尾领取&#xff01; 第一个问…

ScaleCache: A Scalable Page Cache for Multiple Solid-State Drives——论文泛读

EuroSys 2024 Paper 论文阅读笔记整理 问题 高性能存储设备&#xff0c;如具有GB/s级I/O带宽的NVMe SSD&#xff0c;已被广泛应用于企业服务器中。对于处理大量数据&#xff0c;在RAID配置中使用多个SSD很有吸引力&#xff0c;这可以提高I/O性能、可靠性和容量。尽管多个SSD为…

隐私集合求交(PSI)原理深入浅出

隐私集合求交技术是多方安全计算领域的一个子问题&#xff0c;通常也被称为安全求交、隐私保护集合交集或者隐私交集技术等&#xff0c;其目的是允许持有各自数据集的双方或者多方&#xff0c;执行两方或者多方集合的交集计算&#xff0c;当PSI执行完成&#xff0c;一方或者两方…

SQL Server 2022的组成

《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;》图书介绍-CSDN博客 SQL Server 2022主要由4部分组成&#xff0c;分别是数据库引擎、分析服务、集成服务和报表服务。本节将详细介绍这些内容。 1.2.1 SQL Server 2022的数据库引擎 SQL Server 2022的…

90%的铲屎官必遇到家里猫毛满天飞问题,热门宠物空气净化器分享

作为一名资深猫奴&#xff0c;一到换毛季节家中就会忍受猫毛飞舞、异味四溢的双重困扰&#xff1f;花粉加上宠物的毛发和体味&#xff0c;过敏和不适似乎成了家常便饭。尝试过很多半方法&#xff0c;用过空气净化器去除毛和异味&#xff0c;虽然普通空气净化器可能提供一定程度…

MySQL数据库的备份-恢复-日志

一、备份 1.1数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中&#xff0c;数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 1.2造成数据丢失的原因 程序错误人为操作错误运算错误磁盘故障灾难&#xff08;如火灾、地震&#xff09;和盗窃 1.3数…

Flutter——最详细(Drawer)使用教程

背景 应用左侧或右侧导航面板&#xff1b; 属性作用elevation相当于阴影的大小 import package:flutter/material.dart;class CustomDrawer extends StatelessWidget {const CustomDrawer({Key? key}) : super(key: key);overrideWidget build(BuildContext context) {return…

3个让你爽到爆炸的学习工具

We OCR WeOCR 是一个基于浏览器的文字识别工具&#xff0c;用户可以通过上传图片来识别其中的文本信息。它是一个渐进式网络应用程序&#xff08;PWA&#xff09;&#xff0c;可以在浏览器中离线使用。WeOCR 是开源的&#xff0c;并且基于 Tesseract OCR 引擎开发。用户无需在本…