艾达AI

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

2019-04-02  本文已影响0人  LC震荡电路

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):$h_l = (X*W+b) \otimes \sigma(X*V+c)$

Depthwise convolutions

传统的卷积核如下:

如果d_{in}=d_{out}=d,参数量为d^2k,其中k为卷积核的宽度。

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

如图所示,i=2c=5k=3O_{2,5}=W_{5,1:3}X_{1:3,5}

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

Lightweight convolutions

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

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

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

Dynamic convolution

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

其中f:R^d \rightarrow R^{H \times k}f是一个线性映射,其中权重W^Q \in R^{H \times k \times d}f(X_i)=\sum^d_{c=1}W^Q_{h,j,c}X_{i,c}

在动态生成卷积核时,每个X_i对应的权重W_i,将在当前时间步中通过函数映射生成。其中,右侧图为帮助理解,实际计算中并未进行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%。

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

上一篇 下一篇

猜你喜欢

热点阅读