ICLR 2019 | 采用轻量化及动态卷积替代注意力机制

Self-attention是建立语言及图像生成模型的有效机制,其通过比较当前时间步中的各个元素,来决定上下文元素的重要程度。文中提出使用lightweight convolutions替代self-attention,结果表现的就很不错。随后提出了dynamic convolutions,此时卷积核将在当前时间步中通过函数生成,此方法与self-attention相比有较大提升。并且这种方法所需要的计算量与输入的长度呈线性增长,而自注意力则是呈二次增长的。此方法在WMT’14 English-German 的测试集上的BLEU得分为29.7。

论文地址:

https://arxiv.org/abs/1901.10430

代码地址:

https://github.com/pytorch/fairseq

引言

Dynamic convolution每个channel独立进行卷积,注意到放到NLP任务上channel是指embedding的每一维。每一层都有固定的window size,这和self-attention不同。self-attention是所有的context都进行交互,使其计算的复杂度与输入长度呈二次增长关系,在对长句子的计算上将极具挑战性。

模型

其中,GLU(Gate Linear Units):

Depthwise convolutions

传统的卷积核如下:

如果,参数量为,其中为卷积核的宽度。

为降低参数,采用如下depthwise convolutions。

如图所示,,,,。

使用depthwise convolutions,可将参数量由降为,其中为卷积核的宽度。

Lightweight convolutions

如图所示,,分割为3个区域,与相同颜色区域进行相乘,共享参数。

通过Weight sharing,参数的数量继续下降为。

Softmax-normalization 对channel一维进行softmax,相当于归一化每个词的每一维的的重要性(比self-attention更精细)。实验证明,如果没有softmax没办法收敛。

Dynamic convolution

在每一个时间步中,通过函数动态生成卷积核。

其中,是一个线性映射,其中权重,。

在动态生成卷积核时,每个对应的权重,将在当前时间步中通过函数映射生成。其中,右侧图为帮助理解,实际计算中并未进行view步骤。

模型替换

模型在transformer中的位置如下图所示:

如图所示,在encoder端,使用LightCov或DynamicConv替代Multi-Head Attention;在decoder端,LightCov或DynamicConv替代第一层的Masked Multi-Head Attention,并且将Mask放入第二层的。

结论

1.Lightweight convolution的权重尽量少并且在不同的时间步中是不变的,但是结果已经与现有文献最佳结果相当。

2.Dynamic convolution在不同的时间步中生成相应的权重,这点与self-attention相似,但是函数只有当前时间步有关而不是整个上下文。

3.Ligthweight convolution 和 dynamic convolution 在运行时间上都不self-attention快20%。

                                                                                      扫码识别关注,获取更多新鲜论文解读

你可能感兴趣的:(ICLR 2019 | 采用轻量化及动态卷积替代注意力机制)