每周论文2

1️⃣[An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling]

本文贡献:提出一种新的模型TCN(Temporal Convolutional Networks)进行language model建模。

Dilated convolution

每一层的感受野都可以是不同的,也即,同样的kernel size,高层的可以跳着看。

每层的d逐渐增大(也即跳的步数),一般按指数增大。(我觉得这样很有道理,如果每一层的d都是一样的,那capture到的信息就会有重复,能看到的视野也不如逐渐增大的多)

Residual block

这边的residual block比较复杂;一个值得主意的细节是,因为感受野的不同,上层的感受野总是比下层的大很多,因此不应该直接将下层的加到上层,而是可以使用一个1*1的convolution对下层的x进行卷积,这就类似scale对输入进行放缩。


2️⃣[Dissecting Contextual Word Embeddings: Architecture and Representation]

一篇分析的文章。ELMo作者的又一篇文章。

对比三种不同的建模方式(LSTM/GCNN/Transformer)获得的词向量,以及在不同任务上的表现;以及不同层获得的不同信息…获得了不同的结论。

①biLM 专注于word morphology词的形态;底层的LM关注local syntax;而高层的LM关注semantic content;

②不同的任务会有不同的正则化s的倾向。


3️⃣[Transformer-XL: Language modeling with longer-term dependency]

利用Transformer进行language model,与普通的Transformer建模不同的是,Transformer-XL添加了历史信息,能够显著提升表现。这篇还在ICLR2019审稿中。

贡献:本文提出了能够进行长程依赖的基于Transformer的语言模型 Transformer-XL;引入相对位置的positional encoding。

结构

原先的transformer language model是将句子分为一个一个segment。segment之间是没有联系的。(为什么不直接按原版的Transformer那样所有的词都相互做self-attention?因为考虑到效率问题,句子长度可能会很长)

训练阶段:

而在测试阶段,每次向右滑动一格:

这样每一个时间步都要重新计算一遍,历史信息没有利用到。显然速度很慢。

在Transformer引入recurrence,也即引入历史信息。基于这样的想法,提出的新模型Transformer-XL。在结构上同样分为每个segment,但在每个阶段都接收上一个(甚至上L个)历史信息。

训练阶段:

而在测试阶段,同样分为segment,但因为接收了历史信息,不需要每次滑动一格也能获得大量信息。

具体来说:

SG代表stop gradient,和该阶段的hidden state进行拼接。

RELATIVE POSITIONAL ENCODINGS

如果我们使用了absolute positional encodings(也即原版的positional encodings)那么会出现这种情况

在同一层之间的前一个segment和后一个segment使用了同样的绝对位置信息,对于当前segment的高层,对于同一个位置i,无法区分该位置信息是来自当前segment的还是上一个segment的(因为都是同样的绝对位置)。

因此我们引入相对位置信息R,其中第i行代表相对距离i的encoding。

具体来说:

首先我们在传统的计算$query_i$和$key_j$的attention分数时,可以拆解成:


(因为query=(embedding E +positional embedding U),key也一样,将式子拆开就能获得上述式子)

我们将该式子进行修改:

第一,将出现了absolute positional embedding $U$的地方,统统改成$R_{i-j}$,也即在b和d项。其中这里的R和原版的Transformer的位置计算公式相同。

第二,在c项中,使用一个$u$替代了$U_i W_q$,这一项原本的意义在于,$query_i$的positional encoding对$key_j$的embedding进行attention,也就是说,该项表现了$query_i$位置对哪些$key_j$的内容有兴趣,作者认为query不管在哪个位置上都是一样的,也就是说query的位置信息应当没影响,所以统统替换成一个可学习的$u$。基于类似的理由d项换成了$v$。

第三,将$W_k$细分成了两个$W_{k,E}$和$W_{k,R}$。这是根据query是Embedding还是positional encoding来区分的。for producing the content-based key vectors and location-based key vectors respectively

每一项现在都有了不同的意义:

