每周论文5

1️⃣[Neural Turing Machine]

通过模仿冯诺依曼机,引入外部内存(externel memory)。

和普通神经网络一样,与外界交互,获得一个输入,产生一个输出。但不同的是,内部还有一个memory进行读写。
假设memory是一个N × M的矩阵,N是内存的位置数量。

读写memory

①读

其中读的时候对各内存位置线性加权。w是归一化权重。

②写
$e_t$是擦除向量(erase vector)

$a_t$是加和向量(add vector)

具体如何获得权重就不说了。

Controller network

中间的controller network可以是一个普通的feed forward或者RNN。

在实际中NTM用得并不多。


2️⃣[Efficient Contextualized Representation: Language Model Pruning for Sequence Labeling]

ELMo的精简版,通过即插即用的方法来压缩语言模型,对特定任务剪枝不同的层,使得能够减少inference的时间。
这篇的idea挺有创新的,但似乎有些trivial的感觉。

RNN and Dense Connectivity

每一层的输出都会传到所有层作为输入,因此对于L层的输入:

这样我们就能够随意地去掉任意中间层了。同时一些语言信息也分散到各个层,即使去掉某些层也没有关系。

则最终的output为:

最终作projection到正常维度(在每层都会这么做,将输入降维到正常维度再输入):

再做一个softmax:

由于 $h^{※}$ 用于softmax,所以可能和target word,也即下一个词比较相似,因此可能没有很多的上下文信息

所以最终我们使用$h_t$,以及反向的$h_t^r$,再过一层线性层获得最终的embedding(和ELMo有些不同,ELMo是直接拼起来):

Layer Selection

我们在每层的output都加一个权重系数。

我们希望在target task上用的时候,部分z能够变成0,达到layer selection的效果,加快inference的速度。

亦即:

一种理想的方法是L0正则化:

但由于没办法求导,因此,采用L1正则化:

但使用L1正则化有一定的风险,因为如果让所有z都远离1,那么会影响performance。

引入新的正则化方法$R_2 =\delta(|z|_0>\lambda_1) |z|_1$
亦即,只有在非零z的个数大于某个阈值时,才能有正则化效果,保证非零的个数。’it can be “turned-off” after achieving a satisfying sparsity’.

进一步引入$R_3=\delta(|z|_0>\lambda_1) |z|_1 + |z(1-z)|_1$
其中第二项为了鼓励z向0或1走。

Layer-wise Dropout

随机删除部分layer,这些layer的输出不会传入之后的层,但仍然会参与最后的representation计算。

这种dropout会让perplexity更高,但对生成更好的representation有帮助。


3️⃣[Constituency Parsing with a Self-Attentive Encoder]

其中的positional encoding我比较感兴趣。
原版的positional encoding是直接和embedding相加的。
亦即:

那么在selt-attention时,有:

这样会有交叉项:

该项没有什么意义,且可能会带来过拟合。

因此在这边将positional encoding和embedding拼起来,亦即:

并且,在进入multi-head时的线性层也做改变:

这样在相乘的时候就不会有交叉项了。

实验证明,该方法有一定的提升。


4️⃣[DropBlock: A regularization method for convolutional networks]

大致翻了一下。
Motivation:在CNN中,dropout对convolutional layer的作用不大,一般都只用在全连接层。作者推测,因为每个feature map都有一个感受野范围,仅仅对单个像素进行dropout并不能降低feature map学习的特征范围,亦即网络仍可以通过该位置的相邻位置元素去学习对应的语义信息,也就不会促使网络去学习更加鲁棒的特征。

因此作者的做法是,dropout一整块位置。


5️⃣[Accelerating Neural Transformer via an Average Attention Network]

提出了AAN(average attention network),对transformer翻译模型的decode部分进行改进,加速了过程。

由于Transformer在decode阶段需要用到前面所有的y,也即自回归(auto-regressive)的性质,所以无法并行:

过程

给定y:

首先将他们加起来,过一层全连接:

这也相当于就是让所有的y有相同的权重,此时g就是上下文相关的表示。

接下来添加一个gating:

控制了从过去保存多少信息和获取多少新的信息。

和Transformer原版论文一样,添加一个residual connection:

如图整个过程:

总结:AAN=average layer+gating layer

加速

①考虑到加和操作是序列化的,只能一个一个来,不能并行,在这里使用一个mask的trick,使得在训练时也能够并行:

②在inference时的加速:

这样Transformer就能够类似RNN,只考虑前一个的state,而不是前面所有的state。

最终的模型: