Advertisement

HuggingfaceNLP笔记1.2:How do Transformers work?

阅读量:

在本节中,我们将概述Transformer模型的架构。

A bit of Transformer history

以下是Transformer模型(相对较短)历史中的几个关键节点:

2017年6月:Transformer架构于2017年6月首次提出,并专注于翻译任务的研究与应用。随后提出了包括深度神经网络在内的多个具有里程碑意义的模型。

2018年6月:GPT作为第一个预训练的Transformer模型,在多种自然语言处理(NLP)任务上实现了最高的性能。

2018年10月时:BERT作为第二类大规模预训练体系,在本章中我们主要关注其主要目标是生成更高质量的句子摘要,并在后续章节中对这一技术进行深入讲解。

2019年2月:GPT-2,GPT的改进版本(更大),由于伦理问题,没有立即公开发布。

2019年10月:DistilBERT,BERT的精简版本,速度提升60%,内存减小40%,性能仍保留BERT的97%。

2019年10月:今年第10个月份期间发布的两项大型预训练语言模型BART与T5均采用了与原始Transformer架构相同的网络结构,并首次采用该架构的是这项研究或技术发展

2020年5月:GPT-3及其更大的版本GPT-2,在无需经过额外训练过程的情况下,在各种不同的任务中表现优异,并被归类为零样本学习的方法。

这个列表远非全面,只是强调了Transformer模型的一些类型.大体上,它们可以分为三类:
这个列表不仅限于这些内容,并且还有其他未被涵盖的内容.总体而言,这类模型主要可分为三大类.

GPT类(也称为自回归Transformer模型)

BERT类(也称为自编码Transformer模型)

BART/T5类(也称为序列到序列Transformer模型)

稍后我们将深入探讨这些类别。

Transformers are language models

在本研究中涉及的所有提到的基于Transformers的语言模型(如GPT系列、BERT系列等)均被用作语言建模任务的基础架构。这些模型通过无监督学习机制,在未标记的数据中提取丰富的语义信息。这种训练方法的核心在于无需人工干预即可从输入数据中自动生成有意义的表示。这也就意味着我们可以完全依赖于未标注的数据来进行模型训练和优化。

这类模型具备对训练语言建立统计理解的能力, 但这种能力在特定的实际应用场景中并不具有实用性. 因此, 在迁移学习的过程中进行微调的策略被采用. 在有监督学习框架下(利用人类标注的数据)进行微调是为了更好地适应特定的任务需求.

例如,在处理前n个单词时预测下一个单词的出现。这涉及一种称为因果建模(Causal Modeling)的过程,在此过程中模型输出仅基于当前和先前的信息来源而不依赖于未来的输入数据。

另一个例子是 masked language modeling ,模型需要预测句子中的掩码词。

Transformers are big models

通常情况下,除了少数特例(如DistilBERT),提高性能水平的一般策略通常是通过增大模型规模以及增加其预训练数据量来实现的。

不幸的是,在训练模型的过程中尤其是建立大型模型时需要获取充足的数据以避免高昂的时间与计算资源投入,并且在环境影响方面也值得关注。

该项目是由团队负责人有意地努力而产生的结果。通过进行大量实验来优化预训练模型的超参数设置可能会增加成本。

设想一下,在任何研究团队、学生组织或公司试图训练一个模型时,他们都需要从头开始学习相关技术与方法。这种做法将会导致巨额且不必要的全球支出!

主要原因在于:通过将预训练权重广泛传播并在此基础上发展创新应用能够有效降低运算资源消耗与碳排放总量

此外

Transfer Learning

预训练过程是从零开始训练模型的过程:参数随机初始化,在开始训练时没有先前的知识或信息。

这种预训练主要在大量数据上进行。由于大量的数据集被要求进行训练,则可能需要大约几周的时间。

反过来说,在预训练完成后实施微调。要启动微调过程,则需先获取经过预先训练的语言模型。接着利用与特定任务相关的专用数据集继续补充学习。那么为什么不直接从零开始针对最终目标构建模型呢?原因主要包括以下几个方面:

该预训练模型已在与微调数据集高度接近的数据集上完成过训练。由此可知,在微调过程中,初始模型在预训练阶段积累的知识能够得到有效应用(如自然语言处理领域中所观察到的情况)。

基于大量数据的预训练模型已经被充分训练过之后,在进行微调时所需的数据量相比而言较少,并且从而能够获得较为理想的效果。

同样原因,获得良好结果所需的时间和资源也更少。

An instance of, one could utilize a pretrained model that was trained using the English language and then

例如,在英语领域已有的预训练模型的基础上,并将其迁移至arXiv语料库中以获得一个以科学/研究为主题的模型。通过从预训练过程中提取并迁移到目标域的知识来实现微调任务,则只需少量数据样本即可完成这一过程

因此,在微调模型方面具有更低的时间成本、数据消耗以及财务与环境支出。它也更加容易迭代不同的微调方案,因为其训练过程相比完整的预训练阶段无需过多限制。

