文章认为普通的attention存在以下两个问题:
-
对整个序列使用加权和来计算注意力信息,会使相邻token的注意力被削弱。
举个栗子:Amy eat a banana, and Bob eat an apple.
对这个句子中apple求注意力,那么前后两个eat使用普通attention计算得到的的注意力是相同的。但是实际上靠的越近的词,其注意力应该更大才对。
-
multi head attention计算各head注意力的时候是独立的,忽略了head与head之间的联系。
针对上述问题,文章提出了convolutional self-attention network。
背景知识
模型
Vanilla SAN VS 1D-Convolutional SAN VS 2D-Convolutional SAN上图展示了普通self-attention和convolutional self-attention的区别:普通self-attention对整个输入序列计算加权和,而convolutional self-attention只在目标位置的前后固定长度内计算加权和。同时2D-convolutional self-attention加入了不同head之间的关联。
1D Convolutional Self-Attention
其中,为head的数目。表示缩放因子。
本文实验中,窗口的长度设置为11,即。
2D Convolutional Self-Attention
本文实验中,窗口的长度设置为,即。
网友评论