当前位置:   article > 正文

浅谈Attention注意力机制及其实现_注意力机制实现

注意力机制实现

1. 什么是注意力机制

1.1 注意力机制的思想

关于什么是注意力机制,粗略的描述就是“你正在做什么,你就将注意力集中在那一点上”。这种机制就和人脑在思考问题时一样。例如我们在思考将句子“我是一个学生”翻译成英文的时候,脑子中首先想到的就是“我” ⟷ \longleftrightarrow "I"的这样一种映射(而不是先想到其它部分),这就是注意力机制在人脑中的表现。即,我们在按词组依次翻译这句话的过程中,当我们翻译到某个部分时,我们的大脑就只会联想到(将注意力集中到)最与其**相关(相似)**的英文映射。因此,我们同样可以将这一思维过程运行到神经网络中来。

1.2 注意力机制的运用

自注意力机制被提出以来,在各个领域中都有着广泛的应用,例如机器翻译,看图说话(image caption)。而笔者也是通过谷歌开源的NMT翻译模型而了解并学习到这一思想的。在之前的一篇文章中笔者已经介绍了注意力机制的相关计算过程,但现在想想并不算太详细。下面就再次通过Seq2Seq这一翻译模型来谈谈注意力机制。

如图p0109所示,英文句子“I am a student”被输入到一个两个的LSTM编码网络(蓝色部分),经过编码后输入到另外一个两层的LSTM解码网络(棕色部分)。当网络在按时刻进行翻译(解码)的时候,第一个时刻输出的就是图中的 h t h_t ht。在前面我们说到,我们希望网络也能同我们人脑的思考过程一样,在依次翻译每个时刻时,网络所“联想”到的都是与当前时刻最**相关(相似)**的映射。换句话说,在神经网络将"I am a student"翻译成中文的过程中,当解码到第一个时刻时,我们希望网络仅仅只是将注意力集中到单词"I"上,而尽可能忽略其它单词的影响。可这说起来容易,具体该怎么做,怎么体现呢?

我们知道 h t h_t ht是第一个解码时刻的隐含状态,同时以上帝视角来看,最与 h t h_t ht相关的部分应该是"I"对应的编码状态 h ‾ 1 \overline{h}_1 h1。因此,只要网络在解码第一个时刻时,将注意力主要集中于 h ‾ 1 \overline{h}_1 h1,也就算达成目的了。但我们怎么才能让解码部分的网络也能知道这一事实呢?好在此时的 h t h_t ht与编码部分的隐含状态都处于同一个Embedding space,所以我们可以通过相似度对比来告诉解码网络:哪个编码时刻的隐含状态与当前解码时刻的隐含状态最为相似。这样,在解码当前时刻时,网络就能将“注意力”尽可能多的集中于对应编码时刻的隐含状态。
α t s = exp ⁡ ( s c o r e ( h t , h ˉ s ) ) ∑ s ′ = 1 S exp ⁡ ( s c o r e ( h t , h ˉ s ′ ) )                    [Attention weights]

αts=exp(score(ht,h¯s))s=1Sexp(score(ht,h¯s))[Attention weights]
αts=

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号