• 【深度学习】attention机制


    attention机制

    注意力机制:忽略无关信息而关注重点信息

    软注意力(soft attention): 更关注区域或通道,学习完后直接可以通过网络生成。重要的是可微分的!
    强注意力(hard attention): 更关注点,图像中的每个点都可能延伸出注意力,是一个随机的预测过程,强调动态变化,最关键的是不可微分的,训练过程中往往需要通过增强学习来完成。

    1.self-attention机制

    由于卷积核作用的感受野是局部的,要经过累积很多层之后才能把整个图像不同部分的区域关联起来。所以Hu等人提出SENet,从特征通道层面上统计图像的全局信息。

    self- attention上从NLP中借鉴的思想,保留了Query、key和value等名称。下图是基本结构。

    请添加图片描述

    self-attention结构自上而下分为三个分支:query、key和value,计算分成三步:

    1. 将query和每个key进行相似度计算得到权重,相似度函数有点积,拼接,感知机等
    2. 使用一个softmax函数对这些权重进行归一化
    3. 将权重和相应的键值value进行加权求和得到最后的attention

    2.Non-local Neural network(非局部信息统计的注意力机制

    CNN在统计全局信息时存在的问题:

    • 捕获长范围特征依赖很多层网络,导致学习效率低
    • 由于网络需要累积很深,则设计模块和梯度时需要谨慎
    • 当需要在比较远的位置之间来回传递信息,卷积或时序局部操作很困难

    Non-local 是借鉴了滤波中非局部均值滤波的思想,设计一个非局部操作算子。其通用公式如下:

    y i = 1 C ( x ) ∑ j f ( x i , x j ) g ( x j ) y_i=\frac{1}{C(x)}\sum_j f(x_i,x_j)g(x_j) yi=C(x)1jf(xi,xj)g(xj)
    其中,x是输入信号,CV中使用的一般是feature map,i 代表的是输出位置,如空间、时间或者时空的索引,他的响应应该对j进行枚举然后计算得到的,f 函数式计算i和j的相似度,g 函数计算feature map在j位置的表示,最终的y是通过响应因子C(x) 进行标准化处理以后得到的。

    上述的思想,可以表示出:i代表当前位置的响应,j代表全局响应,通过加权得到一个非局部的响应值
    Non-local block如下图。
    请添加图片描述

    1. 首先对输入的 feature map X 进行线性映射(用 111 卷积,来压缩通道数),然后得到 θ,φ,g 特征;
    2. 通过reshape操作,强行合并上述的三个特征除通道数外的维度,然后对θ和φ进行矩阵点乘操作,得到类似协方差矩阵的东西(这个过程很重要,计算出特征中的自相关性,即得到每帧中每个像素对其他所有帧所有像素的关系);
    3. 然后对自相关特征进行 Softmax 操作,得到0~1的weights,这里就是我们需要的 Self-attention 系数;
    4. 最后将 attention系数,对应乘回特征矩阵 g 中,然后再上扩展channel数(1*1卷积),与原输入 feature map,X 做残差运算,获得non-local block的输出。
  • 相关阅读:
    Nest.js开发
    面试问题总结(2)
    RabbitMQ消息发送和接收(实例)
    2022-回归日-蔚来已来秋招笔试
    12.权重衰退+QA
    Js节流防抖函数封装学习
    mysql数据库、表、列的字符集和校对规则
    关于安卓recyclerview的子布局中,scrollview滑动冲突问题
    cmip6数据处理之降尺度
    无插件播放之http-flv
  • 原文地址:https://blog.csdn.net/Resume_f/article/details/126195626