自注意力是Transformer中的核心,但我们大多时候都忽略了其中的Q∈RN×d,K∈RN×d,V∈RN×dQ\in R^{N\times d},K\in R^{N\times d},V\in R^{N\times d}QRN×d,KRN×d,VRN×d的解释性,下面我们将对自注意力机制做出思考,进一步理解Transformer。阅读本篇内容前,可先回顾Pytorch笔记本:第十四课.Transformer。下面需要明白一些基础知识:

  • 向量内积的意义是什么;
  • 矩阵与其转置相乘,得到的结果是什么意义;

首先,我们分析Transformer中最核心的部分,键值对注意力的公式为:Attention(Q,K,V)=softmax(QKTdk)VAttention(Q,K,V)=softmax(\frac{QK^{T}}{\sqrt{d_{k}}})VAttention(Q,K,V)=softmax(dk

QKT)V首先考虑一个通用的式子:softmax(XXT)Xsoftmax(XX^{T})Xsoftmax(XXT)X我们先思考XXTXX^{T}XXT的意义。矩阵是由向量组成的,一个矩阵乘以它自己转置的运算,其实可以看成这些向量分别与其他向量计算内积。比如:矩阵转置以后第一行就是第一列,因此,此时就是在计算第一个行向量与自己的内积,第一行乘以第二列是计算第一个行向量与第二个行向量的内积,第一行乘以第三列是计算第一个行向量与第三个行向量的内积。

而向量的内积表征两个向量的夹角,表征一个向量在另一个向量上的投影,即计算相似度,下面举一个实际例子,验证XXTXX^{T}XXT的意义:

行向量xiTx_{i}^{T}xiT分别与自己和其他两个行向量做内积("早"分别与"上"和"好"计算内积),得到一个新的向量,这个新向量是行向量xiTx_{i}^{T}xiT在自己和其他两个行向量上的投影。投影的值大,说明两个向量相关度高(更相似)。

更进一步,当我们的向量是词向量(词在低维稠密空间的数值映射),两个词向量的相关度高表示:在关注一个词的时候,应当给另一个相关的词也施加关注。

XXTXX^{T}XXT的结果是一个方阵,可以想象,方阵中保存了每个向量与自己和其他向量进行内积运算的结果。而softmax函数则可以实现这些相关度的归一化,从而得到注意力softmax(XXT)∈RN×Nsoftmax(XX^{T})\in R^{N\times N}softmax(XXT)RN×N

对于softmax(XXT)Xsoftmax(XX^{T})Xsoftmax(XXT)X中的最后一个XXX,即为待施加注意力分布并进行加权求和的输入数据。举个例子,取softmax(XXT)softmax(XX^{T})softmax(XXT)的第一行R1×3R^{1\times 3}R1×3,与X∈R3×dX\in R^{3\times d}XR3×d相乘,得到一个新的向量R1×dR^{1\times d}R1×d

这个新的向量其实就是"早"的词向量经过注意力加权求和后的词向量(embedding),我们相当于是把"早"对应的注意力[0.4,0.4,0.2]施加到输入数据XXX上,重新加权求和得到[1.4,1.4,2,1.8,1],而注意力[0.4,0.4,0.2]的含义就是"早"与所有词"早",“上”,"好"的相关程度,可以看出"早"与本身以及"上"的相关度更高。


在一些关于BERT的可解释性文章中,研究者通过事后解释的方式探索了不同阶段的注意力分布,通过注意力的可视化帮助我们分析模型对于关系(relation)特征的学习:

BERT模型建立于Transformer,主要由多层自注意力网络堆叠而成(包含残差连接),而自注意力的本质是对词与词(Token and Token)之间"关系"的刻画。不同的关系可以表达丰富的含义,比如名词短语中的依存关系,指代关系,这些关系特征对理解自然语言具有关键作用。

上图展示了不同自注意力头的行为:有些注意力头分布均匀,具有较大的感受野,即编码了较分散的上下文信息,有些注意力头分布集中,且显示出一定的模式,比如集中在当前词的下一个词,或者[SEP],句号等标记上。可以看出,不同的注意力头具有比较多样的行为,因而能够编码不同类型上下文中的关系特征。

