问题

注意力机制是如何学习到模型所应注意的区域的?

回答
好的,咱们就来聊聊这个“注意力机制”,它怎么就知道模型该看哪儿?这可不是什么魔法,里面是有门道的。

想象一下,你面前摆着一桌子菜,有红烧肉,有清蒸鱼,还有一盘子翠绿的蔬菜。如果你饿了,你想吃肉,你的眼睛自然就更容易被那块油光锃亮的红烧肉吸引住,你会多看两眼,甚至不自觉地就拿起筷子。蔬菜嘛,虽然也很重要,但这时候可能就稍微靠边站了。

注意力机制,干的活儿差不多就是这个意思。它让模型在处理信息的时候,能够有选择性地“聚焦”在更重要的部分,而忽略掉那些不太相关的部分。

那么,它是怎么做到这一点的呢?这里面有几个关键的步骤和概念,我尽量给你掰开了揉碎了讲。

核心思想:给不同的信息赋予不同的“权重”

最根本的一点,注意力机制就是给输入信息中的每一个部分计算出一个“权重”。这个权重的大小,就代表了模型在当前任务下,对这个信息部分的“重视程度”。权重越大,说明模型认为这个部分越重要,应该给予更多的关注;权重越小,则相对不那么重要。

就像给食材打分

你可以这么理解,模型在处理一句话的时候,就像是在品尝一道菜。句子里的每个词,就像是食材。注意力机制要做的事情,就是给每个词(食材)打个分(权重),告诉模型哪个词(食材)在这个“味道”(任务)里起着决定性作用。

那么,这个“分数”是怎么算出来的呢?

这就要说到注意力机制里的几个核心组件,最常见的框架是基于“Query”、“Key”、“Value”这三个概念。

1. Query (查询): 你可以把它想象成你“想知道什么”的信号。在模型处理一个特定的信息片段时(比如,模型正在生成一个新的词,或者在判断一个句子的情感),它会产生一个“查询”。这个查询代表了模型当前最关心的信息是什么。

2. Key (键): 就像是你家门上的钥匙孔。输入信息中的每一个部分(比如句子中的每个词),都会有一个对应的“Key”。这个Key是对这个信息部分的某种“标记”或者“摘要”。

3. Value (值): 这是信息部分最“实在”的内容。每一个Key都对应着一个Value,Value就是这个信息部分本身的“肉”,是真正需要被提取和利用的信息。

关联起来是怎么回事?

好了,我们有了Query、Key、Value,它们是怎么工作的呢?

查询(Query)和键(Key)进行“匹配”: 模型会用当前的Query去和输入序列中所有词的Key进行“比对”。这个比对的过程,通常是通过计算Query和Key之间的“相似度”来实现的。相似度越高,说明这个词的Key越符合我们当前的Query(也就是模型想关注的点)。
计算注意力分数(Attention Scores): 这个相似度计算出来的值,就叫做“注意力分数”。它告诉我们,在当前的Query下,每个Key(也就是每个输入词)有多大的相关性。
通过Softmax函数进行“归一化”: 这些原始的注意力分数,可能大小不一,而且我们希望它们代表的是“占比”,所以需要进行一个归一化处理。最常用的方法是使用Softmax函数。Softmax函数能把任意的实数向量转换为一个概率分布,所有元素的和为1。这样,我们就得到了一组“注意力权重”。
加权求和(Weighted Sum): 最后一步,就是用这些计算出来的注意力权重,去对对应的Value(也就是每个输入词的实际信息)进行加权求和。权重越大的Value,对最终输出的贡献就越大。

举个例子,让它更直观:

假设我们有一个句子:“The animal didn't cross the street because it was too tired.” 我们想让模型理解“it”指代的是什么。

