NLP学习(5)----seq2seq/transformer

https://www.leiphone.com/news/201709/8tDpwklrKubaecTa.html

https://www.cnblogs.com/hellojamest/p/11128799.html

https://blog.csdn.net/longxinchen_ml/article/details/86533005

一. 前提:

  RNN : 解决INPUT是序列化的问题,但是RNN存在的缺陷是难以并行化处理.

  CNN : 使用CNN来replaceRNN,可以并行,如下图每个黄色三角形都可以并行. 但是问题是难解决长依赖的序列, 解决办法是叠加多层的CNN,比如下图的CNN黄色三角形和蓝色三角形为两层CNN,

self-attention : 其输入和输出和RNN一样,就是中间不一样. 如下图, b1到b4是同时计算出来, RNN的b4必须要等到b1计算完.

二. self-attention计算(Attention is all you need)

  用每个query q去对每个key k做attention , 即计算得到α1,1 , α1,2 ……,

  为什么要除以d [d等于q或k的维度,两者维度一样] ? 因为q和k的维度越大,dot product 之后值会更大,为了平衡值,相当于归一化这个值,除以一个d.

  

  

三. self-attention如何并行

  以上每个α都可以并行计算

  

总结:

四. self_attention的类型

多头: 为何?因为不同的head可以关注不同的信息, 比如第一个head关注长时间的信息,第二个head关注短时间的信息.

将两个bi,1和bi,2进行concat并乘以W0来降为成bi

  位置encoding

   上面的self-attention有个问题,q缺乏位置信息,因为近邻和长远的输入是同等的计算α.

  位置encoding的ei是人工设置的,不是学习的.将其加入ai中.

  为何是和ai相加,而不是concat?

  

  这里的Wp是通过别的方法计算的,如下图所示

 五. seq2seq

  传统的seq2seq: 中间用的是RNN

  

  seq2seq with attention

  

 六. Transformer

https://mp.weixin.qq.com/s/RLxWevVWHXgX-UcoxDS70w

整体架构:

残差

对于每个encoder里面的每个sub-layer,它们都有一个残差的连接,

Layer Norm

每个sub-layer后面还有一步 layer-normalization [layer Norm一般和RNN相接] 。

Batch Norm和Layer Norm 的区别, 下图右上角, 横向为batch size取均值为0, sigma = 1. 纵向 为layer Norm , 不需要batch size.

Masked : [decoder]

注意encoder里面是叫self-attention,decoder里面是叫masked self-attention。

这里的masked就是要在做language modelling(或者像翻译)的时候,不给模型看到未来的信息。

mask就是沿着对角线把灰色的区域用0覆盖掉,不给模型看到未来的信息。

  发展: universal transformer

  应用: NLP \ self attention GAN (用在图像上)

  

猜你喜欢

转载自www.cnblogs.com/Lee-yl/p/11417506.html
今日推荐