该方法在大多数情况下能够展现出超越重新训练模型的能力(当你的数据集规模较大时),原因在于预训练模型已经积累了与当前任务高度相关的知识经验。因此,在处理相似类型的任务时,我们应当优先考虑利用现成的预训练模型,并对其进行微调以进一步优化性能。

General architecture

在本节中, 我们将介绍Transformer模型的基本架构. 如果您对某些概念不太了解, 在后续章节中会有详细的说明.

Introduction

模型主要由两个部分组成:

编码器(左侧): 位于左侧的编码器从输入中提取信息,并生成其表征(特征)。这使得模型得以优化以更好地理解输入内容。

解码器(右侧部分): 解码器通过编码器产生的编码信息以及额外输入信息来合成目标序列。这表明该模型经过训练以合成输出序列。

每个部分都可以根据任务独立使用:

仅编码器模型: 适用于需要理解输入的任务,如句子分类和命名实体识别。

仅解码器模型: 适用于生成性任务,如文本生成。

编码器-解码器模型或序列到序列模型: 该模型可用于处理需要输入的生成任务, 如文本翻译任务或摘要生成任务.

我们将在后面的章节中独立探讨这些架构。

Attention layers

Transformer模型的一个核心特点在于其特殊的构造模块——注意力机制的存在。事实上,《The Transformer Architecture: Attention Is All You Need》正是该领域的经典论文标题!在后续课程中我们将对注意力机制进行详细分析;目前阶段,请掌握基础认识即可:该机制向模型传达信息,在处理每个单词时会着重关注输入句子中的特定词汇(同时可能忽略其余词汇)。

为将文本从英语转换为法语而进行的任务中涉及复杂的语法考量。给定输入"You like this course"作为输入句子,在处理"like"这个词时需要特别关注与之相连的主语"You"(因为法语中动词变位形式取决于主体身份),而其他部分对当前特定操作并不构成影响。同样,在处理"this"这个词时(尤其当其与名词'course'产生关联时),模型也需要特别注意名词的性别特征(因为'this'在其与不同类型的名词结合时会采用不同的形式)。对于包含更多复杂语法现象和更高难度语言规则的句子结构(如涉及较远的位置上的单词),模型则需更加谨慎地分析每个可能影响译码结果的关系词及其位置关系以确保准确无误地完成翻译任务

这一概念同样适用于自然语言处理的任务中。每个单独的单词都承载着自身的意义。然而这种意义高度依赖于背景信息。而这些背景信息可能出现在被研究词的前后位置,并不局限于单一出现的情况。

现在你对注意力层有了一定的掌握程度,在此基础上让我们进一步深入探讨Transformer架构的内在机制

The original architecture

最初的Transformer架构旨在用于机器翻译任务。在训练阶段, 编码器接收输入文本块, 而解码器则处理的目标语言输出段落与输入段落保持一致。通过自注意力机制的作用域特性, 在编码器中每个词的位置都可以与其他所有词的位置产生关联, 从而实现跨位置信息的有效传播和语义关系的学习。然而, 解码器的工作流程是按序进行的, 仅能处理当前生成序列内的词汇信息, 即不能访问尚未生成的部分内容以避免对未来输出结果产生干扰影响。例如, 当模型已生成并输出了三个目标语言词汇后, 我们会将这些预测结果传递给解码器作为后续预测的基础依据

为了在训练过程中提升训练效率(当模型能够访问目标句子时)

原始的Transformer架构看起来像这样,左边是编码器,右边是解码器:

注意:解码器块中的第一个注意力层专注于所有过去的输入信息,并通过此方式实现与编码器输出的有效结合。同时第二个注意力层利用编码器的输出来生成解码器后续处理所需的信息。从而可以访问整个输入句子以便最佳地预测当前单词。这种机制非常有用因为不同的语言可能存在不同的语法规则将单词放置在不同的顺序上或者在稍后上下文中某些信息有助于确定给定单词的最佳翻译。

注意力掩码(attention mask)也可以在编码器/解码器中应用以防止模型专注于特定的术语或标记例如,在批量处理句子时通过引入特殊的填充词使得所有输入序列达到一致长度从而减少模型对异常数据的过度关注

Architectures vs. checkpoints

当深入研究Transformers课程时,在学习过程中可能会遇到 architecturescheckpointsmodels 这些术语所代表的意义也有所不同。

在该领域中认为Architecture是模型的基础架构,在此过程中构建了各个层次以及内部操作的具体结构

Checkpoints :这些是将在给定架构中加载的权重。

Model :这是一个不太准确的术语,并非一个精确且严谨的表述方式。它可以代表两种不同的概念或情况。本课程会在关键节点明确指出具体的架构或检查点位置,并采取相应的措施来避免歧义的发生。

举个例子来说吧,在机器学习领域中

全部评论 (0)

还没有任何评论哟~