Transformer中的自注意力

参考链接https://blog.csdn.net/u012526436/article/details/86295971

self-attention,其思想和attention类似,但是self-attention是Transformer用来将其他相关单词的“理解”转换成我们正在处理的单词的一种思路,我们看个例子:
The animal didn’t cross the street because it was too tired
这里的it到底代表的是animal还是street呢,对于我们来说能很简单的判断出来,但是对于机器来说,是很难判断的,self-attention就能够让机器把it和animal联系起来,接下来我们看下详细的处理过程。

  1. 首先,self-attention会计算出三个新的向量,我们把这三个向量分别称为Query、Key、Value。这三个向量是用embedding向量与一个矩阵相乘得到的结果,这个矩阵是随机初始化的。三个参数矩阵的维度是 W Q , W K , W V ∈ R d x ✖ d z W^{Q},W^{K},W^{V }\in \mathbb{R} ^{dx ✖ dz} WQ,WK,WVRdxdz
    其中,dx是输入序列每个元素的维度,即embedding向量的维度,dz是线性转换后的维度。

    2、计算self-attention的分数值,该分数值决定了当我们在某个位置encode一个词时,对输入句子的其他部分的关注程度。这个分数值的计算方法是Query与Key做点乘,以下图为例,首先我们需要针对Thinking这个词,计算出其他词对于该词的一个分数值,首先是针对于自己本身即q1·k1,然后是针对于第二个词即q1·k2

    3.接下来,把点乘的结果除以一个常数,这里我们除以8,这个值一般是采用dz的开方,当然也可以选择其他的值,然后把得到的结果做一个softmax的计算。得到的结果即是每个词对于当前位置的词的相关性大小,当然,当前位置的词相关性肯定会会很大。

    4、下一步就是把Value和softmax得到的值进行相乘,并相加,得到的结果即是self-attetion在当前节点的值。

    在实际的应用场景,为了提高计算速度,我们采用的是矩阵的方式,直接计算出Query, Key, Value的矩阵,然后把embedding的值与三个矩阵直接相乘,把得到的新矩阵Q与K相乘,乘以一个常数,做softmax操作,最后乘上V矩阵


    这种通过 query 和 key 的相似性程度来确定 value 的权重分布的方法被称为scaled dot-product attention。

相信到这里你对自注意力的计算过程已经有了一定了解,接下来我们从公式的角度来推导这个过程
首先我们关注一下自注意力模块的输入和输出。输入是序列 x = (x1,x2,…,xn),其中每个元素的维度都是dx。输出是新的序列z=(z1,z2,…,zn),其中每个元素的维度都是dz。
(1) 每一个输出元素,z_i,计算为输入元素线性转换后的加权和:
z i = ∑ j = 1 n α i j ( x j W V ) z_{i}=\sum ^{n}_{j=1}\alpha _{ij}\left( x_{j}W^{V }\right) zi=j=1nαij(xjWV)
(2) 每一个权重系数,α_ij是用softmax函数计算得到的:
α i j = exp ⁡ e i j ∑ k = 1 n exp ⁡ e i k \alpha _{ij}=\dfrac {\exp e_{ij}}{\sum ^{n}_{k=1}\exp eik} αij=k=1nexpeikexpeij
(3) e_ij是使用比较两个输入元素的兼容性函数计算得到的:
e i j = ( x i W Q ) ( x j W K ) T d z e_{ij}=\dfrac {\left( x_{i}W^{Q}\right) \left( x_{j}W^{K}\right) ^{T}}{\sqrt {dz}} eij=dz

(xiWQ)(xjWK)T
三个参数矩阵的维度分别是
W Q , W K , W V ∈ R d x ✖ d z W^{Q},W^{K},W^{V }\in \mathbb{R} ^{dx ✖ dz} WQ,WK,WVRdxdz
下面附一张我推导的图

以上即为Transformer中的自注意力结构,下篇会讲到多头自注意力。

