Transformer Encoder 简介

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
简介: Transformer Encoder 简介

1.Bert 简介


BERT(Bidirectional Encoder Representation from Transformers)是2018年10月由Google AI研究院提出的一种预训练模型,该模型在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩: 全部两个衡量指标上全面超越人类,并且在11种不同NLP测试中创出SOTA表现,包括将GLUE基准推高至80.4% (绝对改进7.6%),MultiNLI准确度达到86.7% (绝对改进5.6%),成为NLP发展史上的里程碑式的模型成就。


BERT的网络架构使用的是《Attention is all you need》中提出的多层Transformer结构,如 图1 所示。其最大的特点是抛弃了传统的RNN和CNN,通过Attention机制将任意位置的两个单词的距离转换成1,有效的解决了NLP中棘手的长期依赖问题。Transformer的结构在NLP领域中已经得到了广泛应用。



2.BERT框架


BERT整体框架包含pre-train和fine-tune两个阶段。pre-train阶段模型是在无标注的标签数据上进行训练,fine-tune阶段,BERT模型首先是被pre-train模型参数初始化,然后所有的参数会用下游的有标注的数据进行训练。


ERT是用了Transformer的encoder侧的网络,encoder中的Self-attention机制在编码一个token的时候同时利用了其上下文的token,其中‘同时利用上下文’即为双向的体现,而并非想Bi-LSTM那样把句子倒序输入一遍。


在它之前是GPT,GPT使用的是Transformer的decoder侧的网络,GPT是一个单向语言模型的预训练过程,更适用于文本生成,通过前文去预测当前的字。


3.Embedding


Embedding由三种Embedding求和而成:


Token Embeddings是词向量,第一个单词是CLS标志,可以用于之后的分类任务

Segment Embeddings用来区别两种句子,因为预训练不光做LM还要做以两个句子为输入的分类任务


Position Embeddings和之前文章中的Transformer不一样,不是三角函数而是学习出来的


其中[CLS]表示该特征用于分类模型,对非分类模型,该符号可以省去。[SEP]表示分句符号,用于断开输入语料中的两个句子。


BERT在第一句前会加一个[CLS]标志,最后一层该位对应向量可以作为整句话的语义表示,从而用于下游的分类任务等。因为与文本中已有的其它词相比,这个无明显语义信息的符号会更“公平”地融合文本中各个词的语义信息,从而更好的表示整句话的语义。 具体来说,self-attention是用文本中的其它词来增强目标词的语义表示,但是目标词本身的语义还是会占主要部分的,因此,经过BERT的12层(BERT-base为例),每次词的embedding融合了所有词的信息,可以去更好的表示自己的语义。而[CLS]位本身没有语义,经过12层,句子级别的向量,相比其他正常词,可以更好的表征句子语义。


4.Transformer Encoder


BERT是用了Transformer的encoder侧的网络,如上图的transformer的Encoder部分,关于transformer的encoder的详细介绍可以参考链接:paddlepedia.readthedocs.io/en/latest/t…

在Transformer中,模型的输入会被转换成512维的向量,然后分为8个head,每个head的维度是64维,但是BERT的维度是768维度,然后分成12个head,每个head的维度是64维,这是一个微小的差别。Transformer中position Embedding是用的三角函数,BERT中也有一个Postion Embedding是随机初始化,然后从数据中学出来的。

BERT模型分为24层和12层两种,其差别就是使用transformer encoder的层数的差异,BERT-base使用的是12层的Transformer Encoder结构,BERT-Large使用的是24层的Transformer Encoder结构。


查文档,看源码,理解模型(Bert src/transformers/models)和具体实现方式

Models Datasets Docs Spaces  Solutions



目录
相关文章
|
1月前
|
机器学习/深度学习 XML 自然语言处理
Transformer 架构—Encoder-Decoder
Transformer 架构—Encoder-Decoder
157 1
|
机器学习/深度学习 自然语言处理 算法
Transformer 模型:入门详解(1)
动动发财的小手,点个赞吧!
13032 1
Transformer 模型:入门详解(1)
|
1月前
|
存储 缓存 分布式计算
You Only Cache Once:YOCO 基于Decoder-Decoder 的一个新的大语言模型架构
YOCO是一种新的解码器-解码器架构,旨在解决大型语言模型推理时的内存限制问题。通过只缓存一次键值对,YOCO显著减少了GPU内存占用,与Transformer相比,内存使用降低了约L倍。模型由自解码器和交叉解码器组成,自解码器使用滑动窗口注意力,而交叉解码器利用全局KV缓存。实验表明,YOCO在保持竞争力的性能同时,提高了推理速度,尤其是在处理长序列时。此外,YOCO还减少了预填充时间,提升了吞吐量。
87 3
|
1月前
|
机器学习/深度学习 自然语言处理 机器人
编码器-解码器(Encoder-Decoder)结构
编码器-解码器(Encoder-Decoder)结构
288 5
|
10月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【Transformer系列(5)】Transformer代码超详细解读(Pytorch)
【Transformer系列(5)】Transformer代码超详细解读(Pytorch)
410 1
【Transformer系列(5)】Transformer代码超详细解读(Pytorch)
|
10月前
|
机器学习/深度学习 自然语言处理 算法
【Transformer系列(1)】encoder(编码器)和decoder(解码器)
【Transformer系列(1)】encoder(编码器)和decoder(解码器)
2127 0
【Transformer系列(1)】encoder(编码器)和decoder(解码器)
|
1月前
|
机器学习/深度学习 算法 索引
Transformer中解码器decoder的详细讲解(图文解释)
Transformer中解码器decoder的详细讲解(图文解释)
295 0
Transformer中解码器decoder的详细讲解(图文解释)
|
6月前
|
机器学习/深度学习 人工智能 关系型数据库
简化版Transformer :Simplifying Transformer Block论文详解
在这篇文章中我将深入探讨来自苏黎世联邦理工学院计算机科学系的Bobby He和Thomas Hofmann在他们的论文“Simplifying Transformer Blocks”中介绍的Transformer技术的进化步骤。这是自Transformer 开始以来,我看到的最好的改进。
71 0
|
10月前
|
机器学习/深度学习 编解码 自然语言处理
ViT(Version Transformer)原始论文解读
虽然Transformer体系结构已经成为自然语言处理任务的事实上的标准,但它在计算机视觉方面的应用仍然有限。在视觉上,注意力要么与卷积网络结合应用
227 2
|
10月前
|
机器学习/深度学习 算法 PyTorch
【vision transformer】DETR原理及代码详解(一)
【vision transformer】DETR原理及代码详解
850 0