Pytorch之经典神经网络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 - 知乎

  • 5
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值