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

Transformer 模型和 BERT 模型:概述

语言模型发展历程Language modeling history

多年来,语言建模一直在不断发展。过去十年的最新突破,包括使用神经网络来表示文本,比如2013年的Word2vec和N元语法,2014年开发的序列到序列模型,如RNN和LSTM帮助提高机器学习模型在NLP任务上的性能,例如翻译和文本分类,2015年注意力机制以及以注意力机制为基础的模型,如Transformer和BERT模型引起了广泛的热议。

Transformer基于2017年发布的一篇论文 《Attention is All You Need》

https://goo.gle/attentionpdf

文本呈现问题Problem of text presentation

尽管在Transformer之前的所有模型都能将单词表示为矢量,但这些矢量不包含上下文,单词的用法会随着上下文而变化。例如,river bank中的bank(河岸),与bankrobber中的bank(银行),两者可能会有相同的失量表示,以上这种情形存在于注意力机制面世之前。

Transformer是一种编码器-解码器模型A transformer is an encoder-decoder model

Transformer是一种使用注意力机制的编码器-解码器模型,它可以利用并行功能的优势,还可以同时处理大量数据,这是由其模型架构的特点决定的。

Transformer模型Transformer model

注意力机制有助于提高机器翻译应用的性能,Transformer模型是以注意力机制为核心而构建的。

Transformer模型由编码器和解码器组成,编码器对输入序列进行编码,再将它传递给解码器,然后解码器对表示形式进行解码,以完成相关的任务。

编码组件是相同数量的一些编码器组成的,以上提到的介绍Transfommer的研究论文中有六个编码器堆叠在一起,六不是一个神奇的数字,而仅仅是一个超参数。

编码器在结构上完全相同,但权重不同。每个编码器可以细分为两个子层,第一层称为自注意力层,编码的输入首先流经自注意力层,该层在对输入句子的中心单词进行编码时,会对单词的相关部分进行编码或查看。第二层称为前馈层,自注意力层的输出被馈送到前馈神经网络,完全相同的前馈神经网络独立应用于每个位置。解码器既有自注意力层,也有前馈层,但在两者之间还有一个编码器/解码器注意力层,用于帮助解码器专注于输入句子的相关部分。

在输入序列中嵌入单词后,每个嵌入矢量都流经编码器的两层,每个位置的单词都经过一个自注意力进程,然后再通过一个前馈神经网络,也就是每个矢量都分别流经的完全相同的网络。自注意力层中的这些路径之间存在依赖关系,但是,前馈层没有这些依赖关系。因此各种路径在流经前馈层时,可以并行执行。

在自注意力层中,输入嵌入被分解为查询矢量、键矢量和值矢量。这些矢量的计算基础是Transformer在训练过程中学习得来的权重。

所有这些计算在模型中以矩阵计算的形式并行发生。

一旦我们有了查询矢量、键矢量和值矢量,下一步就是将每个值矢量乘以softmax分数以准备对它们求和,这样做的目的是保持想要关注的单词的值不变,并通过将不相关的单词乘以很小的数。例如0.001,来降低它们的权重。

接下来我们必须对已经过加权计算的值矢量求和,从而生成自注意力层在该位置的输出。对于第一个单词,你可以将生成的矢量发送到前馈神经网络。

为了总结获得最终嵌入的这个过程,这里列出了我们采取的步骤,我们从自然语句开始嵌入句子中的每个单词

之后,计算多头注意力。图中示例中计算了八次,将嵌入的单词与各自的加权矩阵相乘,然后使用生成的QKV矩阵计算注意力。

最后,我们可以将这些矩阵串联以生成输出矩阵,这个输出矩阵与自注意力层最初得到的最终矩阵具有相同的维度。

预训练Transformer 模型Pre-trained transformer models

现在Transformer有多种变体版本,有些同时使用原始架构中的编码器和解码器组件。有些只使用编码器,而有些只使用解码器。

BERT 模型BERT model

一种流行的仅编码器架构是BERT,BERT是经过训练的Transformer模型之一,BERT代表Bidirectional Encoder Representations from Transformers,由Google于2018年开发。