Under the new parameterization, each term has an intuitive meaning: term (a) represents contentbased addressing, term (b) captures a content-dependent positional bias, term (c) governs a global content bias, and (d) encodes a global positional bias.

最后总结一下整个结构:

与原版Transformer不同的是,Transformer-XL在每一层都添加了位置信息。


4️⃣[Trellis Networks for Sequence Modeling]

一种结合RNN和CNN的语言建模方式。

最小的单元结构:

也即:

接下来再处理非线性:

因为每层都要输入x,且W是共享的,所以我们可以提前计算好这一项,后面直接用即可。

最终在实现的时候是:

总体框架:

与TCN(temporal convolution network)不同之处:①filter weight不仅在time step之间共享,在不同层之间也共享;②在每一层都添加了输入

优点:共享了W,显著减少了参数;‘Weight tying can be viewed as a form of regularization that can stabilize training’

我们还可以扩展该网络,引入gate:


5️⃣[Towards Decoding as Continuous Optimisation in Neural Machine Translation]

一篇很有意思的paper。用于NMT decode的inference阶段。这篇有一定的难度,以下只是我的理解。

思想

Motivation:
NMT中的decode inference阶段,通常都是从左到右的,这样有个缺点,就是整体的target之间的依赖是没有被充分利用到的,比如说生成的词的右边是没有用到的。那么我们为什么不直接全部生成呢?然后不断更新。也就是说我们将离散(discrete)的decode过程变成一个连续的过程(continuous optimization)。

假设我们已经训练好模型,给定一个句子,我们要翻译成目标句子,且假设我们已知要生成的句子长度是l,那么我们有:

我们要找到一个最优的序列$y$,使得$-log$最小。

等价于:

其中$\widetilde{y}_i$是one-hot。其实这里就是假设有这么一个ground truth,但实际上是没有的。

我们将$\widetilde{y}_i$是one-hot这个条件放宽一些,变成是一个概率单纯型(其实就是所有元素加起来是1,且都大于等于0)。

那么就变成了:

这个改变的本质是:

就是说原来one-hot的$\widetilde{y}_i$生成后丢到下一个时间步,取了一个词向量,接着计算。现在是一个概率分布$\hat{y}_i$丢进来,就相当于取了多个词向量的加权求和。

在利用下述的更新算法更新完$\hat{y}_i$之后,对于每个时间步t,我们找$\hat{y}_i$中元素最大的值对应的词作为生成的词。

有两种方法Exponentiated Gradient 和 SGD。实际上方法倒在其次了,主要是前面所述的continuous optimization这种思想。

算法

Exponentiated Gradient


具体见论文

SGD

因为我们要保证单纯形的约束不变,因此我们引入一个r,然后做一个softmax

应用

这种连续decode可以用在哪?

Bidirectional Ensemble

可以很方便地进行双向的生成:


而在传统的方法中没办法(很难)做到

Bilingual Ensemble

我们希望源语言到目标语言和目标到源语言都生成得好

问题

$\hat{y}_i$的初始化很重要,一不小心就会陷入local minima;生成的速度慢


6️⃣[Universal Language Model Fine-tuning for Text Classification]

和ELMo、OpenAI GPT一样,都是预训练语言模型,迁移到其他任务上(这里是分类任务)。可以在非常小的数据集上有很好的效果。

贡献:

  1. 迁移学习模型ULMFiT
  2. 提出几种trick:discriminative fine-tuning, slanted triangular learning rates,gradual unfreezing ,最大保证知识的保留。

模型

三部曲:

  1. 通用语言模型预训练
  2. 目标任务的语言模型fine-tuning
  3. 目标任务的分类fine-tuning

trick

Discriminative fine-tuning

Motivation:不同层有不同的信息;应当fine-tune 不同程度,也即使用不同的learning rate。

作者发现上一层的学习率是下一层的2.6倍时效果比较好。

Slanted triangular learning rates (STLR)

具体公式:

Gradual unfreezing

从顶层到底层,一步一步unfreeze,也即从上到下fine-tune。这是因为最上一层有最少的general knowledge。