Skip to content

Transformer

📅 发表于 2018/08/29
🔄 更新于 2018/08/29
👁️ 次访问
📝 0 字
0 分钟
自然语言处理
#Transformer
#Self-Attention
#多头注意力
#残差连接
#层归一化
#位置编码
#机器翻译
#论文笔记

大名鼎鼎的Transformer,Attention Is All You Need

Transformer概览

论文结构

总览结构

图解总览

其实也是一个Encoder-Decoder的翻译模型。

由一个Encoders和一个Decoders组成。

Encoders由多个Encoder块组成。

Encoder

总体结构

1个Encoder由Self-Attention和FFN组成

一个Encoder的结果再给到下一个Encoder

Encoder-Decoder

编码实例

对一个句子进行编码

Self-Attention会对每一个单词进行编码,得到对应的向量。x1,x2,x3z1,z2,z3,再给到FFN,会得到一个Encoder的结果r1,r2,r3, 再继续给到下一个Encoder

Attention

Self-Attention

1. 乘以3个矩阵生成3个向量:Query、Key、Value

2. 计算与每个位置的score

编码一个单词时,会计算它与句子中其他单词的得分。会得到每个单词对于当前单词的关注程度。

3. 归一化和softmax得到每个概率

4. 依概率结合每个单词的向量

Attention图示

矩阵形式

其实就是一个注意力矩阵公式

多头注意力

其实就是多个KV注意力。从两个方面提升了Attention Layer的优点

  • 让模型能够关注到句子中的各个不同位置
  • Attention Layer可以有多个不同的表示子空间representation subspaces

多头注意力矩阵形式

经过多头注意力映射,会生成多个注意力Z0,Z1,,Z7

把这些注意力头拼接起来,再乘以一个大矩阵,最终融合得到一个信息矩阵。会给到FFN进行计算。

注意力总结

Attention图示

前向神经网络

Position-wise Feed-Forward Network,会对每个位置过两个线性层,其中使用ReLU作为激活函数。

FFN(x)=Linear(ReLU(Linear(x)))=max(0,xW1+b1)W2+b2

位置编码

词向量+位置信息=带位置信息的词向量

PE(pos,2i)=sin(pos/100002id)PE(pos,2i+1)=cos(pos/100002id)

示例

再把sin和cos的两个值拼接起来,就得到如下图所示。

Encoder-Block

残差连接

层归一化

层归一化

总览

Decoder

单步

多步

Linear-Softmax

模型样例

总访客数:   ·   总访问量:
PLM's Blog @ 2016 - 2025