Transformer中的自注意力相关推荐

  1. NLP中的Attention注意力机制+Transformer详解

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 作者: JayLou娄杰 知乎链接:https://zhuanlan.zhihu. ...

  2. Transformer中的注意力机制

    在自然语言处理领域中,Transformers已经成为了非常流行的模型.其中,最受欢迎的Transformer模型是BERT(Bidirectional Encoder Representations ...

  3. 深入理解transformer中的位置编码

    文章目录 总览 问题1 问题2 问题3 问题4 问题5 问题6 总览 我们今天需要讲解transformer中的位置编码,这其实属于进阶内容.既然你会到这里,我默认你已经看过了transformer的 ...

  4. transformer中attention计算方式_Reformer: 局部敏感哈希、可逆残差和分块计算带来的高效...

    最近要开始使用Transformer去做一些事情了,特地把与此相关的知识点记录下来,构建相关的.完整的知识结构体系, 以下是要写的文章,本文是这个系列的第九篇: Transformer:Attenti ...

  5. ICCV2021 | Vision Transformer中相对位置编码的反思与改进

    前言  在计算机视觉中,相对位置编码的有效性还没有得到很好的研究,甚至仍然存在争议,本文分析了相对位置编码中的几个关键因素,提出了一种新的针对2D图像的相对位置编码方法,称为图像RPE(IRPE). ...

  6. Transformer 中 比较晦涩难懂的东西

    文章目录 Transformer 中 比较晦涩难懂的东西 keras 实现mask encoder部分[对输入进行操作] decoder部分[对注意力矩阵操作] Output的输入 ==来自我亲爱的师 ...

  7. transformer中QKV的通俗理解(渣男与备胎的故事)

    transformer中QKV的通俗理解(渣男与备胎的故事) 用vit的时候读了一下transformer的思想,前几天面试结束之后发现对QKV又有点忘记了, 写一篇文章来记录一下 参考链接: 哔哩哔 ...

  8. transformer学习之多头注意力机制

    文章目录 题目 注意力机制 多头注意力机制 为什么要使用多头注意力机制 代码实现 题目 transformer学习之多头注意力机制 注意力机制 详细了解 ➡️ 注意力机制 之前我们也学习过了Seq2S ...

  9. 对Transformer中的MASK理解

    对Transformer中的MASK理解 Padding Masked Self-Attention Masked 上一篇文章我们介绍了 对Transformer中FeedForward层的理解,今天 ...

最新文章

  1. 07 分支管理 —— Feature分支
  2. 【c语言】蓝桥杯算法提高 填充蛋糕
  3. 为何python不好找工作k-为何python不好找工作,seo行业不好转行了
  4. 软件测试第二次作业:JUNIT单元测试方法
  5. 数据结构之数组定义及基本操作(转)
  6. 华为自带时钟天气下载_华为EMUI10的最大亮点是什么?
  7. java 置顶_[置顶]java开发之基础篇2
  8. 实现⼀个简洁版的promise
  9. MSSQL数据库的一些长度限制
  10. 找出最耗资源的sql ----没明白
  11. Linux下WebLogic漏洞补丁包安装过程
  12. 解决禁用笔记本键盘,外接使用键盘方法
  13. 那些便宜的vps,你敢用吗?企业该如何选择云服务器?
  14. 网吧服务器磁盘性能,网吧游戏服务端显示磁盘已满怎么解决
  15. 【毕业设计】深度学习人脸性别年龄识别系统 - python
  16. 第四回 还君明珠双泪垂,恨不相逢未嫁时
  17. 内存函数-----Memcmp
  18. seq和ack的理解
  19. 一起学Pandas系列基础篇---loc和iloc
  20. Flink 算子状态与键控状态总结

热门文章

  1. 如何用ZBrush快速雕刻LOL中的Lissandra
  2. GEE:实现 Lee 杂波滤波器(Lee speckle filter)降低或去除SAR图像中的杂波(speckle noise)
  3. 申请商标注册,怎么选类别?
  4. python中的类是什么意思_如何理解python中的类和方法(转)
  5. Unity实现牧师与魔鬼动作分离版
  6. 长期吃黑芝麻、黑豆、黑米能让白发变黑吗? 因人制宜
  7. 红黑棋子交换java,象棋大挪移 红黑棋子 红先黑后,输了不臭
  8. 回波3DFFT处理(测距、测速、测角)
  9. 【C语言篇(初级)】初识C语言——上
  10. 九月十月百度,迅雷,华为,阿里巴巴最新校招笔试面试三十题(10.18)