Query: 当模型处理到“it”这个词时,它会生成一个Query,这个Query可能包含“想知道代词指代的对象”这样的信息。
Key/Value: 句子中的每个词(“The”, “animal”, “didn't”, “cross”, “the”, “street”, “because”, “it”, “was”, “too”, “tired”, “.”)都会有一个Key和Value。
匹配和打分: 模型会用“it”的Query去和句子中其他所有词的Key进行比对。
“animal”的Key可能和“it”的Query有很高的相似度,因为它是一个名词,可能符合代词指代的条件。
“street”的Key可能和“it”的Query相似度就比较低,因为它不是一个生物,不太可能是“it”的指代对象。
“tired”虽然是一个形容词,但它描述的是“it”的状态,也可能和Query有一定相关性,但不如“animal”直接。
Softmax归一化: 经过Softmax后,我们可能会得到这样的权重(举例):
“animal”:0.8
“street”:0.05
“tired”:0.1
其他词:很小的权重
加权求和: 最后,模型会用这些权重去加权求和每个词的Value。这样,“animal”的Value会以0.8的权重贡献给“it”的表示,而“street”的Value可能只贡献0.05。最终,模型就能更好地理解“it”指向了“animal”。

这里的“学习”体现在哪里?

前面说的Query、Key、Value,它们本身并不是固定不变的,而是模型在训练过程中学习到的参数。

通过反向传播更新: 当模型在进行训练时,如果它对某个预测结果不准确(比如,在翻译句子时,它错误地把“it”翻译成了“它”指代的是“street”),误差信号就会通过反向传播回到注意力机制。
调整Query、Key、Value的表示: 这个误差信号会指导模型去调整Query、Key、Value的计算方式(或者说,调整用来生成Q, K, V的线性变换矩阵)。通过不断地迭代训练,模型会逐渐学会如何生成能够准确匹配的Query和Key,以及如何计算出能够突出重要信息的注意力权重。
“学习”如何关注: 也就是说,注意力机制并不是预设好的规则,而是模型根据数据和任务目标,自己摸索出来的一套“观察”和“判断”的策略。它学会了在不同的上下文和不同的任务下,应该把“目光”投向哪里。

总结一下:

注意力机制学习到模型应注意的区域,是通过以下几个关键过程:

1. 计算相似度: 用当前的“查询”(Query)去衡量输入序列中每个元素(通过其“键”Key)与查询的相关程度。
2. 生成注意力权重: 将相似度分数通过Softmax等函数转换为概率分布,形成注意力权重,代表了模型对每个元素的“关注度”。
3. 加权整合信息: 利用这些权重对输入元素的“值”(Value)进行加权求和,得到一个更加聚焦和相关的表示。
4. 参数学习: Q, K, V 的计算方式是通过模型在训练过程中,根据任务的反馈(误差信号)进行反向传播和优化学习得来的。模型自己学会了如何生成最适合的Query和Key,以获得最有用的注意力分布。

所以,注意力机制的学习过程,本质上就是模型在训练过程中,通过数据驱动,不断优化自身内部的参数,使其能够动态地、有选择性地分配计算资源,去关注输入信息中最有价值的部分。 它就像一个聪明的学生,通过反复练习和纠错,学会了如何在浩瀚的知识海洋中,精准地找到那些对解题至关重要的线索。

网友意见

user avatar

由于下班天天刷抖音,成了下沉脑残群众,故此打算做题锻炼脑子

我打算从一个非常 toy 的模型说明为何跑着跑着,会出现区域集中

先考虑一个玩具模型

考虑样本 ,权重 ,以及均值为零的噪声 ,我们的 toy model 如下:

要证明的是,w 每个分量大小,反比于 每个分量的方差。

用人话来说,就是越不确定的地方,权重会越小,越确定的地方,权重越大,符合基本的直觉。

证明不难,把平方展开稍微计算一下:

最后一项平均以后为零,只有第二项那个保留,相当于有个 l2 的约束,方差越大,w 的约束越大。岭回归求解可以知道 w 的最优解是反比于 的每个分量的

和注意力的关系:假设表征是几乎固定的,考虑 的每个分量都是某些表征的俩俩点乘 ,其中 是位置的 index。假设 I,J 位置彼此靠近,比如图像近邻两个像素点,或者语言下一个词等。通常两个邻近位置的表征具有很强的相关性,如果 本身的数值范围变动不大,比如做了很多比较强的标准化流程,基本都在一个椭球表面,可以预期 的值波动不大,相当于 当中的噪声项非常小,按照前面 toy model 大致可知,相关性越强的,共现不确定性越低,权重自然大。

这也说明为何很多自然语言预训练模型当中,attension 矩阵最强的首先是邻近的,然后才是远端的。

当然,这个角度假设很多,比如表征是我认为假设固定了,其实表征也在训练,就不清楚一堆东西在动,为何注意力权重还是做了区域集中。不过也有一些指导性,就是低频共现的 “token”,模型会有自动的方式调低对这些内容的“关注”,只会强调高频共现 pair

user avatar

@心照璧 提到的回溯性注意力机制CAM主要是用在cv里。而最早提出注意力机制的是nlp领域。

最初nlp里attention就是设置一个向量,和文本token的向量算内积,再过一个softmax归一化,得到每个token的权重,然后再根据权重把序列向量聚合成一个向量,用于下游任务。

@心照璧 提到的MIL解释我非常喜欢。最简单的文本分类模型,就是用avg pooling,相当于认为文本里每个词都是正例。attention的提出就是为了选出这个序列里真正起作用的token做正例。下面是Hierarchical Attention Networks for Document Classification的例子,说明模型做出判断时关注到了那些词。

注意力机制是如何学到模型所应注意的词呢?一个几何上的直觉解释是,在高维空间里,学习过程中模型不断拉进对任务有用的token向量和attention向量的距离。最终学习到的就是当前任务下,以attention向量为中心的一个巨大高维球形空间,token向量距离中心越近的就是越与任务相关的token。换句话说,attention机制学到了和任务相关的特征词。

user avatar

哎你要说这个我可不困了啊。以下关于计算机视觉中的回溯性(Top-down)注意力先做一个非正式的快速叙述,涉及知识点十分多,现在来不及一一展开:

从注意力实现原理上讲,计算机视觉中通常用到的回溯性注意力(CAM、GradCAM等Top-down注意力解释方法)先通过分类器给出分类结论,后回溯对分类做出强贡献的区域,CAM等方法通过对特征图加权求和的方式将关键区域高亮出来,权值来自CNN全局池化后面接的分类器的权重(CAM),或者反向传播的梯度幅值(GradCAM)等,总的来说不同方法质量各异,但都能揭示模型下结论时关注的是哪些区域。

从注意力学习过程讲,个人解释这主要是一个多示例学习(MIL)求解弱监督学习的迭代过程。MIL为弱监督学习提出一种样本分包学习的流程,即多个样本组成一个包,其中正包包含至少一个正样本,负包不包含正样本,在弱监督学习中可以认为一张图就是一个包,包含目标的patch是真正的正样本。而求解MIL需要引入伪标签赋予的过程,即设计一个策略为正包中的部分强响应样本赋予伪的正标签(常见策略包括Top1、TopN、全部给正标签等),然后通过鸡生蛋蛋生鸡的方式迭代优化。各种伪标签策略在CNN训练中正好体现为Global Max Pooling (GMP)、Log-Sum-Exp (LSE)、Global Average Pooling (GAP)等常见末端池化模块。由于CAM可以在GAP之前计算(对了解细节的读者,可以尝试非常简单地证明:可以把FC层权重提到全局池化前面来,先计算CAM再计算全局平均池化,这和事后回溯计算CAM数学上等效),CNN分类器的训练相当于一种将CAM注意力当作patch score做MIL的过程,全局池化为CAM的学习提供了patch级的伪标签。

从注意力形成过程也能看得出来,伪标签从原理上就不是什么绝对靠谱的机制,完全有可能一开始给错了后面就一直错下去的。在实践中,回溯性注意力也确实存在可感知的问题,可以从正确性和质量两方面分别体现。

所谓注意力的正确性问题,含义是注意力强调的位置完全不符合人预期的现象。相关代表性论文是Guided Attention Inference Network(GAIN),GAIN文介绍了一个很易懂的例子:船-水问题。当模型学习“船”类别时,由于船、水两个语义在一些数据集中有高度统计相关性,有时模型会完全混淆船-水两个概念,体现为“船”类别的CAM完全落在背景中的水上。需要注意的是,船-水问题仅是该问题的一个极端例子,实际应用中由于任务的复杂性,模型的概念混淆与概念正确往往是掺杂的,难以作同等直观的理解以便通过修改数据分布(增加没有水的船、没有船的水等)来解决问题。因此GAIN文提出的解决方案是将CAM作为一个可学习的输出添加额外监督信息(像素级mask)作手术刀式修正,来确保分类器的分类与其判断依据正确性的一致性,这样自然会增加标注成本。

所谓注意力的质量问题,含义是在位置正确时形状、数量描述不佳的现象,比如CAM在处理大目标、多目标定位时输出往往不完整,只能高亮出部分目标的部分区域。该问题主要和用“分类”这个学习方式来学习定位任务导致的任务目标不一致有关。直观地讲就像光路永远最短一样,优化的贪心性也会驱使模型在解决分类任务之后就不再充分探索剩余信息,这导致分类模型看到目标最有区分力的区域就直接下分类结论了。不引入额外监督信息解决这个问题的代表性相关论文是Adversarial Erasing系列,用多模型级联学习来强化注意力完整性,其中每个模型将图上CAM高亮区域挖掉再喂给下一级模型,强迫他们挖掘剩余有区分力的信息,这样就能把目标区域更完整地挖掘出来。

针对注意力的正确性问题,拙作“Rectifying Supporting Regions With Mixed and Active Supervision for Rib Fracture Recognition”也为literature做了一些微小贡献:(1)利用简单易行的对抗样本方法将GAIN文所需的像素级额外监督标签松弛为包围盒级标签,在目标边界模糊或边界不存在、难以用像素级标签描述时(或单纯标注预算较低时)能发挥更好的作用;(2)结合注意力驱动的主动学习方法进一步缩减所需的包围盒标签数量。最终效果是利用20%精标注+80%粗标注,就能接近使用了100%精标注的强监督学习的定位精度。

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有