简要介绍:
所谓的注意力机制,其实就是让系统学会注意力-即关注重点信息忽略无关信息。带有注意力机制的系统,不仅可以自主学习注意力,还可以帮助我们更好的理解神经网络。现在,在计算机视觉当中大多数都是通过掩码来生成注意力,掩码本质上是一组新的权重,可以帮助我们找到需要关注的信息。
目前主要演化出了两种注意力,一种是软注意力,其重点关注的是区域或通道,这种注意力是固定的,可微的;另一种是强注意力,其重点关注的是点,不可微,一般通过强化学习获得。
一、Show , Attend and Tell : Neural Image Caption Generation with Visual Attention
提出了两种注意力方法:使用基本反向传播训练的Soft Attetnion方法和使用强化学习训练的Hard Attention方法。论文关于注意力机制的表述主要在以下几个方面:
1)强注意力机制
其中,代表不同的区域,只有0跟1两个值,代表是否被选中,文中将其视为一个隐变量,是位置信息的伯努利分布,此处只是简单介绍,具体推导请看原文。
2)软注意力机制
与强注意力机制不同,软注意力机制对所有的区域都关注,但关注的重要程度不一样。
二、Effective Approaches to Attention-based Neural Machine Translation
提出两种注意力结构,一种global attention,一种local attention。
1、global attention是一种soft attention模型
这种结构将每个时间步都考虑了进去,每个时间步的attention值为:
2、location attention是一种soft attention与hard attention相结合的注意力机制,其只关注一部分source的状态,网络结构如下:
三、Attention Is All You Need
目前有两种常用的注意力函数,一种是加法注意力,一种是点乘注意力,论文用的是点乘注意力,这种注意力更快,更节省空间。事实上,注意力机制就是由query与key-value对组成的映射函数,如下:
通过编码生成key-value,之后解码生成query,利用key与query生成注意力的权重。
论文的一个创新,就是提出了自注意力机制,即用多头注意力实现,实际是对query与key作多次的线性映射。
四、Non-local Neural Networks
有些时候,我们有非局部的需求,所以文章提出了non-local block,用来解决这个问题。
1、主要思想:是一种类似注意力掩膜的东西,可以考虑全部的像素点,且不改变尺寸。
是输入信号,是输出信号,是一种度量函数,用来度量不同位置像素的相关性,是一个映射函数,来计算某个点的特征,加权求和之后再进行一个归一化的处理。
一般来说,度量函数有以下四种形式:
为了简单,将设为1*1的卷积。这种模块,与全连接结构有一定的类似,可以这样说,全连接其实是一种特殊的non-local,但是,全连接结构损失了位置的相关性。
2、为什么说这种结构类似于注意力机制呢?是因为这种思想的本质其实就是对不同位置的像素点进行加权,由以下的公式也可以看出:
就是自注意力机制的那种形式。
3、为了将non-local block加入到cnn结构中,论文将这个模块设计成了残差结构:
PS:这里只是对注意力机制的简单介绍,具体的细节还是要通过论文学习
网友评论