注意力机制(Attention Mechanism)

本文解析了注意力机制在机器学习中的作用,介绍了其在自然语言处理、图像识别等领域的应用。通过对比人类阅读习惯,阐述了注意力机制如何帮助模型过滤无关信息,提高处理效率。

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

今天看关于命名实体识别的论文的时候,关于其中运用到的模型、方法技术,大多只能大致的了解,还有模型方法的名字有个熟悉。吃完饭后对论文中出现的“注意力机制”实在是不知道是个什么意思,就自己查了资料看了看,然后自己对自己理解的部分进行了收藏整理,便于以后自己的学习和日后找出自己理解存在的问题,若有什么问题请大家指正。
注意力机制(Attention Mechanism)是机器学习中的一种数据处理方法,广泛应用在自然语言处理、图像识别及语音识别等各种不同类型的机器学习任务中。
一、「注意力机制」为什么有必要存在(科普向)
我们不难发现,「注意力」这个词本来是属于人类才有的动作。
注意力是一种机制,或者方法论,并没有严格的数学定义。
也就是说,「注意力机制」可以看做是一种仿生,是机器通过对人类阅读、听说中的注意力行为进行模拟。
在神经网络中,注意力模块通常是一个额外的神经网络,能够硬性选择输入的某些部分,或者给输入的不同部分分配不同的权重。本文的注意力机制主要指代神经网络中的注意力机制。
那为何要对「注意力」进行仿生呢?
这是因为,人脑在进行阅读任务、读图任务时,并不是严格的解码过程,而是接近于一种模式识别。
怎么理解呢:
1.1 大脑会自动忽略低可能、低价值的信息
例如:研究表明,汉字的顺序不一定能影阅响读质量。
比如当你看完这句话后,仔细看才发这现句话是乱序的。
上面的这段话,好几个词都存在顺序混乱,但是阅读的第一感受,不会感觉到这种乱序。
我们甚至不用停下来思考,这种乱序是不是存在笔误,不仔细看甚至发现不了问题的存在。
这不是我们的眼睛都出了问题,而是大脑在识别文字的过程中,自动就把低可能的解释忽略了。
这一点在读图任务上,还更为明显一些,读图的过程中,大脑总是会优先获取认为有用的信息,而将次要的内容直接抛弃。
这是因为,大脑在阅读或读图的过程中,会直接抛弃低可能性答案,将阅读的内容更正为“大脑认为正确的版本”。
1.2 同样的文字随着对话主题的不同,含义也会发生变化
上下文联系影响文字的意义
这是网络上的一个段子,所谓的中文十级考试。这段话的第二句话里,两个“对”字代表了不同的含义。但如果单独把第二局话挑出来,即使是中国人也会对里面的意义产生疑义。因为本身这句话的“对了”可以解释成“已经校对过了”、“正确了”或者“无意义的承接词”。但如果有了第一句话的限定,这个“对了”就只能是“对答案了”的意思。也就是说,理解一句话的含义,不仅仅取决于这句话本身,而与上下文相关联的词也有很大影响。还不单单如此,通常一段对话中,都会存在一个反复出现的概念,例如这段话中的“对答案”,其他的词语或多或少都能与这个概念产生联系。也就是说,这个概念就是这段话的主题。而在更复杂一些的段落里,还会出现部分与主题没有什么关联的内容,通常这些内容都会被我们弱化或者自动遗忘。结合上面的两个例子,你会发现,我们在阅读、交流的过程中,本身就存在着信息的舍弃。虽然每段文字可能字号、粗细都相同,但我们的注意力却不是那样均衡地分配给每一个词。
如果计算机不能模拟人类的注意力状态,就可能让无关的信息对处理结果造成干扰,最后导致处理结果偏离实际的应用场景。
例如,聊天场景中,用户输入了错别字,导致了歧义。如果是人工场景,就很容易忽略错别字的影响,理解文字的本来含义。又或者,同样的句子,在不同语境中含义发生变化,导致机器翻译在段落和文章的翻译上,似是而非,语言不通顺。
这些干扰,都让人工智能显得像是“人工智障”,逻辑硬伤导致无法执行较为复杂的任务。
为了让计算机更加适应人类交流场景,我们必须教会计算机选择遗忘关联上下文,这种机制就是所谓的注意力机制
深度学习中的注意力机制从本质上讲和人类的选择性视觉注意力机制类似,核心目标也是从众多信息中选择出对当前任务目标更关键的信息。
二、「注意力机制」具体是如何实现的?
注意力机制可以分为四类:基于输入项的柔性注意力(Item-wise Soft Attention)、基于输入项的硬性注意力(Item-wise Hard Attention)、基于位置的柔性注意力(Location-wise Soft Attention)、基于位置的硬性注意力(Location-wise Hard Attention)。

