NLP中的全局注意力机制(Global Attention)

最近在看一些Event Extraction和Event Detection的论文,看到其中有些论文会用到Attention机制,在阅读Attention相关论文的时候,对于论文中的一些符号表示,钻了一些牛角尖,所幸最后还是理解了
关于Attention机制的论文:Effective Approaches to Attention-based Neural Machine Translation

全局注意力机制(Global Attention)模型如下:
在这里插入图片描述
先直接说明模型图中各个变量的含义,再慢慢分析Global Attention机制:

  • h s h_{s} hs:表示LSTM中s时刻得到的hidden state
  • h t h_{t} ht:表示LSTM得到的目标hidden state
  • a t ( s ) a_{t}(s) at(s):表示s时刻的hidden state在所有hidden state中所占的权重, a t ( s ) a_{t}(s) at(s)是一个标量
  • a t a_{t} at:将所有t个时刻的hidden state的权重组合起来,便得到了 a t a_{t} at a t a_{t} at的长度与时间步长相同,即与一句话中的单词的个数相同
  • c t ( s ) c_{t}(s) ct(s):将s时刻的hidden state h s h_{s} hs与其权重 a t ( s ) a_{t}(s) at(s)相乘,便得到s时刻(即第s个单词)的上下文向量 c t ( s ) c_{t}(s) ct(s)
  • c t c_{t} ct:将全部单词的上下文向量,求平均值或者求和,便可以得到由输入的单词组成的一句话的句向量

在LSTM模型中,依次输入一句话中的各个单词的词向量,由LSTM的结构可知,每一个时刻s(每输入一个单词)都会得到一个hidden state h s h_{s} hs,当到达最后一个时刻t时,会得到target hidden state h t h_{t} ht。在之前的做法中,只会用到LSTM最终产生的 h t h_{t} ht,而LSTM中间产生的一系列 h s h_{s} hs并不会被用上。这就会产生一些问题:

  • 模型对于一句话中的每个单词都是“一视同仁”的,但当人在读一句话的时候,往往对于某些关键的单词会给予更多的关注。
  • LSTM是长短时记忆网络,其中包含的遗忘门,对于先进入网络的单词,忘记的程度更大,所以该网络更加倾向于记住后输入网络的单词,也就是说得到的向量 h t h_{t} ht会过多地关注一句话中结尾的单词

以上问题,可以使用全局注意力机制(Gobal Attention)来解决。

  • Gobal Attention的目的Gobal Attention的目的是为了在生成上下文向量(也可以认为是句向量) c t c_{t} ct时将所有的hidden state都考虑进去。Attention机制认为每个单词在一句话中的重要程度是不一样的,通过学习得到一句话中每个单词的权重。
  • 如何衡量每个单词在一句话中的权重呢? 对于第s个单词,它在一句话中的权重,是根据s时刻的hidden state h s h_{s} hs h t h_{t} ht计算而得到的。第s个单词的权重记做 a t ( s ) a_{t}(s) at(s)

s时刻的单词的权重计算公式如下,其中 h t h_{t} ht表示最终的hidden stste,而 h s h_{s} hs表示s时刻的hidden state:
在这里插入图片描述

  • 其中score打分函数有如下三种形式:
    在这里插入图片描述
    有了上面的基础,我们在重新梳理一下如何通过Global Attention获得每个单词的上下文向量,从而获得句向量:
  1. 将每个单词的词向量依输入LSTM中,s时刻获得hidden state的记为 h s h_{s} hs,最终获得的目标hidden state记为 h t h_{t} ht
  2. 使用打分函数score( h t h_{t} ht, h s h_{s} hs)获得每个时刻的得分
  3. 通过softmax()函数,将所有时刻的得分进行归一化,从而得到各个时刻权重 a t ( s ) a_{t}(s) at(s)每个时刻的权重都是一个标量
  4. 将各个时刻的权重 a t ( s ) a_{t}(s) at(s) h s h_{s} hs数乘计算,就得到该时刻添加了Global Attention之后的上下文向量 c t ( s ) c_{t}(s) ct(s)
  5. 将每个时刻的上下文向量 c t ( s ) c_{t}(s) ct(s)求均值或者求和之后,就得到整句话的上下文向量 c t c_{t} ct,可以认为 c t c_{t} ct就是这句话的句向量
  • 12
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 全局注意力机制Global Attention Mechanism,简称GAM)是一种用于优化神经网络模型注意力机制。在神经网络注意力机制的作用是给予不同部分的输入不同的权重,从而更加关注与任务相关的信息。 GAM是一种全局性的注意力机制,它在计算注意力权重时会考虑所有输入元素之间的相互关系。具体来说,GAM会计算输入元素与其他元素的相似度,然后将这些相似度用于计算注意力权重。相似度可以通过计算两个元素之间的内积或采用其他相似度计算方法得到。通过考虑所有输入元素的相互关系,GAM能够更好地捕捉全局特征,并且在计算注意力权重时不受输入元素的顺序影响。 GAM的计算过程可以大致分为三个步骤:计算相似度、计算注意力权重和加权求和。首先,对于每个输入元素,GAM会计算其与其他所有元素的相似度。这些相似度可以通过使用模型的参数进行计算,也可以通过其他附加信息得到。然后,GAM会对每个输入元素计算其注意力权重,这些权重反映了该元素对任务的重要程度。最后,GAM会根据注意力权重对所有输入元素进行加权求和,得到最终的输出。 由于GAM在计算注意力权重时同时考虑了所有输入元素的相互关系,因此它能够更好地捕捉全局特征,提高模型的性能。它在自然语言处理、计算机视觉等领域得到广泛应用,并且在很多任务取得了很好的效果。总之,GAM是一种用于优化神经网络模型全局注意力机制,能够更好地处理输入元素之间的相互关系,提高模型的性能。 ### 回答2: 全局注意力机制Global Attention Mechanism,GAM)是一种用于自然语言处理和机器翻译等任务注意力机制。通常的注意力机制在计算注意力分布时,是基于每个查询(query)与一组键值对(key-value pairs)之间的相似度来进行计算的,而GAM则是在整个输入序列上计算注意力分布,相当于将每个键值对作为查询与整个输入序列进行相似度计算。 GAM的计算过程可以分为三个步骤:首先,通过一个线性变换对输入序列进行投影,得到投影向量;其次,建立一个查询向量,将投影向量作为查询;最后,通过计算查询向量与整个输入序列的相似度得到注意力分布。 GAM的优点是能够整体捕捉到输入序列重要的关键信息,而不仅仅是局部区域的信息。例如,在机器翻译任务,GAM可以判断当前时刻需要注意的是哪个单词,以便生成正确的翻译结果。与传统的注意力机制相比,GAM能够更好地处理长序列的输入,同时减少因序列长度增加而引起的计算复杂度问题。 然而,GAM也存在一些问题。首先,由于GAM需要计算整个输入序列的相似度,因此在序列很长时,计算复杂度会较高。其次,对于输入序列与输出结果相关性较低的部分,GAM容易出现过度关注的情况,导致计算资源的浪费。因此,在实际应用,需要权衡计算复杂度和模型性能之间的平衡,选择适当的注意力机制
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值