Transformer个人理解

前言
Transformer是谷歌在17年发表的Attention Is All You Need 中使用的模型,经过这些年的大量的工业使用和论文验证,在深度学习领域已经占据重要地位。Bert就是从Transformer中衍生出来的语言模型。我会以中文翻译英文为例,来解释Transformer输入到输出整个流程。
1、Transformer整体结构图
在这里插入图片描述
Transformer 是 seq2seq 模型,分为Encoder(编码器)和Decoder(解码器)两大部分。如上图,Encoder部分是由6个相同的encoder组成,Decoder部分也是由6个相同的decoder组成,与encoder不同的是,每一个decoder都会接受最后一个encoder的输出。
2 Transformer Encoder部分
2.1、 Encoding输入部分(Positional Encoding)
在这里插入图片描述
首先,我们需要把输入的文字进行Embedding,每一个字(词)用一个向量表示,称为字向量,一个句子就可以用一个矩阵表示。然后把字向量加上位置信息得到Encoder的输入α矩阵。(位置信息Positional Encoding是固定公式计算出来的,值不会改变,每次有数据来了直接加上Positional Encoding矩阵就行)

为什么需要在Embedding加上Positional Encoding?
与RNN相比,RNN是一个字一个字的输入,自然每个字的顺序关系信息就会保留下来。但在Encoder中,一个句子的每一个字(词)是并行计算的(下一节解释),所以我们在输入的时候需要提前引入位置信息;下面是Positional Encoding的公式:
在这里插入图片描述

2.2 Self Attention Mechanism
思想:先计算出第一个字与句子中的每一个字的注意力分数(包括第一个字),再用计算出的注意力分数乘以对应字的信息,然后加在一起,得到的结果就是第一个字与句子中所有字的加权和,依次更新每一个字与句子的注意力信息。
2.2.1 注意力机制
在这里插入图片描述
在这里插入图片描述
???过程还是不理解???
2.2.2 矩阵思想计算注意力机制
在这里插入图片描述
2.3 Add & Layer normalization
在这里插入图片描述现在解释蓝色圈起来的部分,Add是用了残差神经网络的思想,也就是把Multi-Head Attention的输入的 a 矩阵直接加上Multi-Head Attention的输出b矩阵(好处是可以让网络训练的更深)得到的和***b*矩阵,再在经过Layer normalization(归一化,作用加快训练速度,加速收敛)把 b 每一行(也就是每个句子)做归一为标准正态分布。
2.4 Feed Forward前馈神经网络
把Add & Layer normalization输出
b
,经过两个全连接成,再经过Add & Layer normalization得到最后输出 O 矩阵。

3 Transformer Decoder(解码)部分
3.1 Decoder 输入
在这里插入图片描述
比如我们在中英文翻译时候,会先把"我是学生"整个句子输入到Encoder中,得到最后一层的输出后,才会在Decoder输入"S I am a student"(s表示开始),但是"S I am a student"这个句子我们不会一起输入,而是在T0时刻先输入"S"预测,预测第一个词"I";在下一个T1时刻,同时输入"S"和"I"到Decoder预测下一个单词"am";然后在T2时刻把"S,I,am"同时输入到Decoder预测下一个单词"a",依次把整个句子输入到Decoder,预测出"I am a student E"
在这里插入图片描述
Decoder 输入

如上图为了方便输入,我们会用一个Mask上三角矩阵来掩盖Decoder的输入,T0,T1,T2,T3,T4就是每个每个时刻的输入。

参考文献:本文来源于这篇文章,如看原文请点击此处即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值