从那以后,BERT诞生了多个变体版本。今天,BERT为Google搜索提供支持,我们可以看出,对于同一个搜索查询,在有BERT之前和之后的结果是多么地不同。

BERT 概述BERT overview

BERT的训练涉及到两个变体版本,一个模型包含BERT Base,它有12个Transformer,大约有1.1亿个参数,另一个模型包含BERT Large,有24层Transformer,有大约3.4亿个参数。BERT模型之所以强大,是因为它可以处理长输入上下文,它的训练以整个维基百科语料库以及BookCorpus为基础。BERT模型的训练经过了100万步,BERT接受了不同任务的训练,这意味着它具有多任务目标,这就是BERT如此强大的原因,因为它经受了多种任务的训练,它既适用于句子级别,也适用于词元级别。

BERT 版本BERT versions

这是最初发布的BERT的两个不同版本,一个是BERT Base,它有12层,另一个BERT Large则有24层,而原始的Transformer则仅有6层。

掩码语言建模Masked language modeling(MLM)

BERT经受了两种不同任务的训练,任务一称为掩码语言模型,在该任务中,句子被遮盖,模型经过训练来预测被遮盖的单词,如果你要从头开始训练BERT,则必须遮盖语料库中一定比例的单词推荐的遮盖百分比是15%,遮盖百分比要在遮盖太少和过多之间取个平衡值,遮盖太少会使训练过程的成本特别高,而遮盖太多则会失去模型所需的上下文。

下一句预测Next sentence prediction(NSP)

任务二是预测下一个句子,例如,给模型两组句子,BERT的目标是学习句子之间的关系,并根据第一个句子,预测下一个句子。例如,句子A可以是“一个人去了商店”,句子B是“他买了一加仑牛奶”,BERT负责分类判断,句子B是否是句子A之后的下一个句, 这是一个二元分类任务,有助于BERT在句子级别执行任务。

BERT 输入嵌入BERT input embeddings

为了训练BERT,对于输入的句子,你需要给模型提供三种不同的嵌入,嵌入有3种不同的类型,词元嵌入、片段嵌入和定位嵌入,词元嵌入是每个词元在输入语句中的嵌入表示,单词会转换为特定维度的矢量表示,BERT也可以解决。涉及文本分类的NLP任务,一个例子是判断两个句子的语义是否相似,例如“我的狗很可爱”和“他喜欢玩”,输入文本对会简单地串联起来并馈送给模型,BERT如何区分给定的成对文本中的输入?答案是使用片段嵌入。

有一个由SEP表示的特殊词元,用于分隔句子的两个不同分块,另一个问题是学习句子中单词的顺序,BERT由一些Transformer组成,BERT可处理长度达到512的输入序列,输入序列的顺序信息被纳入定位嵌入中,这使得BERT可以学习每个位置的矢量表示。

BERT可用于各种下游任务,尽管BERT接受的是大规模语言建模培训以及单句分类训练,它仍可用于常见NLP任务,例如句对分类、问答以及单句标记任务。


http://www.kler.cn/news/335142.html

相关文章:

  • Python机器学习模型的部署与维护:版本管理、监控与更新策略
  • SpringCloudAlibaba的nacos启动注册实现
  • C0007.Clion中添加ui文件及运行的完整步骤
  • MySQL深度分页
  • TypeScript编译选项
  • 用人工智能写作:专业作家利用 ChatGPT 的五种方式 ✍️
  • 文心智能体——制作你的专属AI
  • 前缀和(8)_矩阵区域和
  • 如何降低实施APS的复杂性
  • zy89、90_C#中字符串及控制字符串的常用函数
  • windows C++-使用任务和 XML HTTP 请求进行连接(一)
  • 「OC」多线程的学习——NSThread
  • C语言 | Leetcode C语言题解之第449题序列化和反序列化二叉搜索树
  • 【Conda】修复 Anaconda 安装并保留虚拟环境的详细指南
  • Spring的热部署工具和数据库密码加盐操作
  • paper_template
  • 深度学习-20-深入理解基于Streamlit和minimind小模型开发本地聊天工具
  • 系统架构设计师⑦:企业信息化战略与实施
  • 第三十五章 结合加密和签名
  • 第二十三章-容器控件QTabWidget