神经网络中的注意力机制是模仿人类所拥有的认知注意力,其主要目的是强调信息的重要部分,并尽量淡化不相关的部分。受这一启发,注意力机制被引入计算机视觉任务。通过注意力机制算法,导致图像分类、对象检测、语义分割、视频理解、图像生成、3D视觉等应用性能被大大提高。本文就来详细了解注意力机制的概念。
注意力机制的核心原理
注意力机制允许解码器以灵活的方式利用输入序列中最相关的部分,通过所有编码输入向量的加权组合,最相关的向量被赋予最高权重。
而在深度学习中,注意力机制可以用于解释重要性权重的向量。当我们预测一个计算机视觉任务时,比如分析图像中的像素时,我们使用注意力向量来推断它与其他元素的相关程度。
深度学习如何引入注意力机制
举个例子,在注意力机制被应用之前,机器翻译是基于编码器-解码器RNNs/LSTMs,编码器和解码器都是LSTM/RNN单元的堆栈。翻译模型会读取输入句子并尝试理解,然后再对其进行总结。它将上下文向量传递给解码器,解码器通过查看输入句子来翻译它。
尽管翻译模型能成功运行,但这种方法的有个严重缺点。如果编码器总结不好,翻译结果就也会很糟糕,并且随着输入句子长度的增加,翻译模型的性能会迅速下降。这又被称为RNN/LSTM的长程依赖问题。
那如何解决这一问题呢?注意力机制模型的开创者Bahdanau,开始在上下文向量中考虑所有输入词,并对每个输入词赋予相对重要性。因此,翻译模型每生成一个句子,都会在编码器隐藏状态中搜索一组位置,位置中会有最相关的信息。这个就被称为“注意力机制”。