为什么我们要在卷积神经网络中使用注意力,我们将如何应用它?

人工智能 深度学习 卷积神经网络 循环神经网络 注意力
2021-11-08 12:45:06

注意力已广泛用于循环网络中,以对模型学习的特征表示进行加权。这不是一项简单的任务,因为循环网络具有捕获序列信息的隐藏状态隐藏状态可以输入到一个小的 MLP 中,该 MLP 生成一个上下文向量,总结隐藏状态的显着特征。

在 NLP 的上下文中,卷积网络并不那么简单。他们有通道的概念,通道是输入的不同特征表示,但通道是否等同于隐藏状态?特别是,这对我提出了两个问题:

  • 为什么要在卷积网络中使用注意力?卷积已被证明是熟练的特征检测器——例如,众所周知,较高层学习边缘等小特征,而较低层学习更多抽象表示。注意力会被用来分类和权衡这些特征吗?

  • 在实践中,注意力如何应用于卷积网络?这些网络的输出通常是(batch, channels, input_size)(至少在 PyTorch 中),那么如何将循环网络中的注意力操作应用于卷积网络的输出呢?


参考

卷积序列到序列学习,Jonas Gehring、Michael Auli、David Grangier、Denis Yarats、Yann N. Dauphin,2017

1个回答

似乎在您提供的参考资料中,他们使用注意力来根据解码器提供的上下文计算编码器表示的权重(图 1)。据我所知,注意力是卷积之后应用的(实际上是在 GLU 步骤之后),所以它不会直接影响特征图。相反,注意力用于在解码器中选择目标词。在其他论文(例如,这篇论文)中,注意力以与您描述的更相似的方式直接应用于特征图。

关于您的第二个问题,您参考的论文实际上提供了他们使用的源代码的链接。它是用 Lua(使用 Torch)而不是 PyTorch 编写的,可能是因为论文发表时 PyTorch 的开发才刚刚开始。无论如何,您应该能够按照 Lua 代码并将其翻译成 PyTorch。