Transformer工作原理及源码解析

Tansformer架构

网络结构

在这里插入图片描述

下面结合具体案例进行网络结构参数,其中案例以机器翻译为例:将“我有一只猫”翻译成“I have a cat <end>”。

输入Embedding

在Transformer中对于输入的序列“我 有 一只 猫”进行Embedding操作,得到输入序列的向量XXX,其中XXX由嵌入Word Embedding和位置嵌入Positional Embedding两个操作得到的向量进行点加而成。
在这里插入图片描述

  • ** Word Embedding**: 词嵌入方式可以采用 Word2Vec、Glove 等算法预训练得到,也可以在 Transformer 中训练得到。其中自训练的方式实际上就是采用OneHot编码+一系列全连接层得到的。
  • Positional Embedding: 位置编码采用的是以下公式,其中dmodel是向量的维度,从公式中可以看出,位置向量中偶数维为sin函数,奇数维为cos函数。

PE(pos,2i)=sin(pos100002idmodel)PE(pos, 2i)=sin(\frac{pos}{10000^{\frac{2i}{d_{model}}}})PE(pos,2i)=sin(10000dmodel2ipos)
PE(pos,2i+1)=cos(pos100002idmodel)PE(pos, 2i+1)=cos(\frac{pos}{10000^{\frac{2i}{d_{model}}}})PE(pos,2i+1)=cos(10000dmodel2ipos)

注意:

  • 为什么需要Position Embedding?
    Transformer结构中采用了若干个注意力机制单元,而注意力机制单元与RNN网络单元而言,未考虑序列的位置信息,因此通过Positional Embedding操作,加入位置信息。

  • 为什么采用上面公式进行位置编码?
    Positional Embedding不仅仅需要将位置转变成向量,同时相对位置信息通过编码的向量也能同样得到表征,如下图所示,pospospos相对位置kkk的位置向量可以通过posposposkkk的位置向量的线性组合得到,即 555的位置向量可以由111444或者222333的位置向量线性组合得到。

    公式中 PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i)=PE(pos,2i)\times PE(k,2i+1)+PE(pos,2i+1)\times PE(k,2i)PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)2i+12i+12i+1的原因是,因为cos()cos()cos()函数对应的是奇数维度。
    在这里插入图片描述

编码器Encoder

在这里插入图片描述

在Transformer中编码器由NNN个编码器单元组成,其中默认N=6N=6N=6。对于输入Embedding之后的词向量XXX,经过6个编码单元输出新的向量。
对于每一个编码单元包含两个核心层** Multi-Head Attention** 和 Feed Forward,两个核心层输出时都会进行残差连接和归一化,即Add & Norm

Attention机制:

注意力机制:定义QQQKKKVVV三个序列向量,计算注意力向量V′V'V。记序列中第iii个词对应的QiQ_iQiKiK_iKiViV_iVi,计算对应的注意力向量Vi′V_i'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值