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

科技   2024-10-25 10:05   中国香港  

点击下方深度学习爱好者”,选择加"星标"或“置顶

作者|王桂波  编辑丨极市平台

链接|https://www.zhihu.com/question/444712435

编辑|深度学习与计算机视觉

本文仅做学术分享,侵删

简单来说,注意力机制在没有标注的数据集中,仅凭着模型本身去学习所应注意的区域,这种方法的准确性靠谱吗?

作者:知乎用户https://www.zhihu.com/question/444712435/answer/1755066079
我打算从一个非常 toy 的模型说明为何跑着跑着,会出现区域集中
先考虑一个玩具模型
考虑样本 ,权重  ,以及均值为零的噪声  ,我们的 toy model 如下:
要证明的是,w 每个分量大小,反比于   每个分量的方差。
用人话来说,就是越不确定的地方,权重会越小,越确定的地方,权重越大,符合基本的直觉。
证明不难,把平方展开稍微计算一下:
最后一项平均以后为零,只有第二项那个保留,相当于有个 l2 的约束,方差越大,w 的约束越大。岭回归求解可以知道 w 的最优解是反比于  的每个分量的
和注意力的关系:假设表征是几乎固定的,考虑   的每个分量都是某些表征的俩俩点乘  ,其中  是位置的 index。假设 I,J 位置彼此靠近,比如图像近邻两个像素点,或者语言下一个词等。通常两个邻近位置的表征具有很强的相关性,如果  本身的数值范围变动不大,比如做了很多比较强的标准化流程,基本都在一个椭球表面,可以预期  的值波动不大,相当于   当中的噪声项非常小,按照前面 toy model 大致可知,相关性越强的,共现不确定性越低,权重自然大。
这也说明为何很多自然语言预训练模型当中,attension 矩阵最强的首先是邻近的,然后才是远端的。
当然,这个角度假设很多,比如表征是我认为假设固定了,其实表征也在训练,就不清楚一堆东西在动,为何注意力权重还是做了区域集中。不过也有一些指导性,就是低频共现的 “token”,模型会有自动的方式调低对这些内容的“关注”,只会强调高频共现 pair

作者:知乎用户
https://www.zhihu.com/question/444712435/answer/1733403787

哎你要说这个我可不困了啊。以下关于计算机视觉中的回溯性(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%精标注的强监督学习的定位精度。

作者:霍华德
https://www.zhihu.com/question/444712435/answer/1734304145

@心照璧 提到的回溯性注意力机制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机制学到了和任务相关的特征词。

作者:匿名用户
https://www.zhihu.com/question/444712435/answer/1756285423

注意力机制可以看作一种特殊的基本基于线性操作完成的消息传递机制,基本思路就是:
(1)系统分为多个子系统,子系统之间需要进行消息传递。
(2)在注意力机制中,对不同子系统的特征进行一个线性的embedding, 然后通过内积计算嵌入空间向量的相关度。
(3)子系统之间的相关度作为权重,去对消息(另一个线性嵌入向量)进行加权。
所以,核心就是一个子系统之间的相关性,只不过这里是通过一个embedding操作后计算了相关性(感觉有一点kernel trick的意思),其实显然这里的embedding完全可以扩展成一般非线性的,只不过线性的操作复杂度低一些,而且基本可以完成任务要求,所以注意力才选择了线性操作。而这个embedding的操作需要我们通过训练完成。
如果我们进一步把一般线性空间操作简化约束为旋转平移,则这可以类比为一个图像处理里的传统的registration问题,高相关性就类比为子系统之间有固定的坐标系变换关系,即有基本固定的位置关系,而弱相关性就是子系统之间的位置关系是不固定的。而我们的注意力任务基本就是看能否从 一个子系统的位置估计出其他子系统的位置。在权重归一化约束下,我们需要做到使得整体的位置估计的可靠性加权最大化,或者误差的加权最小化。直观的类比,明显我们参数估计的结果一定是对有固定位置关系的部分赋予更多信任度。所以,注意力机制数据驱动优化的结果就是,一方面可以找到子系统之间相对固定的坐标变换并赋予更大权重,另一方面对没有固定位置变换关系的子系统的位置信息减小权重。
下载1:Pytoch常用函数手册
在「深度学习爱好者」公众号后台回复:Pytorch常用函数手册即可下载全网第一份Pytorch常用函数手册,涵盖Tensors介绍、基础函数介绍、数据处理函数、优化函数、CUDA编程、多线程处理等十四章章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

深度学习爱好者
分享机器学习、深度学习和Python等知识与原理,每天分享深度学习与计算机视觉领域的经典和最新的论文总结,带读者一起跟踪前言科技!
 最新文章