Transformer论文
Transformer概述
对于RNN,由于当前输入依赖于上一个输出,所以存在 不能并行处理 的问题。
Trasnformer是完全基于自注意力机制的一个深度学习模型,可以并行化计算。
Trnsformer最早用在翻译任务上,是一个Encoder-Decoder(编码器,解码器)的结构。
Transformer应用场景
Transformer适合序列到序列的任务,比如机器翻译,文本的情感分析,看图说话等。
Transformer的输入
不用 独热编码One-Hot Encoding的原因:其一是表示出来的向量可能很长,其二是不能表达词与词之间的关系。
词向量嵌入Word Embedding
另一种词的表示方法,能够体现词与词之间的关系。通过将词映射为连续的向量,使得语义上相似的词在向量空间中的位置相近,从而捕捉到了词之间的语义关系。
常用的词嵌入模型
词嵌入模型: 利用深度学习方法,通过训练大规模语料库来学习词的向量表示。这些模型,如Word2Vec和GloVe等,能够捕捉词的语义和语法信息,将词表示为高维空间中的向量。
word2vec模型包括连续词袋CBOW算法、跳字Skip-Gram算法。
位置编码Positional Encoding
对每个词加一小块它在句子中的位置信息,这"一小块信息"叫做位置编码。
那么具体该怎么做?我们通常容易想到两种方式:
①通过网络自己学习出来
②定义函数,代入公式计算出位置信息
Transformer 的作者对以上两种方式都做了探究,发现最终效果相当,于是采用了第2种方式,从而减少模型参数量,同时还能适应即使在训练集中没有出现过的句子长度。
最终输入
把位置编码Positional Encoding与embedding的值相加,作为输入。
注意力机制
注意力机制源于人对于外部信息的处理能力。由于人每一时刻接受的信息都是庞大且复杂的,远超过人脑的处理能力,因此人在处理信息的时候,会将注意力放在需要关注的信息上,对于其他无关的外部信息进行过滤,这种处理方式被称为注意力机制。
自注意力机制(Self-Attention)
在中译英Encoder-Decoder模型中,查询Query和键Key都是Encoder中的元素,即查询和键都是中文特征,相互之间做注意力汇聚。也可以理解为同一句话中的词元或者同一张图像中不同的patch,这都是一组元素内部相互做注意力机制,捕捉数据或特征的内部相关性。
自注意力机制在文本中的应用,主要是通过计算单词间的互相影响,来解决长距离依赖问题。
输入序列→token→Embedding向量→Q、K、V向量
每个token的Embedding向量分别做3次线性变换获得Q、K、V矩阵。
注意力公式:
注意力机制具体运算过程:
多头注意力机制(Multi-Head Attention)
本质在Embedding空间中语义结构的多样性。
具体运算过程:
Attention机制实际上是被分配到了8个头head之中去分别运行了。每一个头在各自运行之后,再通过Concat把得到的结果链接起来,然后做一次线性变换(通过
W
O
W^O
WO矩阵,右上角码“O”,意为输出“Output”的意思),变回初始的形状。
将每个头的运算输出进行concat连接后与矩阵 W O W^O WO线性变换得到输出 Z Z Z,最终的Z就作为前馈神经网络的输入:
Layer Normalization层归一化
与Batch Normalization(BN),不一样的是:
BN是在特征维度上进行标准化(均值为0,方差为1),对应上图蓝色
层归一化是在batch维度上,对应上图黄色