Transformer 架构基于自注意力机制,在各种应用中取得了出色的性能。
这种方法的主要优点是给定的标记可以与输入序列中的任何标记交互并从第一层开始提取全局信息,而 CNN 必须堆叠多个卷积或池化层才能实现感受野,这将涉及整个输入序列。
接受域是指输出所依赖的输入信号中时间戳的数量。例如,对于两个Conv1D
具有kernel_size=3
感受野的序列是 5。在变压器中,第一个块的输出取决于整个序列。
然而,这在香草公式中会产生大量的计算和内存成本:
已经提出了各种机制,试图减少这种计算量:
- 随机注意
- 窗口(局部注意)
- 全球关注
所有这些形式的注意力如下图所示:
并且可以将这些方法中的不同方法结合起来,就像在Big Bird 论文中一样
我的问题是关于本地注意力,只关注大小固定邻域中的令牌. 通过这样做,可以将操作数量减少到:
Local self-attention 对 CNN 有什么优势,还是只有与其他形式的注意力结合使用才有好处?