关于可解释
可解释性是以人类视角理解模型的行为,因此,我们需要有一个映射,将模型的行为映射到人类可以理解的视角;

可解释性可以分为自解释(Self-explainable)和事后解释(Post-hoc explanation),前者要求模型在构建之初就针对性地设计其结构,使其具备可解释性,比如原型机网络;后者则是对模型中的组件或者中间输出的变量做统计分析,比如CNN核的可视化,attention的可视化,特征图的可视化。

在可解释性研究上,有两个名词具有细微差别:

  • Interpretability与Explainability,这两个词在一开始的时候其实是经常互换的,都指的是一个意思。之后两个名词又有了些细微的差别,Interpretability或者Interpretable AI是使模型成为白盒,模型的任意一个设计结构都让人可以完全理解,想得通为什么要这样设计,而Explainabilily或者Explainable AI则是研究者对于黑盒模型的行为作出人们所能理解的一个解释。

残差连接
残差连接是一种High way的连接方式,有利于梯度回传,Highway神经网络在输入与输出之间建立直接连接,使得输出层可以直接将梯度回传到输入层,从而避免因网络层数过多而带来的梯度爆炸或弥散问题。


现在回到:Attention(Q,K,V)=softmax(QKTdk)VAttention(Q,K,V)=softmax(\frac{QK^{T}}{\sqrt{d_{k}}})VAttention(Q,K,V)=softmax(dk

QKT)V关于Q∈RN×d,K∈RN×d,V∈RN×dQ\in R^{N\times d},K\in R^{N\times d},V\in R^{N\times d}QRN×d,KRN×d,VRN×d,计算如下:Q=XWQ,K=XWK,V=XWVQ=XW^{Q},K=XW^{K},V=XW^{V}Q=XWQ,K=XWK,V=XWV可见,查询,键,值均是来自XXX的线性变换,类比之前得到的关于"早"的注意力分布[0.4,0.4,0.2],这个向量的行标记"早"对应着查询,"列"标记对应着所有的键,因此,"早"对应的向量R1×dR^{1\times d}R1×d[1,2,1,2,1],也被称为查询向量。

注意,我们不直接使用XXX去完成整个过程,却在中间施加线性变换得到Q∈RN×d,K∈RN×d,V∈RN×dQ\in R^{N\times d},K\in R^{N\times d},V\in R^{N\times d}QRN×d,KRN×d,VRN×d。线性变换可以将原始数据转换到具有另一种表达的线性空间,当我们在这些不能直观感受到的新空间下计算注意力并加权时,才能学习到更丰富的关系信息(不同表达空间下,两个词之间的相关度是不一样的)。


补充内容:当我们使用自注意力机制时,最好引入顺序信息以克服bag of words效应;

对self attention来说,任意一个词总是跟每一个词都计算了注意力,所以没有考虑到input sequence的顺序。更通俗来讲,可以发现前面例子中计算的每一个词向量都与其他词向量计算内积,得到的结果丢失了我们原来文本的顺序信息。对比来说,像语言模型RNN对于文本顺序信息的解释是考虑输入词向量的先后顺序,而上文的计算对sequence的顺序这一部分则完全没有提及,如果打乱词向量的顺序,得到的结果仍然是相同的;

因此,Transformer在输入词向量时添加了位置编码,从而引入了顺序信息。这使得Transformer不仅具有了位置信息,还能实现并行计算(词向量的并行计算);

有些论文将Transformer作为语言模型(生成式模型,比如GPT),通过加入注意力的掩码来实现语言模型的效果。


