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%。
扫码识别关注,获取更多新鲜论文解读