首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >有福利送书 | 一文概述注意力机制

有福利送书 | 一文概述注意力机制

作者头像
OpenCV学堂
发布2026-04-02 19:37:43
发布2026-04-02 19:37:43
2120
举报
引言

说明:本文节选自清华大学出版社2025年3月出版的《深入理解自然语言处理:从深度学习到大模型应用》(ISBN 978-7-302-68152-6),略有改动。

最经典的神经机器翻译模型就是编码器-解码器架构,也叫seq2seq(Sequence to Sequence)结构,内部网络使用的是LSTM。这种结构算是NMT的先驱,但除了可以节省大量的特征工程量,效果还无法超过SMT,从CV领域借鉴了注意力机制之后,其效果才有了长足的进步。注意力机制并非一个全新的模型,多数模型还是构建于基础模型,如seq2seq(LSTM),下面简单介绍。

注意力机制简介

注意力机制就如其字面意思,跟人的注意力类似。例如,人眼在看图片时其实是无法一下看清全部细节的,人眼的焦点范围其实非常小,你感觉自己很快就看清一张图片了,其实是因为人眼跳动得比较快,一秒可以跳动几次,通过几次跳动而看清了整张图片,并非真的一下看清。还有,如果问你图片中都有什么人,他们在干什么等问题时,你就会把注意力放到与问题相关的对象上。CV领域的注意力机制也是一样的,就是基于某个问题或相关任务,如给图片自动添加描述,当需要输出某个词时,隐藏状态就会把焦点集中到这个词对应的实体上。

NLP领域的注意力逻辑与CV类似,例如NMT,就是在每生成一个输出词的时候关注与这个词相关度最高的源语言对应的词。

注意力模型(AM)最初被用于机器翻译,现在已经成为神经网络文献中的一个主导概念。作为自然语言处理、统计学习、语音和计算机视觉等大量应用的神经结构的重要组成部分,注意力在人工智能(AI)领域已经变得非常流行。

这种相关性的概念允许模型动态地只关注输入的某些部分,这些部分有助于有效地执行当前的任务,如生成某个具体的词或描述。使用AM对Yelp点评进行情绪分类的例子如图1所示。在这个例子中,AM学习到在五个句子中,第一个和第三个句子更相关。

图1 使用Yelp应用注意力模型进行情感分析的示例

神经网络注意力机制的快速发展主要有3个原因。首先,在多种任务中,如机器翻译、问题回答、情绪分析、词性标注、群体解析和对话系统等,最好的模型都使用了注意力机制。其次,注意力机制除了可以提高主要任务的性能之外,还被广泛地用于提高神经网络的可解释性,否则被认为是黑盒模型。这是一个显著的优点,主要是因为人们对影响人类生活的应用程序中的机器学习模型的公平性、可问责性和透明度越来越感兴趣。最后,注意力机制有助于克服递归神经网络(RNN)的一些挑战,比如随着输入长度的增加而导致的性能下降,以及由于输入的顺序处理而导致的计算效率低下等。

seq2seq模型由编码器-解码器架构组成,如图2(a)所示。编码器是一个RNN,接受序列输入x1, x2,, xT,其中,T为输入序列的长度,将其编码为固定长度的向量h1, h2,, hT。译码器也是一个RNN,它以一个固定长度的向量hT作为输入,然后逐个生成输出序列y1, y2,, yT,其中,T为输出序列的长度。在每个位置t上,ht和st分别表示编码器和解码器的隐藏状态。

01

传统编解码器的挑战

在这个编码器-解码器框架中有两个众所周知的挑战。首先,编码器必须将所有输入信息压缩成一个固定长度的向量hT,然后传递给解码器。问题是输入长度是可变的,对于较长的输入信息就可能会有较大的损失。其次,它无法建模输入和输出序列之间的对齐关系,而这又是翻译或摘要等结构化输出任务里一个较重要的方面。直观地说,在seq2seq的任务中,每个输出标记更容易受到输入序列的某些特定部分的影响。然而,解码器缺乏在生成每个输出token时选择性地关注相关输入令牌的任何机制。

02

注意力机制的关键思想

AM旨在通过允许解码器访问整个编码输入序列h1, h2, , hT,对输入序列上的每个token引入一个权重值也就是注意力,从而加强输入序列中某些位置的信息,这些位置信息与生成下一个输出的token相关。

03

注意力的使用

相应的编码器-解码器结构如图2(b)所示。该体系结构中的注意力模块负责自动学习注意力权重αij,它捕获的hi表示编码器的隐藏状态,我们称为候选状态,捕获的sj表示解码器的隐藏状态,我们称为查询状态,它们之间存在相关性。然后使用这些注意力权重来构建一个上下文向量c,它作为输入传递给解码器。在每个解码位置j处,上下文向量cj是编码器所有隐藏状态及其相应注意权值的加权和,例如:

这个附加的上下文向量是解码器访问整个输入序列并关注输入序列中相关位置的机制。

注意力权重的学习是通过在架构中加入额外的前馈神经网络来完成的。该前馈网络将注意力权重αij作为两种状态hi(候选状态)和sj-1(查询状态)的函数,并作为神经网络的输入。这种注意力网络权重的训练是与该结构的编码器-解码器组件一起训练。

图2 seq2seq与seq2seq+注意力

注意力机制的具体应用

上文是对注意力机制的综合介绍,本文直接介绍一个具体的注意力机制的应用模型,它是早期将注意力机制应用到NMT任务里的先驱之一Dzmitry Bahdanau等人在论文Neural Machine Translation by Jointly Learning to Align and Translate中提出的,如图3所示。

网络结构跟编码器-解码器结构相似,只是形式改了一下,下面是接受源语言的编码器,上面是要输出翻译语言的解码器,中间的分叉就是计算注意力。这里唯一的不同是编码器没有使用单向的LSTM而是双向的GRU,GRU与LSTM没有太大区别,只是少了一个门控让训练和推断更快而已,但双向编码在实践中被证明还是非常有效的,因为单向编码使用最后一个输出作为编码器的输出容易损失前面的信息,即使使用注意力机制,加强中间某个位置的信息,这个信息也只包含它之前的信息,信息的损失是无法避免的,双向编码就较好地

上面的4个公式其实就是GRU的内部结构的计算,r和z是两个门控,W和U都是可训练的权重,表示按位相乘,这里省略了所有的偏置b。对比前面讲过的GRU会发现有些不同,但本质还是一样的,都是对信息传导的门控,都比LSTM少一个门控。

因为这里使用了双向循环,上面只计算了一个方向,两个方向做拼接后才是完整的隐藏状态输出:

这还是一个GRU单元的计算,这里不再是双向,所以没有了拼接操作。

可见这里使用的是第三种。前两种称为乘法式相关度计算,第三种称为加法式计算。这三种方法没有绝对的优劣,每一种方法都有不少模型在使用。

经过训练后的某一对翻译句子的注意力权重如图4所示,可见注意力的可解释性,在输出某一个词时权重越高的位置越亮。这就是一个最原始的带有注意力机制的编码器-解码器结构,编码器-解码器内部使用的是GRU,使用LSTM也可以。基于这个结构的变体非常多,但都是早期的,因此没有太多参考意义,我们就直接跳过这些讲一下Transformer结构,之后再基于前沿的NMT问题具体了解一些变体模型。

图4 注意力权重

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档