NLP之Self-Attention和Transformer(通俗易懂的解释)

以下图片来自李宏毅老师的PPT截图,李宏毅老师的视频对这部分讲的很清楚,看了以后有了很清晰的认识。

一、研究背景

如下图所示,b1、b2、b3、b4、用Self-Attention可以同时计算,而在RNN中不能够同时被计算,即解决RNN无法并行化的问题。
在这里插入图片描述

二、Self-Attention实现原理

1、在把各个词送入Self-Attention之前先将其乘以一个特征矩阵,以特征化的表示各个单词,然后将其送入Self-Attention中(词嵌入的方法,Word embedding),即ai=Wxi,然后把不同的a乘上不同的矩阵W变为向量q(去匹配其他向量)、k(被匹配)、v(要被抽取出的information),如下图所示:
在这里插入图片描述
2.然后用每个向量q去对每个k做attention,这里公式除以根号d是为了平衡q和k乘的时候方差太大。如下图:
在这里插入图片描述
3.然后做Soft-max,如下图:
在这里插入图片描述
4.从下图可以看出输出的向量b1可以考虑整个句子的信息。
在这里插入图片描述
在这里插入图片描述
综上四步,其实整个框架就是下图这个样子(所有向量可以被平行化计算):
在这里插入图片描述

三、Self-Attention总结

各个向量的点乘运算可以合起来表示,如下图:
在这里插入图片描述
在这里插入图片描述
更形象化表示:
在这里插入图片描述
然后,由于在Self-Attention中没有考虑位置信息,所以在原始论文中加一个ei来表示位置信息,怎么理解呢,可以理解为在xi向量上加了一个one-hot表示的pi,然后经过计算发现ei并不影响原来的向量,也就是原来的信息不会被影响:
在这里插入图片描述
那么也可以把Self-Attention用在Seq2seq中,和RNN的使用一样,如下图:
在这里插入图片描述

四、Self-Attention的变形(有了这个变形才更好理解Transformer)

Multi-head Self-Attention结构,以head数等于2为例:
在这里插入图片描述
在这里插入图片描述
可以对向量b乘一个W进行降维处理,如下图:
在这里插入图片描述

五、Transformer

先看Encoder部分,inputs通过embedding变成一个向量,然后这个向量会加上positional encoding(位置编码),然后进入Nx里,会重复n次,先经过Multi-head Self-Attention,Add&Norm的意思是会先把Multi-head Self-Attention的输入和输出加起来,得到b’,然后经过Layer Norm,Add&Norm之后,Feed Forward对每个输入进行处理在经过Add&Norm。
Decoder部分,Masked表示已经产生出的部分,其他过程类似于Encoder部分。
在这里插入图片描述

  • 6
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值