Transformer原理讲解

前言

Transformer是谷歌2017年发表的论文《Attention Is All You Need》中提出的,用于NLP的各项任务,其引入了自注意力机制(self-attention mechanism),具有长距离依赖关系建模、并行计算能力和通用性能的优点,已广泛应用于系列数据的处理。在本文中,我们将从Transformer的整体框架、Encoder的结构和输入输出、Decoder的结构和输入输出等方面,详细讲解Transformer的原理。

一、Transformer的整体架构

在机器翻译中,Transformer可以将一种语言翻译成另一种语言,如果把Transformer看成一个黑盒,那么拆开这个黑盒,那么可以看到Transformer由若干个编码器和解码器组成(原论文中分别有6个),如下图所示:

下面给出Transformer论文中的整体框架图:

可以看到Encoder包含一个Multi-Head Attention模块(是由多个Self-Attention组成),而Decoder包含两个Multi-Head Attention。Multi-Head Attention上方还包括一个 Add & Norm 层,Add 表示残差连接 (Residual Connection) ,用于防止网络退化,Norm 表示 Layer Normalization,用于对每一层的激活值进行归一化。

Transformer的工作流程如下:

第一步:获取输入句子的每一个单词的表示向量 x, 由单词的Embedding和单词位置Embedding 相加得到。

第二步:将单词向量矩阵传入Encoder模块,经过N个Encoder后得到句子所有单词的编码信息矩阵 C,如下图:

输入句子的单词向量矩阵用X\in \mathbb{R}^{n\times d},其中 n是单词个数, d表示向量的维度(论文中 d=512)。每一个Encoder输出的矩阵维度与输入完全一致

第三步:将Encoder输出的编码矩阵 C 传递到Decoder中,Decoder会根据当前翻译过的单词 1\sim i 翻译下一个单词 i+1,如下图所示:

上图Decoder接收了Encoder的编码矩阵,然后首先输入一个开始符 "<Begin>",预测第一个单词,输出为"I";然后输入翻译开始符 "<Begin>" 和单词 "I",预测第二个单词,输出为"have",以此类推。这是Transformer的大致流程,接下来介绍里面各个部分的细节。

二、Encoder

下图中红色方框内的部分,即为编码器:

2.1 输入

Encoder中的输入由单词Embedding位置Embedding(Positional Encoding)相加得到:

2.1.1 单词Embedding

单词的Embedding可以通过Word2vec等模型预训练得到,可以在Transformer中加入Embedding层,主要的表现形式为将输入的句子Embedding为矩阵,句子中的每个单词Embedding为向量

2.1.2 位置Embedding

Transformer 中除了单词的Embedding,还需要使用位置Embedding 表示单词出现在句子中的位置。因为 Transformer不采用RNN结构,而是使用全局信息,不能利用单词的顺序信息,而这部分信息对于NLP来说非常重要。所以Transformer中使用位置Embedding保存单词在序列中的相对或绝对位置。

位置Embedding用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值