注意力机制

作者: Junr_0926 | 来源:发表于2018-08-29 16:24 被阅读85次

1. 前言

神经网络在进行特征提取的时候,会将所有的输入进行处理,提取得到的特征并没有进行特别的处理。那么,如果神经网络能够像人一样,并不是“观察”到所有的特征,而是只“注意”到那些真正关心的特征呢?

2. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention

虽然注意力机制常常用于语音处理,也就是RNN,但是在图像处理上,也有非常有趣的应用。例如这篇论文,使用神经网络对图片进行描述。这篇论文两年前就读过,但是当时也是瞎学一通,今天,抽出时间再次拜读一下。

论文的主要贡献:

  • 作者介绍了两种注意力,一种是soft,它可以使用BP算法求解,一种是hard
  • 作者介绍了将注意力可视化的方法
  • 作者对结果进行了量化验证

2.1 模型介绍

作者采用了常见的sequence to sequence形式,就是通过一个encoder将图片转换为了一个特征向量,再通过decoder将这个向量转换为一串输出。

Encoder:作者使用了传统的CNN作为encoder,通过CNN对一个图片进行了特征提取。作者将特征称为annotation向量。不同的是,作者没有从最后一层fc层中提出特征,而是从中间的卷积层提取特征,因此得到的特征是一个矩阵,而不是一个向量。如下图 L个向量,向量维度是D

annotation
其中每一个特征向量对应图片的一个部分。

Decoder:作者在decoder的选择上也非常简单,就是LSTM。LSTM就是一个加强版的RNN cell。它通过设计门结构,使得cell拥有长时记忆。如下:

LSTM
公式如下:
LSTM
注意,每个时刻LSTM cell的输入是:上个时刻的状态 hard attention
也就是说,在 梯度
进一步
梯度
我理解就是,由于位置的选择是根据概率来决定的,就像给定 soft

在文章中还有关于 输出单词,注意多个地方等的讨论,具体请参考。

3. Neural Machine Translation by Jointly Learning to Align and Translate

这篇貌似是最早引入注意力机制的文章,它在机器翻译中引入了注意力。同样,作者是使用sequence to sequence框架进行训练。

3.1 模型

Decoder:作者定义新的条件概率:

条件概率
也就是说,当网络预测新的词的时候,是根据上一个预测的词 context
它们的权重 weight
其中, alignment model

Encoder
作者使用了一个双向的RNN作为encoder,双向的RNN类似于普通的RNN,但是它又进一步提取了输入反向输入时的特征,具体可以参考论文。

4. Attention Is All You Need(TODO)

在这篇论文中,作者提出了一种新的网络结构,称之为Transformer,里面仅仅使用了注意力机制,抛弃了之前的RNN,CNN等结构。
作者认为,在传统的RNN结构中,在计算过程中需要cell的hidden state h_t。因此,在每个时刻t,都需要之前的结果,这使得训练无法并行化,因此,在训练长的句子的时候,就无法使用大的batch来训练,因为GPU的显存有限。
在论文中,作者提出了Transformer,避开了RNN,将input和output仅仅通过注意力机制连接起来。并且,Transformer允许更多的并行处理。

4.1 模型结构

如下图:


结构

结构依然采用了encoder-decoder的架构。
** Encoder:整个encoder由6个相同的层堆叠成,每一层有两个子层,第一个子层是multi-head self-attention mechanism,第二个子层是一个简单的position-wise fc层。作者在每个子层间加入了layer normalizationresidual connection。也就是说,每个子层的输出是:LayerNorm(x + Sublayer(x))

** Decoder:decoder同样由6个相同的层堆叠成。除了像encoder中的两个子层,decoder还加入了第三个子层,它对encoder的输出进行multi-head attention**。

4.2 注意力

注意力机制可以描述为将一组query 和 一组输入 映射为一组输出,通常情况下这个输出由输入的加权得到,权重由query 和 输入来决定。

Scale Dot-Product Attention:如下图:

Scale Dot-Product Attention
输入由 queries Multi-Head Attention

公式如下:


公式

4.3 如何在模型中应用注意力机制

论文提出的模型中,有三个不同的方式来应用注意力机制。

  • queries来自于前一个decoder层,keys, values来自于encoder的输出。这样的话,允许decoder关注到输入的所有位置(之前的)。
  • 在encoder中,包含一个self-attention层。在这个层中,keys, values, queries都来自于同一个地方,例如:上一个encoder层的输出。这样的话,每一次encoder都可以注意到之前所有encoder的输出。
  • 类似地,可以在decoder中加入一个self-attention层,来观察到之前所有层的输出。但是,我们需要防止前面层的信息淹没了decoder当前的信息,we need to prevent leftward information flow in the decoder to preserver the auto-regressive property,作者通过使用mask,去掉了所有不合理的连接。

4.4 Positional Encoding

为了在输入中保留位置信息,作者加入了位置编码。如下:

positional encoding
其中 pos 是位置, i 是纬度。

相关文章

  • pytorch中加入注意力机制(CBAM)

    第一步:找到ResNet源代码在里面添加通道注意力机制和空间注意力机制所需库 通道注意力机制 空间注意力机制 在R...

  • 注意力机制学习

    简要介绍: 所谓的注意力机制,其实就是让系统学会注意力-即关注重点信息忽略无关信息。带有注意力机制的系统,不仅可以...

  • transformer模型

    参考文章Transformer注意力机制有效的解释:Transformer所使用的注意力机制的核心思想是去计算一句...

  • 【Transformer理解】

    Transformer是一个利用注意力机制来提高模型训练速度的模型。关于注意力机制可以参看这篇文章[https:/...

  • 不得不说的事儿,Attention和Transformer

    注意力机制和Transformer,All u need is Attention!

  • Selective Kernel Networks(Upgrad

    SENet是对特征图的通道注意力机制的研究,之前的CBAM提到了对特征图空间注意力机制的研究。这里SKNet针对卷...

  • 注意力机制

    (一)注意力机制 接下来的这部分就是序列模型中transformer的重要部分了我门先从注意力机制开始入手。 (1...

  • 注意力机制

    1. 前言 神经网络在进行特征提取的时候,会将所有的输入进行处理,提取得到的特征并没有进行特别的处理。那么,如果神...

  • 注意力机制

    注意力机制在机翻里相当于词对齐,只不过比单纯的词对齐更精细。在seq2seq中加入注意力机制这一步相当于用giza...

  • 注意力机制

    注意力模型最近几年在深度学习各个领域被广泛使用,无论是图像处理、语音识别还是自然语言处理的各种不同类型的任务中,都...

网友评论

    本文标题:注意力机制

    本文链接:https://www.haomeiwen.com/subject/isfkwftx.html