Encoder-Decoder框架

要了解深度学习中的注意力模型,就不得不先谈Encoder-Decoder框架,因为目前大多数注意力模型附着在Encoder-Decoder框架下,当然,其实注意力模型可以看作一种通用的思想,本身并不依赖于特定框架,这点需要注意。

Encoder-Decoder框架可以看作是一种深度学习领域的研究模式,应用场景异常广泛。
在这里插入图片描述
最后进行一下总结。Attention在NLP中其实我觉得可以看成是一种自动加权,它可以把两个你想要联系起来的不同模块,通过加权的形式进行联系。目前主流的计算公式有以下几种:
在这里插入图片描述
不过在NLP中的attention机制和人类的attention机制还是有所区别,它基本还是需要计算所有要处理的对象,并额外用一个矩阵去存储其权重,其实增加了开销。而不是像人类一样可以忽略不想关注的部分,只去处理关注的部分。

### 自注意力机制的概念 自注意力机制(Self-attention mechanism)允许模型在同一序列的不同位置之间建立联系,从而捕捉到更丰富的上下文信息。通过这种方式,每个位置都可以关注整个序列中的其他部分,而不仅仅是相邻的位置[^4]。 在深度学习中,自注意力机制通常用于处理变长的输入序列。与传统的循环神经网络不同的是,自注意力机制能够一次性考虑所有时间步的信息,而不是逐个时间步地顺序处理数据。这种特性使得自注意力机制特别适合于自然语言处理任务和其他涉及长期依赖的任务[^1]。 ### 工作原理 在一个典型的实现中,对于给定的一组词元,这些词元会同时作为查询(Query)、键(Key)以及值(Value)。具体而言: - **查询 (Q)**:表示当前要计算注意力得分的目标项; - **键 (K)**:用来与其他查询匹配的对象; - **值 (V)**:当某个特定查询成功找到对应的键时所返回的内容; 为了计算注意力分数,首先会对每一对查询和键执行点乘操作,并除以根号下的维度大小来缩放结果。接着使用softmax函数将得到的结果转换成概率分布形式,最后再加权求和获得最终输出向量。 ```python import torch import math def scaled_dot_product_attention(query, key, value): d_k = query.size(-1) scores = torch.matmul(query, key.transpose(-2, -1)) / math.sqrt(d_k) # 计算注意力得分 p_attn = torch.softmax(scores, dim=-1) # 应用Softmax获取权重 output = torch.matmul(p_attn, value) # 加权求和得到输出 return output, p_attn ``` ### 应用场景 #### 多模态语音情感识别 研究显示,在多模态语音情感识别方面引入自注意力机制可以显著提高分类准确性。通过对音频特征、文本转录等多个通道的数据施加自注意力层,系统能更好地理解说话者的语气变化及其背后的情感状态[^2]。 #### 深度语义角色标注 利用自注意力机制还可以改进深层结构化的预测任务,比如深度语义角色标注(SRL),这有助于解析句子内部复杂的语法关系并提取出事件参与者之间的关联模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值