范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

NLP系列之Attention(十六)

  在上几期中介绍完RNN的变种后,引出Seq2Seq架构( Encoder-Decoder结构 ),在Encoder-Decoder结构中,Encoder把所有的输入序列都编码成一个统一的语义特征c再解码,因此, c中必须包含原始序列中的所有信息,它的长度就成了限制模型性能的瓶颈。如机器翻译问题,当要翻译的句子较长时,一个c可能存不下那么多信息,就会造成翻译精度的下降。
  那么有没有办法能解决上述问题呢?答案是有,Attention可以。
  在本期中,我们将会看到Attention 的本质、机制、原理等。
  一、 为什么要引入Attention机制
  根据通用近似定理,前馈网络和循环网络都有很强的能力。但为什么还要引入注意力机制呢?  计算能力的限制:当要记住很多"信息",模型就要变得更复杂,然而目前计算能力依然是限制神经网络发展的瓶颈。  优化算法的限制:虽然局部连接、权重共享以及pooling等优化操作可以让神经网络变得简单一些,有效缓解模型复杂度和表达能力之间的矛盾;但是,如循环神经网络中的长距离以来问题,信息"记忆"能力并不高。
  可以借助人脑处理信息过载的方式,例如Attention机制可以提高神经网络处理信息的能力。
  二、 Attention的本质
  Attention 机制很像人类看喜欢事物图片的逻辑,如果大家喜欢猫,在看一张带有猫的图片时,我们会将注意力集中在了图片中猫的位置焦点上,请看下面这张图:
  我们会看到猫的图形,旁边的向日葵即使再鲜艳,也不会关注,如下图:
  上面所说的,我们的视觉系统就是一种 Attention机制,将有限的注意力集中在重点信息上,从而节省资源,快速获得最有效的信息。
  三、AI 领域的 Attention机制
  Attention机制的实质其实就是一个寻址(addressing)的过程,如上图所示:给定一个和任务相关的查询Query向量 q,通过计算与Key的注意力分布并附加在Value上,从而计算Attention Value,这个过程实际上是Attention机制缓解神经网络模型复杂度的体现:不需要将所有的N个输入信息都输入到神经网络进行计算,只需要从X中选择一些和任务相关的信息输入给神经网络。
  Attention 并不一定要在 Encoder-Decoder 框架下使用的,它是可以脱离 Encoder-Decoder 框架的。
  第一步:query 和 key 进行相似度计算,得到权值
  第二步:将权值进行归一化,得到直接可用的权重
  第三步:将权重和 value 进行加权求和
  四、  Attention 的 N 种类型
  Attention 有很多种不同的类型:Soft Attention、Hard Attention、静态Attention、动态Attention、Self Attention 等等。下面就跟大家解释一下这些不同的 Attention 都有哪些差别。
  本节从计算区域、所用信息、结构层次和模型等方面对Attention的形式进行归类。
  1. 计算区域
  根据Attention的计算区域,可以分成以下几种:
  1)Soft Attention ,这是比较常见的Attention方式,对所有key求权重概率,每个key都有一个对应的权重,是一种全局的计算方式(也可以叫Global Attention)。这种方式比较理性,参考了所有key的内容,再进行加权。但是计算量可能会比较大一些。
  2)Hard Attention ,这种方式是直接精准定位到某个key,其余key就都不管了,相当于这个key的概率是1,其余key的概率全部是0。因此这种对齐方式要求很高,要求一步到位,如果没有正确对齐,会带来很大的影响。另一方面,因为不可导,一般需要用强化学习的方法进行训练。(或者使用gumbel softmax之类的)
  3)Local Attention ,这种方式其实是以上两种方式的一个折中,对一个窗口区域进行计算。先用Hard方式定位到某个地方,以这个点为中心可以得到一个窗口区域,在这个小区域内用Soft方式来算Attention。
  2. 所用信息
  假设我们要对一段原文计算Attention,这里原文指的是我们要做attention的文本,那么所用信息包括内部信息和外部信息,内部信息指的是原文本身的信息,而外部信息指的是除原文以外的额外信息。
  1)General Attention ,这种方式利用到了外部信息,常用于需要构建两段文本关系的任务,query一般包含了额外信息,根据外部query对原文进行对齐。
  比如在阅读理解任务中,需要构建问题和文章的关联,假设现在baseline是,对问题计算出一个问题 向量 q,把这个q和所有的文章词向量拼接起来,输入到LSTM 中进行建模。那么在这个模型中,文章所有词向量共享同一个问题向量,现在我们想让文章每一步的词向量都有一个不同的问题向量,也就是,在每一步使用文章在该步下的词向量对问题来算attention,这里问题属于原文,文章词向量就属于外部信息。
  2)Local Attention ,这种方式只使用内部信息,key和value以及query只和输入原文有关,在self attention中,key=value=query。既然没有外部信息,那么在原文中的每个词可以跟该句子中的所有词进行Attention计算,相当于寻找原文内部的关系。
  还是举阅读理解任务的例子,上面的baseline中提到,对问题计算出一个向量q,那么这里也可以用上attention,只用问题自身的信息去做attention,而不引入文章信息。
  3. 结构层次
  结构方面根据是否划分层次关系,分为单层attention,多层attention和多头attention:
  1)单层Attention ,这是比较普遍的做法,用一个query对一段原文进行一次attention。
  2)多层Attention ,一般用于文本具有层次关系的模型,假设我们把一个document划分成多个句子,在第一层,我们分别对每个句子使用attention计算出一个句向量(也就是单层attention);在第二层,我们对所有句向量再做attention计算出一个文档向量(也是一个单层attention),最后再用这个文档向量去做任务。
  3)多头Attention ,这是Attention is All You Need中提到的multi-head attention,用到了多个query对一段原文进行了多次attention,每个query都关注到原文的不同部分,相当于重复做多次单层attention:
  最后再把这些结果拼接起来:
  4. 模型方面
  从模型上看,Attention一般用在CNN和LSTM上,也可以直接进行纯Attention计算。
  1)CNN+Attention
  CNN的卷积操作可以提取重要特征,我觉得这也算是Attention的思想,但是CNN的卷积感受视野是局部的,需要通过叠加多层卷积区去扩大视野。另外,Max Pooling直接提取数值最大的特征,也像是hard attention的思想,直接选中某个特征。
  CNN上加Attention可以加在这几方面:  在卷积操作前做attention,比如Attention-Based BCNN-1,这个任务是文本蕴含任务需要处理两段文本,同时对两段输入的序列向量进行attention,计算出特征向量,再拼接到原始向量中,作为卷积层的输入。  在卷积操作后做attention,比如Attention-Based BCNN-2,对两段文本的卷积层的输出做attention,作为pooling层的输入。  在pooling层做attention,代替max pooling。比如Attention pooling,首先我们用LSTM学到一个比较好的句向量,作为query,然后用CNN先学习到一个特征矩阵作为key,再用query对key产生权重,进行attention,得到最后的句向量。
  2)LSTM+Attention
  LSTM内部有Gate机制,其中input gate选择哪些当前信息进行输入,forget gate选择遗忘哪些过去信息,我觉得这算是一定程度的Attention了,而且号称可以解决长期依赖问题,实际上LSTM需要一步一步去捕捉序列信息,在长文本上的表现是会随着step增加而慢慢衰减,难以保留全部的有用信息。
  LSTM通常需要得到一个向量,再去做任务,常用方式有:  直接使用最后的hidden state(可能会损失一定的前文信息,难以表达全文)  对所有step下的hidden state进行等权平均(对所有step一视同仁)。  Attention机制,对所有step的hidden state进行加权,把注意力集中到整段文本中比较重要的hidden state信息。性能比前面两种要好一点,而方便可视化观察哪些step是重要的,但是要小心过拟合,而且也增加了计算量。
  3)纯Attention
  Attention is all you need,没有用到CNN/RNN,乍一听也是一股清流了,但是仔细一看,本质上还是一堆向量去计算attention。
  5. 相似度计算方式
  在做attention的时候,我们需要计算query和某个key的分数(相似度),常用方法有:
  1)点乘:最简单的方法,
  2)矩阵相乘:
  3)cos相似度:
  4)串联方式:把q和k拼接起来,
  5)用多层感知机也可以:
  五、带有Attention的Encoder-Decoder模型计算过程
  Attention机制通过在每个时间输入不同的c来解决这个问题,下图是带有Attention机制的Decoder:
  每一个c会自动去选取与当前所要输出的y最合适的上下文信息。具体来说,我们用aij
  衡量Encoder中第j阶段的hj和解码时第i阶段的相关性,最终Decoder中第i阶段的输入的上下文信息 ci 就来自于所有 hj对 aij 的加权和。
  以机器翻译为例(将中文翻译成英文):
  输入的序列是"我爱中国",因此,Encoder中的h1、h2、h3、h4就可以分别看做是"我"、"爱"、"中"、"国"所代表的信息。在翻译成英语时,第一个上下文c1应该和"我"这个字最相关,因此对应的 a11 就比较大,而相应的 a12、a13、a14 就比较小。c2应该和"爱"最相关,因此对应的 a22 就比较大。最后的c3和h3、h4最相关,因此 a33、a34的值就比较大。
  至此,关于Attention模型,我们就只剩最后一个问题了,那就是:这些权重 aij是怎么来的?
  事实上,aij 同样是从模型中学出的,它实际和Decoder的第i-1阶段的隐状态、Encoder第j个阶段的隐状态有关。
  同样还是拿上面的机器翻译举例,a1j的计算(此时箭头就表示对h"和 hj 同时做变换):
  a2j的计算:
  a3j的计算:
  以上就是带有Attention的Encoder-Decoder模型计算的全过程。
  六、  Attention 的几大优点
  1、参数少
  模型复杂度跟  CNN 、 RNN  相比,复杂度更小,参数也更少。所以对算力的要求也就更小。
  2、速度快
  Attention 解决了 RNN 不能并行计算的问题。Attention机制每一步计算不依赖于上一步的计算结果,因此可以和CNN一样并行处理。
  3、效果好
  在 Attention 机制引入之前,有一个问题大家一直很苦恼:长距离的信息会被弱化,就好像记忆能力弱的人,记不住过去的事情是一样的。
  Attention 是挑重点,就算文本比较长,也能从中间抓住重点,不丢失重要的信息。

细数工程圈潜规则,施工员技术员一个也跑不掉今天和大家分享一些工程施工圈里的潜规则,这些可是书本里没有的。如果说错了还望各位大大指正,也欢迎大家补充。01工地停水,第一件做的事情就是关闭厕所!不要问我为什么!02工地现场易发建筑女民工讨薪未果,却被多名大汉抬走6月23日上午,高唐星光和园在建工地上,一女子因讨薪被几名男子强行抬走的视频刷爆了高唐人的微信圈。据了解,抬走讨薪者的那几名男子系聊建集团项目部的,起因是包工头候某某承包了聊建四公男人有多难?干工地的男人永不认输(此处已添加小程序,请到今日头条客户端查看)有人说干建筑两年没朋友,三年没对象五年没青春!男人有多难?没有人比我们更懂但是,干工地的男人永不认输!在工地上他们是搬砖的工匠,风吹日晒内心的镜子镜子,大家都应该熟悉吧,它是用来照外表用的。有了它,人们才知道了自己的面目,然后去修饰自己的外表。修饰自己认为不美的外表,从而使自己对自己的外表有有了份满足感。可是外表可以去修饰,在这个平台应该怎么定位是一个问题为什么我在这个平台创作了几篇文章,我突然全部删掉了。不是因为文章没有进行修剪的缘故,也不是因为平台的什么原因。是因为一开始进来,还是不知道这个平台应该适合哪些作品。就是作品首先要适有感于新工科专业前景随着互联网时代发展,兴起新的工科专业智能科学与技术大数据处理机器人工程专业,这三个专业虽然是新工科专业,但都是以计算机专业为基础而产生的新工科专业。在2000年之前计算机专业虽然很野人54。齐莽认为,报答乾坤雪人救命之恩的方式是为他们拍照齐莽在乾坤山的老熊岭遭遇了棕熊,生死关头,幸亏两位野人从棕熊口中救了他的命。他心存感激。想起自从前天夜晚在千子村郝十一叔家看到的也是这两个野人,他们曾经脸挨脸地趴在玻璃窗前观察着屋为什么去当兵?你的答案是什么?军人是服役在军队的军职人员,每年都会有非常多的军人退伍,但是为了维持军队的战斗能力和军事水准,所以每年也都会有很多的新兵入伍。永远忠于毛主席退伍纪念广州军区后勤部司令部政治部赠19管理好自己的情绪,是教师工作的重中之重因做题漏了一个单位,杨女士的孩子被数学老师用书本卷起来打到了眼睛和脸部,致孩子险些失明,后被诊断为右眼及面颊部挫伤,结膜充血。3月10日,当地官方发布情况说明成立工作组,开展全面调8岁娃遭体罚险致失明教师的情绪管理何其重要因做题漏了一个单位,陕西杨女士8岁的孩子被数学老师用书本卷起来打到了眼睛和脸部,致孩子险些失明,后被诊断为右眼及面颊部挫伤,结膜充血。3月10日,当地官方发布情况说明成立工作组,开民间故事秦琼卖马3(21)秦琼又使了个双龙探海,直向对方双目刺去,来将慌忙低头,躲过了双锏,这时两马交错,秦琼回身一锏,正打在来将的脊背上。(22)这一锏打得来将口吐鲜血,拨马往西南败逃。众人见了,
婚姻的真相你终将和错的人走到最后曾经在知乎上看到这样的话题婚姻中,你想和怎样的人走到最后?许多人回答想要和相爱的人走到最后。似乎,每个人都对婚姻有无尽的幻想。从恋爱到结婚,以为婚姻中的蜜月期会延长,也以为当初立下一个人为什么不回你微信了?多半是因为这些原因文佳人易斯欢迎关注佳人易斯,与你分享人间冷暖。前些天朋友和我哭诉,自己过去很好的朋友,宁愿在朋友圈更新,也不回她,她感觉很是伤心,不知道自己哪里得罪她了。其实回忆一下,我也曾经历过成长的边界探索生活的可能性,激发创造性思维,你也可以成长的边界是由大卫爱泼斯坦研究而写的书籍,本书从体育教育音乐等多领域,为我们剖析通才的重要性。这本书也曾被比尔盖茨在2020年评为这是一本戳穿专业化神话的好书。这本书也是万维钢精英告别低效,看高效能人士的七个习惯,你学会几个?一读此书的起因大家好,我是易斯。多年前我的职场导师给我推荐了一本书高效能人士的七个习惯,当我读这本书时,我发现每个习惯是我曾欠缺的,比如我曾经花了很多时间学习,却是徒劳无功,看不见父母爱情原著当上总经理的江昌义用大钻戒回报他的恶毒欢迎关注佳人易斯,与你分享更多情感故事。前段时间,再次回顾父母爱情,我发现看着这样的剧情,会让我想起过往后多纯真的时刻,而在原著中,有个角色总是让观众不得喜欢江昌义。他是江德福前妻你努力存钱的样子不但好看,还藏着父母晚年幸福的生活小的时候,总觉得时间过得很慢,想着快点长大。上了初中,突然,就觉得时间过得飞快,一晃,大学都毕业了,也参加了工作。是什么时候,父母两鬓白发渐生,背影也略显佝偻,我才意识到,随着我们学会抠门,努力存钱才是硬道理相信大家都看过欧也妮与葛朗台这部名著,葛朗台是出了名的铁公鸡守财奴,硬是攒下了一大笔家产。我们不学葛朗台的吝啬,但他的抠门精神我们可以借鉴。学会抠门,努力存钱才是硬道理,存钱是会上姚威姚爸相认经历冥冥中自有天意,谁也阻不了你奔向亲父母怀抱二八事件发展至今,曲折离奇。都说,戏剧来源于生活,可事实上,连戏剧都编不出这样的桥段,尤其是姚爸寻亲这段,天意幸运加持。姚威姚爸相认经历如果用一句话形容,就是冥冥中自有天意,谁也阻我该如何从这个可怕的男人,手中救出我的女儿亲爱的小迪我27岁的女儿多年来一直患有心理健康问题,她从20岁开始自残。在社会与错误的人群交往,然后开始吸毒。她在20岁怀孕,我像照顾自己的孩子一样照顾她孩子。她在23岁时再次被同情绪请开门和自己好好说话,走出情绪困境,成为情绪的主人最近我看了一本由心理学家张维扬写的情绪请开门,他拥有十余年的心理工作经验,真实在一线帮助有情绪困扰的人,这本书会帮助我们更深层次了解心理各大问题。当我们更好地认识情绪,我们便能够更明明想要和解,没想到,我把整个家都翻了每个人都有自己人生暖心时刻,我也一样。今天与你分享我的情感故事。和解的路那么长,我走了整个青春才学会。和解后,来看父母的关系会尴尬吗?这一次又发生了什么故事呢?让我与你娓娓道来。0