type
status
date
slug
summary
tags
category
icon
password
Attention系列
一、Attention is all you need详细讲解
Transformer代码实现:
Attention Model(注意力模型)学习总结
二、Attention简介
Attention的核心逻辑就是「从关注全部到关注重点」。将有限的注意力集中在重点信息上,从而节省资源,快速获得最有效的信息。
2.1 Attention有三大优点:
- 速度快:Attention 解决了 RNN 不能并行计算的问题。Attention机制每一步计算不依赖于上一步的计算结果,因此可以和CNN一样并行处理。
- 效果好:在长距离依赖问题上,Attention 能够挑重点,就算文本比较长,也能从中间抓住重点,不丢失重要的信息。
2.2 Attention计算方式
Attention用于计算"相关程度",例如在翻译过程中,不同的英文对中文的依赖程度不同,Attention通常可以进行如下描述,表示为将query(Q)和key-value pairs映射到输出上,其中query、每个key、每个value都是向量,输出是V中所有values的加权,其中权重是由Query和每个key计算出来的,计算方法分为三步:
- 计算比较Q和K的相似度,用f表示如下:
- 将得到的相似度进行softmax归一化:
- 针对计算出来的权重,对V中所有的values进行加权求和计算,得到Attention向量
相似度的计算方法有六种:
- 点乘 dot product:
- 权重 general:
- 拼接权重 Concat:
- 感知器 Perceptron:
- 缩放点积 Scaled Dot-Product: (当输入向量维度过高,点积模型通常有较大的方差,从而导致softmax函数梯度很小,而缩放点积模型可以很好地解决这个问题)
三、Attention类型
Soft Attention是所有的数据都会注意,都会计算出相应的注意力权值,不会设置筛选条件。
Hard Attention会在生成注意力权重后筛选掉一部分不符合条件的注意力,让它的注意力权值为0,即可以理解为不再注意这些不符合条件的部分。
3.1 普通Attention
我们可以这样来看待Attention机制:将Source中的构成元素想象成是由一系列的<Key,Value>数据对构成,此时给定Target中的某个元素Query,通过计算Query和各个Key的相似性或者相关性,得到每个Key对应Value的权重系数,然后对Value进行加权求和,即得到了最终的Attention数值。所以本质上Attention机制是对Source中元素的Value值进行加权求和,而Query和Key用来计算对应Value的权重系数。即可以将其本质思想改写为如下公式:
也可以将Attention机制看作一种软寻址(Soft Addressing): Source可以看作存储器内存储的内容,元素由地址Key和值Value组成,当前有个Key=Query的查询,目的是取出存储器中对应的Value值,即Attention数值。通过Query和存储器内元素Key的地址进行相似性比较来寻址,之所以说是软寻址,指的不像一般寻址只从存储内容里面找出一条内容,而是可能从每个Key地址都会取出内容,取出内容的重要性根据Query和Key的相似性来决定,之后对Value进行加权求和,这样就可以取出最终的Value值,也即Attention值。
至于Attention机制的具体计算过程,如果对目前大多数方法进行抽象的话,可以将其归纳为两个过程:第一个过程是根据Query和Key计算权重系数,第二个过程根据权重系数对Value进行加权求和。而第一个过程又可以细分为两个阶段:第一个阶段根据Query和Key计算两者的相似性或者相关性;第二个阶段对第一阶段的原始分值进行归一化处理;这样,可以将Attention的计算过程抽象为如图10展示的三个阶段。
3.2 Self-Attention
Self Attention顾名思义,指的不是Target和Source之间的Attention机制,而是Source内部元素之间或者Target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的注意力计算机制。
常规的Target不等于Source情形下的注意力计算,比如对于机器翻译来说,本质上是目标语单词和源语单词之间的一种单词对齐机制。而Self Attention可以捕获同一个句子中单词之间的一些句法特征或者语义特征。
引入Self Attention后会更容易捕获句子中长距离的相互依赖的特征,因为如果是RNN或者LSTM,需要依次序序列计算,对于远距离的相互依赖的特征,要经过若干时间步步骤的信息累积才能将两者联系起来,而距离越远,有效捕获的可能性越小。
但是Self Attention在计算过程中会直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,所以远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征。除此外,Self Attention对于增加计算的并行性也有直接帮助作用。
3.3 Multi-Head Self-Attention
多头自注意力机制为何有效?
1、多头允许模型在不同的表示子空间里学习到相关的信息
2、可以类比CNN中同时使用多个滤波器的作用,直观上讲,多头的注意力有助于网络捕捉到更丰富的特征/信息。
3、把多头注意力看作是一种ensemble,模型内部的集成。
- Author:liamtech
- URL:https://liamtech.top/article/10e9746b-4e13-81fc-bb92-ccdf48a3bef0
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!