当前位置:   article > 正文

Pytorch之经典神经网络Transformer(一) —— Transformer()

transformer

Transformer是seq2seq结果,但是没有用到RNN,只是用到了attention和fc层

Transformer模型一出来之后效果就非常惊艳,直接完爆最好的RNN+attention,所以现在NLP的标配已经是Transformer(BERT)了,已经没有人用RNN了

什么是Transformer

       谷歌在2017年发表了一篇论文名字叫《Attention Is All You Need》,提出了一个只基于attention的结构来处理序列模型相关的问题,比如机器翻译。传统的神经机器翻译大都是利用RNN或者CNN来作为encoder-decoder的模型基础,而谷歌最新的只基于Attention的Transformer模型摒弃了固有的定式,并没有用任何CNN或者RNN的结构。该模型可以高度并行地工作,所以在提升翻译性能的同时训练速度也特别快。

      Transformer 在机器翻译任务上的表现超过了 RNN,CNN,只用 encoder-decoder 和 attention 机制就能达到很好的效果,最大的优点是可以高效地并行化。

transformer是在看自己和自己的相关性

Transformer模型结构

Transformer模型整体看上去看上去很复杂,其实这就是一个Seq2Seq的encoder-decoder,左边一个encoder把输入读进去,右边一个decoder得到输出

                        

Transformer 的 encoder 由 6 个编码器叠加组成,decoder 也由 6 个解码器组成

在 Encoder 中

  1. Input 经过 embedding 后,要做 positional encodings,
  2. 然后是 Multi-head attention,
  3. 再经过 position-wise Feed Forward,
  4. 每个子层之间有残差连接。

在 Decoder 中,

  1. 如上图所示,也有 positional encodings,Multi-head attention 和 FFN,子层之间也要做残差连接,
  2. 但比 encoder 多了一个 Masked Multi-head attention,
  3. 最后要经过 Linear 和 softmax 输出概率。



Positional Encoding

Transformer没有用RNN/CNN,这意味着它是对每个位置都输出的东西。但是Transformer的一个非常重要的创新点就是使用了positional encoding, 对不同的位置进行了一定程度的编码。使同样一个词,在不同位置得到的编码是不同的,这样就可以更好地得到位置信息的相关性

Transform详解(超详细) Attention is all you need - 知乎

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/392361
推荐阅读
相关标签
  

闽ICP备14008679号