Convolutional Self-Attention Network

文章认为普通的attention存在以下两个问题:

  • 对整个序列使用加权和来计算注意力信息,会使相邻token的注意力被削弱。
    举个栗子:

    Amy eat a banana, and Bob eat an apple.

    对这个句子中apple求注意力,那么前后两个eat使用普通attention计算得到的的注意力是相同的。但是实际上靠的越近的词,其注意力应该更大才对。

  • multi head attention计算各head注意力的时候是独立的,忽略了head与head之间的联系。
    针对上述问题,文章提出了convolutional self-attention network。

背景知识

  • Attention Mechanism
  • Multi-head Attention

模型

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

\begin{aligned} y _ { i } ^ { h } & = \sum _ { j = i - m } ^ { i + m } \alpha _ { i j } ^ { h } \left( x _ { j } W _ { V } ^ { h } \right) \\ \alpha _ { i j } ^ { h } &= \frac { \exp e _ { i j } ^ { h } } { \sum _ { t = i - m } ^ { i + m } \exp e _ { i t } ^ { h } } \\ e _ { i j } ^ { h } & = \lambda \left( x _ { i } W _ { Q } ^ { h } \right) \left( x _ { j } W _ { K } ^ { h } \right) ^ { T } \end{aligned}
其中,为head的数目。表示缩放因子。
本文实验中,窗口的长度设置为11,即。

2D Convolutional Self-Attention

\begin{aligned} y _ { i } ^ { h } & = \sum _ { s = h - n } ^ { h + n } \sum _ { j = i - m } ^ { i + m } \alpha _ { i j } ^ { h s } \left( x _ { j } W _ { V } ^ { s } \right)\\ \alpha _ { i j } ^ { h s } & = \frac { \exp e _ { i j } ^ { h s } } { \sum _ { k = h - n } ^ { h + n } \sum _ { t = i - m } ^ { i + m } \exp e _ { i , t } ^ { h k } } \\ e _ { i j } ^ { h s } & = \lambda \left( x _ { i } W _ { Q } ^ { h } \right) \left( x _ { j } W _ { K } ^ { s } \right) ^ { T } \end{aligned}
本文实验中,窗口的长度设置为,即。

你可能感兴趣的:(Convolutional Self-Attention Network)