局部注意力对卷积有什么好处吗?

人工智能 卷积神经网络 注意力 卷积
2021-10-26 09:38:30

Transformer 架构基于自注意力机制,在各种应用中取得了出色的性能。

这种方法的主要优点是给定的标记可以与输入序列中的任何标记交互并从第一层开始提取全局信息,而 CNN 必须堆叠多个卷积或池化层才能实现感受野,这将涉及整个输入序列。

接受域是指输出所依赖的输入信号中时间戳的数量例如,对于两个Conv1D具有kernel_size=3感受野的序列是 5。在变压器中,第一个块的输出取决于整个序列。

然而,这在香草公式中会产生大量的计算和内存成本:

O(L2)
在哪里L是序列的长度。

已经提出了各种机制,试图减少这种计算量:

  • 随机注意
  • 窗口(局部注意)
  • 全球关注

所有这些形式的注意力如下图所示:

在此处输入图像描述

并且可以将这些方法中的不同方法结合起来,就像在Big Bird 论文中一样

我的问题是关于本地注意力,只关注大小固定邻域中的令牌K. 通过这样做,可以将操作数量减少到:

O(LK)
但是,现在它和普通卷积一样是局部的,全局感受野只能通过堆叠多层来实现。

Local self-attention 对 CNN 有什么优势,还是只有与其他形式的注意力结合使用才有好处?

1个回答

确实,当使用窗口大小为 5 的局部注意力时,“感受野”与内核大小为 5 的 CNN(或内核大小为 3 的两个 CNN 层)相同。然而,学习的权重如何应用于输入有一个关键的区别。

在 CNN中,许多卷积核的值是被学习的,但是一旦学习,这些核是静态的换句话说,在输入中的每个位置(无论是一维信号还是二维图像),都取窗口内的输入与相同的 CNN 内核之间的点积,然后应用一个非线性函数。

注意,查询/键/值矩阵还允许考虑上下文不是使用一组固定内核获取输入区域的点积,而是有效地使用附加矩阵为每个位置动态计算一组新的内核。“注意”基本上通过使用 Q、K 和 V 计算更高值的权重来计算每个卷积,哪些输入是重要的(网络应该“注意”哪些输入)。

我强烈建议阅读原始“Attention is All You Need”论文的细分,例如这篇博文:https ://jalammar.github.io/illustrated-transformer/