不得了的Transformer模型(一)简单介绍

一、Transformer模型的简单介绍

Transformer是由大厂Google发布的,完全基于attention机制的强大的模型,它的出现使的机器翻译等领域出现了突破性的进展。我们可以通过《Attention Is All Y ou Need》论文来了解这个强大的模型到底是个啥。

二、Transformer模型的结构

2.1 Encoder and Decoder stacks

                                                                                 图1 transformer结构图

上图是transformer中的encoder和decoder结构,其中左边为encoder,右边为decoder,下面我们分别来介绍一下encoder和decoder。

2.1.1 Encoder

图1左表示encoder结构,对于图中的每一个部件进行分析介绍:

    N:表示的是encoder的层数,论文中设置N=6。

    Multi-Head Attention:表示的多头注意力机制,论文中设置为head=8。该网络结构在下面将详细介绍。

    Add & Norm:这里表示的是残差连接和层归一化。

    Feed Forward:在这里是一个全连接层的操作。

具体运算在下文详细介绍。

2.1.2 Decoder

图1右表示decoder结构,我们可以发现该结构和encoder十分相似

    N:表示的是decoder的层数,论文中设置N=6。

    Masked Multi-Head Attention:表示掩码的多头注意力机制,论文中设置为head=8。该网络结构与Multi-Head Attention有一定的区别,下文后详细讲解。

    Add & Norm:这里表示的是残差连接和层归一化。

    Multi-Head Attention:表示的多头注意力机制,论文中设置为head=8。

    Feed Forward:在这里是一个全连接层的操作。

2.2 Multi-Head Attention

2.2.1 Scaled Dot-Product Attention

                                                                         图2 Scaled Dot-Product Attention

这里就是计算attention的地方,我们通过图可以看到,输入为Q,K,V。这里的Q和K首先进行了一个MatMul操作(向量点积),之后进行Scale操作(再乘以一个因子\frac{1}{\sqrt{d{k}}}),然后在进行一个Softmax变换,最终得到的矩阵再与V进行MatMul操作。完整公式如下:

                                                                                          公式一

而到这里我们就要想到,transformer里面使用的是多头注意力机制,上面的公式其实就是其中一个头的计算方法,我们只需要将8(这里head = 8)个Attention(Q,K,V)计算出来然后进行一个Concat拼接。然后得到最终的attention。如图3所示。

2.2.2 Multi-Head Attention

                                                                                   图3 多头注意力机制

                                                                                           公式二

图3中的Scaled Dot-Product Attention就是图2的讲解。这里的h就是多头注意力机制中的“头”。那么具体是怎么进行分头的呢。我们根据公式二举一个例子。假设我们的embedding是512维,也就是h*dv=512,那么我们在准备计算attention的时候,我们将Q,K,V分别切成了8份,对每一份进行一个Scaled Dot-Product Attention操作,然后最终得到的8个矩阵进行一个Concat操作(即)拼接起来,最终得到了h*dv维度的数据,也就是一开始输入的embedding维度512维。具体细节在下文介绍。

2.2.3 Masked Multi-Head Attention

                                                                                  图 4 Masked Multi-Head Attention

我们可以看到图4与图3的区别就在于多了个Masked操作。为什么我们要进行一个Masked操作(一个上三角矩阵)呢,因为这是当前所处的位置是decoder,我们在训练的时候要求当前位置只能看到之前的部分,而无法看到之后的部分,然后由于我们在训练的过程中的输入是并行发生的,所以我们要将当前位置之后的部分掩盖掉,防止出现训练作弊的情况。详细解说见下文。

 

以上就是transformer模型的网络结构的讲解,仅代表个人的一些理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值