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

本文探讨了注意力机制的思想,将其比喻为人脑在解决问题时的专注过程。介绍了自注意力在机器翻译和图像描述等领域的应用,并通过Seq2Seq模型详细阐述了注意力机制的计算过程和作用。此外,讨论了在不同场景下如何应用注意力机制,包括编码-解码模型和广义注意力机制,并提供了在Tensorflow中实现注意力机制的简要说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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] \begin{aligned} {\alpha _{ts}} = \frac{ {\exp (score({h_t},{ {\bar h}_s}))}}{ {\sum\nolimits_{s' = 1}^S {\exp (score({h_t},{ {\bar h}_{s'}}))}}}\;\;\;\;\;\;\;\;\;\text{[Attention weights]} \end{aligned} αts=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值