关于自注意力机制的思考相关推荐

  1. 深度学习理论篇之 ( 十八) -- 注意力机制之SENet

    科普知识 ILSVRC(ImageNet Large Scale Visual Recognition Challenge)是机器视觉领域最受追捧也是最具权威的学术竞赛之一,代表了图像领域的最高水平. ...

  2. AI大觉醒:图灵奖得主Bengio称AI将产生意识,未来机器学习核心是注意力机制

      新智元报道   来源:venturebeat 编辑:梦佳 [新智元导读]人工智能是时候该觉醒了吗?在本周的2020 ICLR 大会上,图灵奖得主Yoshua Bengio针对AI和机器学习的未来阐 ...

  3. 【ICML2021】计算机视觉中的自注意力机制教程,谷歌伯克利出品

    本教程将介绍自注意力机制在计算机视觉中的应用.Self-Attention在NLP中被广泛采用,完全注意的Transformer模型已经在很大程度上取代了RNN,现在被用于最先进的语言理解模型,如GP ...

  4. keras cnn注意力机制_从发展历史视角解析Transformer:从全连接CNN到Transformer

    编译 | bluemin校对 | 陈彩娴Transformer架构在机器学习领域(尤其是NLP里)是一项热门研究,为我们带来了许多重要成果,比如:GPT-2.GPT-3等写稿机器人:第一代GPT及其性 ...

  5. 自适应注意力机制在Image Caption中的应用

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

  6. tensorflow环境下的识别食物_在TensorFlow+Keras环境下使用RoI池化一步步实现注意力机制...

    在本文中,作者解释了感兴趣区域池化(RoI 池化)的基本概念和一般用法,以及如何使用它来实现注意力机制.他一步步给出了在 Keras 和 TensorFlow 环境下使用 RoI 池化的实现. 选自 ...

  7. vuepc端实现数据加载_多模态注意力机制+多模态数据,完全实现端到端课堂活动检测|ICASSP 2020...

    本文解读的是 ICASSP 2020 论文<MULTIMODAL LEARNING FOR CLASSROOM ACTIVITY DETECTION>,作者来自好未来. 作者 | 李 航 ...

  8. 【推荐论文】基于多视角学习和个性化注意力机制的新闻推荐(附论文下载链接)...

    编者按:个性化新闻推荐是新闻行业必然的发展方向,在其实现过程中面临着三个关键问题,即分析用户兴趣.根据新闻内容建模和新闻排序.本文将这三个问题划归为新闻信息与用户兴趣的多样性问题,并由此出发,提出了基 ...

  9. 自注意力机制_自注意力机制在计算机视觉中的应用【附PPT与视频资料】

    关注微信公众号:人工智能前沿讲习回复"蒋正锴"获取PPT与视频资料视频资料可点击下方阅读原文在线观看 导读 在神经网络中,我们知道卷积层通过卷积核和原始特征的线性结合得到输出特征, ...

最新文章

  1. Ubuntu下Astro Pro配置openni踩坑小记
  2. 【java8】中stream的.findAny().orElse (null) 是什么意思?
  3. c++中CreateEvent函数解析(1)
  4. Leecode刷题热题HOT100(9)——回文数
  5. 英语词根词缀记忆法(全集)_闭着眼睛就能背好的托福词汇记忆法
  6. 30个你必须记住的CSS选择符
  7. centos mysql proxy_在Centos 5.2下安装最新的MySQL Proxy
  8. 一级造价工程师(安装)- 计量笔记
  9. web和mysql连接并增删改查_Web界面实现数据库增删改查过程
  10. 《交互设计》作业-问卷调查
  11. 一文了解AAAI国际会议–附: 各年论文连接
  12. Super Socks5cap使用教程
  13. java所有单词_JAVA常用英语单词列表
  14. 智能交通 路侧智能感知 应用层数据格式
  15. vb.net图书管理系统
  16. 液压传动基础知识(一)
  17. Java媒体框架(JMF)资料
  18. 计算机中的英语六级作文万能模板,英语六级作文的通用万能模板
  19. 通俗易懂聊springMVC中的handler是什么
  20. 流行的jQuery信息提示插件(jQuery Tooltip Plugin)【转】

热门文章

  1. Nginx——反向代理
  2. 阿里飞猪个性化搜索排序探索实践
  3. 选择Kong作为你的API网关
  4. 4.5万字手把手教你实现MySQL TB级数据存储!!
  5. 图解:数据结构中的6种「树」,柠檬问你心中有数吗?
  6. Dubbo 负载均衡的实现
  7. 没忍住又怼同事了!领导说,要做好情绪管理:真正优秀的人,从来都是不动声色...
  8. 我猜你不知道知乎这么个大系统是咋部署的!
  9. 企业工作流程化重要吗?
  10. 企业一般会用哪些软件来提高员工的工作效率?