Transformer模型:Attention is All you need

目录

一、Transformer框架

1、Self-Attention 

2、Multi-Head Attention

3、Encoder-Decoder Attention

4、Feed Forward Neural Network

二、位置编码


Attention机制,将序列中的任意两个位置之间的距离是缩小为一个常量;其次它不是类似RNN的顺序结构,因此具有更好的并行性,符合现有的GPU框架。Transformer中抛弃了传统的CNN和RNN,整个网络结构完全由且仅由self-Attenion和Feed Forward Neural Network组成,解决了LSTM的限制问题。

一、Transformer框架

Transformer本质上是一个Encoder-Decoder的结构,Encoder由Self-Attention、Feed Forward neural network组成,Decoder由Self-Attention、Encoder-Decoder Attention、Feed Forward neural network组成,整个网络机构完全由attention机制组成。 

1、Self-Attention 

self-Attention核心内容是为输入向量的每个单词学习一个权重,例如在下面的例子中我们判断it代指的内容:"The animal didn't cross the street because it was too tired"。通过加权之后可以得到类似下图的加权情况

计算方法如下:

 公式计算方法理解:

transformer的输入首先通过Word2Vec等词嵌入方法将输入语料转化成特征向量,论文中使用的词嵌入的维度为 512。

在self-attention中,每个单词有3个不同的向量,它们分别是Query向量(Q),Key向量(K)和Value向量(V),长度均是64。它们由嵌入向量X乘以三个不同的权值矩阵 得到,其中三个矩阵的尺寸也是相同的,均是 512*64。

 attention的计算方法示例:

Query,Key,Value的概念取自于信息检索系统,举个简单的搜索的例子来说。当你在某电商平台搜索某件商品(年轻女士冬季穿的红色薄款羽绒服)时,你在搜索引擎上输入的内容便是Query,然后搜索引擎根据Query为你匹配Key(例如商品的种类,颜色,描述等),然后根据Query和Key的相似度得到匹配的内容(Value)。self-attention中的Q,K,V也是起着类似的作用,在矩阵计算中,点积是计算两个矩阵相似度的方法之一,因此公式中使用了 QK进行相似度的计算,接着便是根据相似度进行输出的匹配,这里使用了加权匹配的方式,而权值就是query与key的相似度。

2、Multi-Head Attention

Multi-Head Attention相当于h个不同的self-attention的集成(ensemble),在这里我们以h=8举例说明。

  1. 将数据X分别输入到图中所示的8个self-attention中,得到8个加权后的特征矩阵 
  2. 将8个特征矩阵按列拼成一个大的特征矩阵;
  3. 特征矩阵经过一层全连接后得到输出Z。

3、Encoder-Decoder Attention

 在解码器中,Transformer block比编码器中多了个encoder-cecoder attention。在encoder-decoder attention中,Q来自于解码器的上一个输出,K 和 V 则来自于与编码器的输出。其计算方式和attention的计算过程相同。

4、Feed Forward Neural Network

这个全连接有两层,第一层的激活函数是ReLU,第二层是一个线性激活函数,可以表示为:

二、位置编码

 Transformer模型并没有捕捉顺序序列的能力,也就是说无论句子的结构怎么打乱,Transformer都会得到类似的结果。

为了解决这个问题,论文中在编码词向量时引入了位置编码(Position Embedding)的特征。具体地说,位置编码会在词向量中加入了单词的位置信息,这样Transformer就能区分不同位置的单词了。

位置编码的维度和词嵌入向量的维度相同,模型的输入为位置编码向量和词嵌入向量加和。论文中给出的编码公式如下,pos是单词的位置,i是单词的维度:

参考文献:

Attention Is All You Need 

The Illustrated Transformer: http://jalammar.github.io/illustrated-transformer/

https://zhuanlan.zhihu.com/p/48508221

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值