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就是这句话的句向量
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值