每周论文7

1️⃣[Convolutional Self-Attention Network]

对self-attention进行改进,引入CNN的local-bias,也即对query的邻近词进行attention而不是所有词;将self-attention扩展到2D,也即让不同的head之间也有attention交互。

Motivation

1️⃣the normalization in Softmax may inhibits the attention to neighboring information 也即邻居的信息更重要,要加强邻居的重要性

2️⃣features can be better captured by modeling dependencies across different channels 对于不同的channel/head也增加他们之间的交互。

方法

对于1D的convolution:选取中心词周围一个window:

对于2D的convolution,则有:

在具体实践中,只对前三层添加local bias,这是因为modeling locality在底层更有效,对于高层应该捕获更远的信息。


2️⃣[Modeling Localness for Self-Attention Networks]

和上文一样,引入local bias对self-attention进行改进,从而提升了翻译表现。和上文是同一作者,发在EMNLP上。

Motivation

1️⃣self-attention存在的问题:虽然能够增加长程关注,但因此会导致注意力的分散,对邻居的信号会忽略。实践证明,对local bias建模在self-attention有提升。

2️⃣从直觉上来说,在翻译模型中,当目标词i与源语言词j有对齐关系时,我们希望词i能同时对词j周围的词进行对齐,使得能够捕获上下文信息,如phrase的信息。

方法

在原来的公式上添加G:

也即:

G是一个alignment position matrix(对齐位置矩阵),元素ij代表目标词i与源语言词j之间的紧密程度。
我们每次根据目标词i预测一个源语言的中心词,则$G_{ij}$则为:

$P_i$就是对于目标词j而言源语言的中心词。 $\sigma$ 手动设定,通常是$\frac{D}{2}$,D代表窗口大小。

也即最终我们需要计算的是,中心词$P_i$和窗口$D$。

计算$P_i$

利用对应的目标词i的query即可:

$p_i$是一个实数。

计算window size

①固定窗口,将其作为一个超参。

②Layer-Specific Window
将该层所有的key平均,计算出一个共享的window size:

③Query-Specific Window
每个query都有自己的window size

实验分析与结论

①将model locality用于低层效果会更好,这是因为低层对相邻建模,而越高层越关注更远的词。

②将model locality放在encoder和encoder-decoder部分会更好(transformer有三个地方可以放)


因为decoder本身就倾向关注临近的词,如果继续让其关注临近的词,那么就难以进行长程建模。

③越高层,window size(scope)越大。

也即,在底层更倾向于捕获邻近词的语义;而高层倾向捕获长程依赖。但这不包括第一层,第一层是embedding,还没有上下文信息,因此倾向于捕获全局信息。


3️⃣[Effective Approaches to Attention-based Neural Machine Translation]

提出两种attention机制的翻译模型,global和local。

本文与原版的翻译模型略有不同:

c是context,h是decode的隐层。

global attention

计算attention分数:

score有多种选择:

注意到该模型与第一个提出attention based的模型不同之处:
$h_t -> a_t -> c_t -> \tilde{h_t}$
原版是:
$h_{t-1} -> a_t -> c_t -> h_t$

local attention

由于global attention计算代价高,且对于长句效果不好,我们可以选择一部分来做attention。
首先生成一个对齐位置$p_t$,再选择一个窗口$[p_t - D,p_t + D]$,其中D是超参。

如何获得$p_t$?
①直接假设$p_t=t$,也即source和target的位置大致一一对应。

②做预测:

其中S是source的句子长度。

接着,以$p_t$为中心,添加一个高斯分布。最终attention计算公式:

其中align和上面一致:

也就是说,将位置信息也考虑进来。

Input-feeding Approach

motivation:在下一次的alignment(也就是计算attention)之前,应当知道之前的alignment情况,所以应当作为输入信息传进下一层:

注意这里和Bahdanau的不同。Bahdanau是直接用上下文去构造隐层。这里提出的模型相对更为通用,也可以被应用于非attention的模型中(也就是每次将encoder的最后一层作为输入在每个time step都输入)


4️⃣[Towards Linear Time Neural Machine Translation with Capsule Networks]

思想:利用capsule提前生成source sentence的固定长度的表示,在decode的时候直接使用,而不需要attention,以达到线性时间NMT的目的。

Motivation:attention-based的NMT时间复杂度为$|S|\times |T|$,而本文希望能够将NMT减少到线性时间。而传统不加attention的NMT通常使用LSTM最后一层隐层作为源语言的encode信息传入decode,但这样的信息并不能很好地代表整个句子,因此本文使用capsule作为提取source sentence信息的方法,利用capsule生成固定长度表示,直接传入decode端,以达到线性时间的目的。

问题定义

对于embedding:

希望能够转换成固定长度的表示C:

我们首先通过一个双向的LSTM:

一种简单的获取C的方法:

其中$h_1$和$h_L$有互补关系。

本文使用capsule提取更丰富的信息。

在decode阶段,由于拥有固定表示,那么就不需要attention:


总体架构:

Aggregation layers with Capsule Networks


实际上就是dynamic routing那一套,对信息进行提取(论文公式有误就不贴图了)

算法:

最终获得了:


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

重读了一遍。
介绍一种新型的dropout,可用于卷积层提高表现。通过大量的实验得出许多有意义的结论。本文发表于NIPS2018。

Motivation

由于卷积层的feature相互之间有联系,即使使用了dropout,信息也能够根据周围的feature传到下一层。因此使用dropblock,一次将一个方块内的都drop掉。

算法

其中有两个超参:①block_size表示块的大小;γ表示有多少个unit要drop掉,等价传统的dropout的p。当block_size=1时等价dropout;当block size=整个feature map,等价于spatial dropout。

在实践中,通过以下公式计算γ:

(why? 通过计算期望的方式将传统dropout的keep_prob与当前的γ联系起来,得到一个等式,整理即可获得上式)

在实验中,还可以逐渐减小keep_prob使得更加鲁棒性。

实验&结论

①效果:dropout< spatial dropout < dropblock

②dropblock能有效去掉semantic information

③dropblock是一个更加强的regularization

④使用dropblock的模型,能够学习更多的区域,而不是只专注于一个区域

对于resnet,直接将dropblock应用于添加完skip connection后的feature能够有更高的表现。


6️⃣[Contextual String Embeddings for Sequence Labeling]

提出一种建立在character基础上的新型的上下文embedding(contextualized embedding)。用于sequence labeling。本文发表于coling2018。

方法

整体架构:

首先将character作为基本单位,过一个双向LSTM,进行language model的建模。

如何提取一个词的词向量:

提取前向LSTM中该词的最后一个character的后一个hidden state,以及后向LSTM中第一个词的前一个hidden state, 如上图所示。最终拼起来即可:

因此该词不仅与词内部的character相关,还跟其周围的context有关。

sequence labeling我不感兴趣,该部分没看。

Discussion

相比word level的language model,character-level独立于tokenization和fixed vocabulary,模型更容易被训练,因为词表小且训练时间短。