Transformer结构笔记

Transformer本身是一个典型的encoder-decoder模型。

一、Encoder端&Decoder端总览

简单来看一个编码器和一个解码器的作用。
在这里插入图片描述
Encoder端由N(原论文中N=6)个相同的大模块堆叠而成。
Decoder端同样由N(原论文中N=6)个相同的大模块堆叠而成。
在这里插入图片描述

但是两个模块的组成有所不同。
左:Encoder 右:Decoder
左:encoder 右:decoder
Encoder端每个大模块又由 个子模块构成,这两个子模块分别为多头self-attention模块,以及一个前馈神经网络模块。

Encoder端每个大模块接收的输入是不一样的:

(1)第一个大模块接收的输入是输入序列的embedding(embedding可以通过word2vec预训练得来)
(2)其余大模块接收的是其前一个大模块的输出
(3)最后一个模块的输出作为整个Encoder端的输出。

Decoder端每个大模块由 个子模块构成,这三个子模块分别为多头self-attention模块、多头Encoder-Decoder attention 交互模块,以及一个前馈神经网络模块。

Decoder端第一个大模块训练时和测试时接收的输入是不一样的,并且每次训练时接收的输入也是不一样的(shifted right)。

二、Encoder端各个子模块

2.1多头注意力模块

缩放点乘积注意力(常用)
在这里插入图片描述
多头注意力模块,例如八头。

是把同一个词向量初始化八组不同的QKV。
对每组QKV做    attention    计算,再把结果拼接起来。
最后送入一个全连接层。

在这里插入图片描述
多头注意力的作用:学习不同的表征子空间。

2.2前馈神经网络模块

前馈神经网络模块(即图示中的Feed Forward)由两个线性变换组成,中间有一个ReLU激活函数。

对于激活函数不了解的可以看这个博客

三、Decoder端各个子模块

3.1多头注意力模块

在这里插入图片描述
从图中可以看到,Decoder端的多头self-attention相对于Encoder端的多头注意力模块多了一步mask

因为它在预测时,是“看不到未来的序列的”,所以要将当前预测的单词(token)及其之后的单词(token)全部mask掉。

3.2多头Encoder-Decoder attention 交互模块

在这里插入图片描述
从形式来看

多头Encoder-Decoder attention 交互模块与多头self-attention模块是一致的。

唯一不同的是其Q,K,V矩阵的来源:
	其Q矩阵来源于下面子模块的输出(对应到图中即为masked多头self-attention模块经过Add&Norm后的输出)
	而K,V矩阵则来源于整个Encoder端的输出
	
目的:在于让Decoder端的单词(token)给与Encoder端对应的单词(token)“更多的关注(attention weight)”。

3.3 前馈神经网络模块

与Encoder端一致。

四、其他模块

4.1 Add&Norm模块

Add&Norm模块接在Encoder端和Decoder端每个子模块的后面。

Add模块

Add表示残差连接。

Norm模块

Norm表示LayerNorm(LN),层归一化。

因此这个模块的实际输出为

LayerNorm( x + Sublayer(x) )--------Sublayer(x)为子模块的输出。

4.2 Position Encoder

使用原因: transformer模型的attention机制并没有包含位置信息,即一句话中词语在不同的位置时在transformer中是没有区别的。

位置编码:Position Encoder,维度和embedding的维度一样,这个向量采用了一种很独特的方法来让模型学习到这个值,这个向量能决定当前词的位置。
在这里插入图片描述
论文中以以上方法计算。

其中,PE为二维矩阵,大小跟输入embedding的维度一样。

参考博客:

PE,位置编码
Transformer关键
图解Transformer

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值