每周论文16

本周论文:

  1. MEASURING THE INTRINSIC DIMENSION OF OBJECTIVE LANDSCAPES
  2. Fine-Grained Attention Mechanism for Neural Machine Translation
  3. Competence-based Curriculum Learning for Neural Machine Translation

1️⃣[MEASURING THE INTRINSIC DIMENSION OF OBJECTIVE LANDSCAPES]

本文探究深度学习中的过量参数问题,通过定义intrinsic dimension,去衡量特定模型在特定数据集上所需维度。

在给定模型结构和loss function时,整个优化空间也随之确定,训练过程类似于在一个空间内移动使得loss尽量小。

给定一个有D个参数的模型,通过限制训练随机slice的参数,也即选取一个随机有d个参数的子空间训练,不断增加d,使得预定义的solution第一次出现,则称d为intrinsic dimension,可以理解为该d是解决某特定问题所需的参数量。

如何做?
$\theta^{(D)}=\theta_{0}^{(D)}+P \theta^{(d)}$
其中P是随机生成的$D\times d$的投影矩阵,而$\theta (d)$ 是子空间的参数;$P$是固定的而不是可训练的,且$P$可以是归一化为单位长度且正交的。

(这里的投影现在还是不能理解?等之后看这方面的论文再说吧)

因为一些随机性以及实际效果问题,比如正则化效果在子空间无法达到在全空间的效果,因此在这里定义$d_{\mathrm{int} 90}$,也即达到baseline的90%所需要的参数量。

一些结果:

MNIST的模型可以看到所需参数非常少;横向对比,CNN会比全连接所需的少多了,这也符合我们的直觉,也即CNN比全连接更高效。

在全连接中,对于模型不同的宽度以及layer数,发现他们的dint90相差不大,说明对于特定任务,同一个模型家族所需要的参数量是类似的。


2️⃣[Fine-Grained Attention Mechanism for Neural Machine Translation]

本文提出对attention进行细化,将原来的每个词分配一个score扩展为每个词分配d维个score,并在机器翻译上有一定提升。

简单地说,原来的attention机制是:
$e_{t^{\prime}, t}=f_{\mathrm{Att}}\left(\boldsymbol{z}_{t^{\prime}-1}, \boldsymbol{h}_{t}\right)$

其中$t^{\prime}$是decoder端的时间步,$t$则是encoder端的第$t$个词。

而本文的细粒度attention机制:
$e_{t^{\prime}, t}^{d}=f_{\mathrm{Att} \mathrm{Y} 2 \mathrm{D}}^{d}\left(\boldsymbol{z}_{t^{\prime}-1}, \boldsymbol{h}_{t}, \boldsymbol{y}_{t^{\prime}-1}\right)$

也即在原来的基础上做了d次操作,也即实际上在获得每一维的分数时,是能看到其他维的信息的。(如果是我自己做,我可能会将他们隔绝开来。)

思考:
将RNN作为baseline,为什么不使用transformer?当时transformer已经出了,可能是transformer上没效果?因为transformer自带多head,可能表示能力就已经足够了。


3️⃣[Competence-based Curriculum Learning for Neural Machine Translation]

介绍

提出一种新的训练翻译模型的算法,基本思想是让模型从简单的样例开始学起,随着训练过程的进行逐渐增加难度较大的样例,该方法能够增强模型训练的稳定性,且在效果上也有提升,同时还能减少收敛所需的训练时间。

论文的Motivation:如果训练数据以特定的顺序输入,也即从简单的数据开始学,等到模型有一定的能力后再去学难的数据,这样也更符合人类的直觉;同时,从机器学习的角度去看,这种方法可以避免过早陷入不好的局部最优解。

论文还提到了对于翻译而言,模型很难训练,需要复杂的调参,费时费力。特别是对于Transformer而言,需要精细的learning rate schedule。

本文提出的方法,只有一个参数,因此不需要精细的调参,同时因为只改变输入的pipeline,因此很方便地使用到已有的模型。

方法

引入两个概念:
Difficulty:代表一个训练样例的难度,可能和模型当前的状态相关。比如句子长度就是衡量样例难度的一个指标。

Competence:范围0-1的数值,代表模型训练的进度,定义为模型状态的一个函数。更进一步,定义$c(t)$为模型在时间步t所允许使用的训练样例的比例。也即训练样例根据difficulty排列,在时间步$t$只允许top $c(t)$的数据使用。

根据上述两个定义,引入算法:

那么有两个问题,如何衡量difficulty以及competence?

Difficulty Metrics

①句子长度
长句子更难翻译,因为长句子往往包含了短句子,同时在生成目标语言时,容易出现错误传播。

②Word Rarity
若一个句子存在罕见词,更难翻译该句子,因为模型需要多次看见该词才能学到鲁棒的表示;同时罕见词的梯度容易有较大的方差。

因此我们定义相对词频:

其中,$j=1, \ldots, \{\text {unique words in corpus}\}$,$\mathbb{1}$ 为指示函数。

因此最终度量方法为:
$d_{\text {rarity}}\left(s_{i}\right) \triangleq-\sum_{k=1}^{N_{i}} \log \hat{p}\left(w_{k}^{i}\right)$

这样即考虑到了长度也考虑到了词频,同时该方法有点类似language model,可以理解为language model的近似。

Competence Functions

我们定义competence function只与时间步$t$有关,因此只需要考虑具体的形式。
①linear:

$c_{0}$是初始值。我们也可以定义T为时间步阈值,当超过该阈值,我们认为模型已经完全有能力了,则上式还可以写成:

②Root:
线性的一个不好的地方,当样例增加时,每个样例被sample的几率减小,因此新加进去的样例被sample到的几率也减小,因此应每次减少新加入的样例,使得模型有足够的时间去学习知识。
也即:

积分后可得:

当然还可以将开n次方根

使得曲线更为陡峭,也即给每个样例的时间更多。

曲线对比:

实验证明是p=2时最好。

实验结果

实验有相当不错的结果,在RNN以及在Transformer上都有提升,并且是在不用learning rate schedule的情况下,并且时间更短。

几个实验现象:
①RNN的提升较少,而Transformer很多,说明RNN比Transformer更鲁棒。RNN比Transformer训练更为稳定。
②对于Transformer而言,若同样使用learning rate schedule,仍然有帮助,说明该方法是较为通用的。
③不使用lr schedule而只使用本文方法,也能达到不使用本文方法而使用lr schedule的结果,但需要更多的step。

思考

为什么该方法能work?
符合直觉,模型从简单到难,更好训。同时从机器学习角度,如果完全正常的sample,则容易陷入局部最小或者saddle point,因此需要更长时间或者不好的泛化性能。

同时论文还提到了,为什么Transformer在增加batch能够有更好的收敛,这是因为一开始训练的noisy gradient太大,若增加batch能够信噪比,而本文方法在某种程度上也解决了该问题。