Feedback Transformer:改进Transformer的序列信息提取能力.

循环神经网络RNN被用来处理序列数据,它根据当前时刻的输入和前一时刻的隐状态生成当前时刻的隐状态。RNN面临着长程依赖(Long-Term Dependencies)问题,即早期的某个序列信息,需要经过很长的路径才能传递给后面的序列,从而导致较难建立起和较早时间步信息的依赖关系。

Transformer引入了自注意力机制,该机制使得每个序列的中间特征都是由所有序列共同计算得到的,从而可以捕捉全局信息。然而Transformer使得序列的顺序不再重要(尽管引入位置编码一定程度上缓解了这个问题),其结构因其并行计算的特性有很高的计算效率,但是这种特性限制了Transformer提取序列信息的能力,这体现在底层表示无法获得高层表示信息。值得一提的是,本文主要讨论Transformer的解码器结构(如GPT-3),其输入是单向的,即每个位置的输出由当前位置及之前所有位置的输入决定。

Transformer中的自注意力如下图左所示。对于第$t$个输入序列的第$l$层特征$x_t^{l}$,其是由第$l-1$层的前$\tau$个输入序列特征(设定一个memory size的窗口长度$\tau$)共同决定的:

\[x_t^{l} = \text{FF}( \text{Attn}(x_t^{l-1},\{x_{t-\tau}^{l-1},...,x_{t-1}^{l-1}\}))\]

显然前面输入序列的高层特征(如$x_{t-1}^{l+1}$)无法传递给后面输入序列的低层特征$x_{t}^{l}$。由于高层特征含有更高级的语义信息,因此在某些任务中较为重要。作者提出一种Feedback Memory结构,能够将前面输入序列的不同层次特征传递给后面输入序列,其实现过程如下图右所示。具体地,对于第$t$个输入序列,使用可学习的参数对其所有层次特征进行softmax加权(类似于注意力机制),并将该特征作为后面序列的特征输入:

\[x_t^{l} = \text{FF}( \text{Attn}(x_t^{l-1},\{m_{t-\tau},...,m_{t-1}\}))\] \[m_t = \sum_{l=0}^{L} \text{softmax}(w^l)x_t^l\]

下图表明,当memory size较小时(即自注意力只能在较小的窗口区域内计算),Feedback Transformer仍然能取得较好的性能: