Attention is All You Need -- 浅析

       由于最近bert比较火热,并且bert的底层网络依旧使用的是transformer,因此再学习bert之前,有必要认真理解一下Transformer的基本原理以及self-attention的过程,本文参考Jay Alammar的一篇博文,翻译+学习

原文链接:https://jalammar.github.io/illustrated-transformer/

 



       Transformer模型利用注意力机制来提高模型训练速度练。Transformer在特定任务中的性能优于谷歌的基于神经网络的翻译模型。然而,Transformer最大的好处是可以并行计算。

       整个模型如果用黑盒的视角来看的话,将一句话输入到Transformer模型中,它的输出将是该句的翻译。

       将这个黑盒打开,我们可以看到一组编码器和一组解码器: 


       整个Encoders是由6个相同的encoder组成,数字6没有什么特殊的含义,并且能够尝试一下其他的组合。同样,Decoders组件是一堆相同数量的decoder组成。 

       编码器在结构上都是相同的(但它们不共享权重)。每一个被分解成两个子层: 

        一个self-attention层和一个feed forwoard network,Encoder的输入首先通过一个self-attention层,这个层的作用是在处理一个特定单词的时候,编码器也能照顾到句子中的其他单词(作用类似与RNN的记忆传播功能)。我们将在稍后的文章中更深入地研究self-attention。self-attention的输出被输入到前馈神经网络。每个位置的前馈网络完全相同,但是相互是独立的

解码器也有这两层,但在这两层之间是一个Encoder-Decoder-attention层,它帮助解码器将注意力集中在输入句子的相关部分(类似于注意在seq2seq模型中所做的事情)。

 

 Bringing The Tensors Into The Picture

 

        现在我们已经了解了模型的主要组件,让我们开始研究各种向量/张量,以及它们如何在这些组件之间流动,从而将训练好的模型的输入变成输出。
        与NLP应用程序中的一般情况一样,我们首先使用Embedding算法将每个输入单词转换为一个向量。

       Embedding只作用在最底层的编码器中。所有编码器都会接收到一个embedding vector,每个vector的大小都是512,对于Encoder的最底层,其输入是embedding矩阵,但是对于其他层编码器,其输入是下面的编码器的输出。这个embedding vector的超参数是自定义的,基本上就是我们的训练数据集中最长句子的长度。
       在输入序列进行word embedding之后,每个单词都流经编码器的两层。

 

       在这里&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值