每周论文28

本周论文:

  1. Easy Questions First? A Case Study on Curriculum Learning for Question Answering
  2. Bridging the Gap between Training and Inference for Neural Machine Translation
  3. Improving Multi-step Prediction of Learned Time Series Models
  4. Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks
  5. SEQUENCE LEVEL TRAINING WITH RECURRENT NEURAL NETWORKS
  6. Minimum Risk Training for Neural Machine Translation
  7. Greedy Search with Probabilistic N-gram Matching for Neural Machine Translation
  8. Insertion Transformer: Flexible Sequence Generation via Insertion Operations

[Easy Questions First? A Case Study on Curriculum Learning for Question Answering]

提出在QA中引入CL,但实际上其本质不是CL而更像是SPL。

QA任务我不感兴趣,只讨论CL。

其基本做法是:每次从剩下未被选择的数据中选择对于当前模型最简单的sample,并定义了一系列的指标去衡量难易程度,这相当于是动态在选择sample,根据当前的模型能力去选择最容易学的sample,从整个过程来看,确实是从简单到难,且达到了动态选择的目的,并且不像SPL那样会直接丢弃sample,效率(或许)会更高。

具体做法:
每次从剩余sample集合内选择最简单的sample $q_{i} \in Q \backslash Q_{0}$。

有几种指标衡量对于当前模型的难易程度:
①Greedy Optimal: has the minimum expected effect on the model
Change in Objective causes the smallest increase in the objective.
②Mini-max minimizes the regularized expected risk when including the question with the answer candidate a ij that yields the maximum error.
③Expected Change in Objective the minimum expected effect on the model
④Change in Objective-Expected Change in Objective the minimum value of the difference between the change in objective and the expected change in objective
⑤Correctly Answered is answered by the model M with the minimum cost

同时,希望每次选的batch,尽量diverse,通过feature space的夹角去衡量。

这个思想还挺有意思的,但每次选择sample都要重新计算一遍,会不会复杂度过高?


[Bridging the Gap between Training and Inference for Neural Machine Translation]

这是ACL19的best paper。

本文主要的目标是缓解exposure bias的问题,也即训练使用ground truth而inference使用predicted words所造成的不一致。主要思路是:在训练过程中随机从predicted word和ground truth 采样作为接下来的上下文。

当前这种discrepancy的问题就是过度纠正(overcorrection),只要模型生成了一个和ground truth不一样的,就会被立即纠正,但实际上翻译可以有好几种合理的候选,并不是和ground truth不一样就错误;同时在训练时有监督,而在inference没有信号监督,predicted word在不同阶段是从不同的分布获取的,也即data distribution vs model distribution,这就是exposure bias带来的问题。

论文举了一个例子:

①假如模型生成了第三个词为abide,为了和ground truth相一致,模型会强制让第四个词生成with,然后with作为输入去生成the rule,但实际上整句是错误的。如cand1就是过度矫正(overcorrection)
②假设模型生成对了by,但也可能因为输入了by而产生了错误的’the law’,假设一种情形,模型记住了with后面一定跟the rule,为了能够生成cand3的,我们应将 with作为输入而不是by,即使我们生成了by。称这种做法为 overcorrection recovery。

方法

因此本文的做法就是将预测的词(oracle)和golden 在训练的时候随机sample作为输入。在一开始模型还没有收敛的时候,主要是golden,而在后期则增加oracle的比例。

这样模型就能够handle在inference出现的情况,也即没有golden truth的辅助,同时可以减小训练和测试之间的gap。

有两种方法获得oracle word,一种是word level的一种是sentence level的。

Oracle word selection

word level

也即greedy的方法,每次选择概率最高的词作为oracle

为了获取更为鲁棒的oracle,引入了gumbel noise,这是一种正则化方法。

当$\tau$趋于0,则逼近argmax,若趋于∞则逼近均匀采样。

因此最终:

sentence level

另一种则是扩大匹配的范围,允许更灵活的选择,也即先通过beam search让模型生成一个概率最高的句子,将该句子的词与ground truth一一对应,在生成期间也可以引入gumbel noise。一一对应的词就可以随机采样了。

但该做法有一个问题,也即可能生成的句子长度可能和ground truth不对应,因此这里引入force decoding的做法强制对应。

force decoding

①当生成到第j个step时top first的概率是EOS,此时$j \leqslant\left|\mathbf{y}^{*}\right|$,那么避开EOS,选择top second概率的词,使其能够继续生成下去。

②当生成到$\left\{\left|\mathbf{y}^{*}\right|+1\right\}$个时还没生成到EOS,则直接选择EOS作为结尾,强制停止。

Sampling with Decay

另一个就是在模型不同阶段sample的概率应该是不同的,在这里

e是epoch数。

实验结果

实验表明能够有更好的效果,且更快速收敛,只看training可以发现,没有baseline那么容易overfitting。

对于长度越长的提升越大,说明exposure bias在长句子表现更明显。

在不同数据集和不同模型上都有提升:

一点思考

本篇很清晰易懂,结构也很好,同时举的例子也非常容易让人理解。再者实验效果也很好,做了很多分析。这个方向可以多关注关注,因为还有挺多可做的。

我们假设让training也完全用predicted是一个极端,完全用ground truth是另一个极端,在此二者之间的就是这种sample方式。

但似乎仍然有未解决的问题,也即target word始终是ground truth,这种方法好像还是没能解决overcorrection的问题。


[Improving Multi-step Prediction of Learned Time Series Models]

讨论如何在时序模型下解决错误累积的问题(在翻译中就是exposure bias),该问题的本质就是train-test的iid假设被打破。本文的做法就是将prediction与training data结合形成新的数据集,也即相当于用正确的数据对prediction进行修正。并且从理论上证明了该算法的高效性。

示例图很清楚:

图a是在训练完一个模型后做的预测与真实数据的对比;图b是将预测的序列与正确的序列结合形成新的序列,重新训新模型。其实就相当于用正确数据做了修正。

因此算法就有:

算法过程清晰明了。在训练多个模型的过程中,数据会越来越多,有recurrent的感觉。其实这个方法的本质上也是在ground truth和oracle上进行sampling,因为数据D里面混杂了ground truth或oracle。


[Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks]

在sequence prediction的问题上,提出schedule sampling的方式缓解exposure bias的问题。exposure bias是指训练使用teacher force,完全用监督信息,而inference期间完全用predicted word,错误可能会被放大。

其做法是:在训练期间,按概率输入golden truth或者predicted word,该概率通过某种schedule来控制。这里的做法就是在训练期间概率采样输入predicted word,让模型自己去学习如何解决inference可能出现的问题。

而schedule则是:

未解决的问题:target word仍然是golden truth。sampling这类思路都会有这个问题。


[SEQUENCE LEVEL TRAINING WITH RECURRENT NEURAL NETWORKS]

本文意在解决翻译中存在的exposure bias以及测试阶段的指标和训练指标不同的问题。

其做法是:提出一种基于RL的算法,在训练过程中混合了RL和普通训练方法,既能优化word level的loss又能直接优化sentence level的bleu。同时该方法还解决了RL在random init上难以拟合超大的search space的问题,因为使用了预训练的参数。

接下来介绍几个相关的模型。

WORD-LEVEL TRAINING

CROSS ENTROPY TRAINING (XENT)

也即普通的训练方式,每次输入golden truth,然后优化loss
这是该模型在训练与inference时的示意图:

主要问题:①exposure bias ②训练指标是word level的而测试指标则是sentence level的,造成训练没法直接优化测试的指标。

DATA AS DEMONSTRATOR (DAD)

混合oracle与ground truth:

一个问题在于,在每个时间步t,target label总是ground truth而不管输入是oracle或者ground truth。这样可能就会造成不对齐的问题,比如:
正确的翻译是“I took a long walk”,模型目前翻译到“I took a walk”,而在接下来模型会强制再翻译一次wark
另一个问题在于,梯度回传没有到oracle,也即oracle虽然是由模型生成的,但gradient的待遇和ground truth是一样的,且仍然局限于word-level。

END-TO-END BACKPROP (E2E)

在训练过程中也使用oracle而不是ground truth。

在每个时间步t上,我们选择top k个预测的词作为下一个输入而不是ground truth。具体的做法是将softmax过后的distribution过一个k-max layer,将其他的都设为0,然后再renormalize使其和为1,此时我们有:

其中i是index,v是对应的score,也作为其weight,用于梯度回传。

在实际实现中,一开始还是用ground truth的,直到训练后期才使用top-k的策略。

该方法确实解决了training-inference的discrepancy,但仍然还是word-level的。

SEQUENCE LEVEL TRAINING

使用RL直接对bleu进行优化。RNN是agent,action是预测下一个词,agent的参数就是policy,在预测完该句子后,BLEU就是reward。

由于RL难以从random init去拟合大搜索空间,因此是先通过普通的训练RNN,然后用该参数去作为init去训练接下来的RL。

第二就是,为了训练的稳定,在训练过程中逐渐引入oracle(RL部分)。在前$(T-\Delta)$个step用普通的XENT,然后接下来的$\Delta$个step使用RL去生成。逐渐增大$\Delta$直到整个训练都是由RL生成的:

因此MIXER的算法如下:

总结一下几个算法:

一点想法

似乎要真正解决传统训练方法的两个问题,就只能通过直接优化test evaluation metric来做到,而像直接针对解决exposure bias的方法(scheduled sampling等)都没办法真正解决这两个问题。


[Minimum Risk Training for Neural Machine Translation]

在翻译任务中,直接通过优化evaluation metric如bleu而不是word-level的loss来提升表现。

我们普通的方法是通过优化词级别的loss,也即MLE(maximum likelihood estimation),每个step的预测和golden truth计算cross entropy然后累加。但这个方法的两个劣势:exposure bias 和 loss function只定义在词级别而不是句子级别,而在测试阶段则是用bleu这种句子级别的metric来评测。

方法

记$\left\langle\mathbf{x}^{(s)}, \mathbf{y}^{(s)}\right\rangle$是sentence-pair,同时有$\Delta\left(\mathbf{y}, \mathbf{y}^{(s)}\right)$作为prediction与golden truth之间的差距,这是不可导的。

定义expected loss:

其中$\mathcal{Y}\left(\mathbf{x}^{(s)}\right)$是所有的可能的candidate,P就是生成该candidate的概率。

因此我们的目标就是:

也即,希望生成出来句子中的与golden truth的差距最小的概率最大。

一个很清晰的例子:

右边四列是四个不同的模型,y1,y2与y3是三个不同的candidate,其中y1与y最接近,而y2最远。第四列生成y1的概率最高,y2最低,因此可以看到其风险期望最小。也即我们的目标总是希望最大概率生成与golden truth最接近的样本。

(这里就有点像RL了,生成了几个episode,希望reward最大的episode出现的可能性更大。而普通的训练方法则是在每步都优化。)

在实际中,由于不可能遍历所有的情况,因此只选择一个candidate subset:

其中$\mathcal{S}\left(\mathbf{x}^{(s)}\right) \subset \mathcal{Y}\left(\mathbf{x}^{(s)}\right)$,且$Q$是subset的distribution,保证和为1。

其中$α$控制$Q$的sharp程度。

而sample subset的方式:

有点像beam-search的probabilistic sampling 版。实验设k=100。

想法

本文的MRT在SMT上有使用过。思路有点像RL,论文中也有提到这点,在思路上与MIXER相近。且training与test的行为一致(没有exposure bias的问题),也直接优化了sentence-level的指标,一次解决了两个问题。


[Greedy Search with Probabilistic N-gram Matching for Neural Machine Translation]

引入可导的sentence level的评价指标,同时在此基础上训练过程也使用greedy search而不是teacher forcing,能够缓解传统训练方法带来的 exposure bias和word-level loss带来的training-test之间的指标不一致的问题。

传统做法

论文做法

句子级别的evaluation metrics,比如BLEU是基于n-gram的匹配的。记$y$和$\hat{y}$是prediction和ground truth,长度分别为$T$和$T’$。

记n-gram $\boldsymbol{g}=\left(g_{1}, \ldots, g_{n}\right)$,则在$y$中计算ngram的count为:

在$y$与$\hat{y}$之间的count则为:

precision和recall则为:

而BLEU的计算方法为:

BP为brevity penalty,$w_n$是n-gram的weight。

上述公式,可以看到将所有的输出的词一视同仁,但实际上在输出的不同的词是有不同的概率的,因此应该对n-gram count有更精细的描述,也即将预测的概率也引入:

因此bleu也更新为:

最终的loss function为:

示意图:

在这里,训练过程中也使用了greedy search而不是teacher forcing。且本文是使用baseline在probabilistic loss上fine-tune的,因为模型一开始的能力很弱,不足以翻译有意义的句子,没法训。

实验

作者做了一个实验探究是exposure bias的缓解还是采用了sentence-level的loss带来的提升?

作者发现二者都有带来提升,不缓解exposure bias(也即使用了teacher forcing)能提升0.5,而使用greedy search则带来BLEU值1个点的提升。

想法

用了整体的指标且用了greedy search,也就缓解了传统训练方法的两个弊端。但这个方法显然没法从头训,因此需要fine-tune,但fine-tune是基于原先的模型行为进行改变,是否可能出现已经卡在minimal上的情况?如果能够找到一个方法从头训,可能会更好?


[Insertion Transformer: Flexible Sequence Generation via Insertion Operations]

提出一种新的部分自回归的文本生成方式,基于插入操作,每次生成的词插入到文本任意位置。同时,不仅能够每次生成一个词,还能够同时生成多个词插入到不同位置。

例子:

在每个iteration t,模型会产生一个联合概率分布,关于预测的content和插入位置l $l \in\left[0,\left|\hat{y}_{t}\right|\right]$。

Insertion Transformer Model

与transformer decoder不同的地方:
①去掉了mask,所有位置都能够attend到对方。
②标准transformer生成n个向量表示,将最后一个表示用于预测下一个词,而在这里需要生成n+1个表示,也即slot representation,每两个词之间共n-1个表示,加上开头与结尾两个。通过加前后两个特殊的标记符,过transformer后获得n+2个向量,并将每两个相邻的向量拼起来获得n+1个向量。

Model Variants

模型有两个变体,一个是直接建模联合概率分布,另一个则是条件概率分布。

记$H \in \mathbb{R}^{(T+1) \times h}$为slot representation,T是当前的生成句子的长度,$W \in \mathbb{R}^{h \times|\mathcal{C}|}$则是softmax的映射矩阵。

因此可以直接建模联合概率分布:

先计算$HW$然后展开过softmax,最大的值对应其vocab的位置以及相应的slot的位置。

另一种方法则是通过计算条件概率:

其中$p(c | l)=\operatorname{softmax}\left(h_{l} W\right)$,而$p(l)=\operatorname{softmax}(H q)$,$q$是可学习的参数。

另外,为了增加slot之间的信息交流,可通过max-pooling获得上下文的向量$g$,再通过可学习的$V$生成一个共享的bias用于计算概率分布,也即:

Training and Loss Functions

有两种顺序,一种是从左到右,另一种则是平衡二叉树的形式。

Left-to-Right

给定训练样本$(x, y)$,先随机sample 长度$k \sim$ Uniform $([0,|y|])$,并且假定已经生成了左边k个词,$\hat{y}=\left(y_{1}, \dots, y_{k}\right)$,目标则是maximize location l=k的概率:

Balanced Binary Tree

我们希望最中心的词先生成,然后左右两端的中心词,然后左右两端的左右两端的中心词,像一棵树那样。
如:$[ ] \rightarrow[D] \rightarrow[B, D, F] \rightarrow[A, B, C, D, E, F, G]$

为了达到这个目的,我们希望能够优先强调中心附近的词。

给定$(x, y)$,首先sample $y$的子集,为了保证不同长度被sample到的概率是一致的,先sample长度$k$,然后随机从$y$中sample $k$个词,$k$个词的呈现顺序是与$y$内一致的。

对于k+1个slot而言,我们需要计算这k+1个slot的loss。记$\left(y_{i_{l}}, y_{i_{l}+1}, \dots, y_{j_{l}}\right)$为当前尚未生成的位置的target word。先定义这之间每个位置到中心的距离:

接着使用该distance作为reward function:

其中$\tau$趋近0时表示只考虑中心词,趋近∞则是uniform。

将其插入到loss里:

这就强调了中心词要先被预测出来。

示意图:

灰色的词是还没被预测的,红色的直方图是uniform的,经过reweight的是白色的。

最后我们将所有的位置的loss加起来:

Uniform

论文中还尝试了uniform的方式,也即不强调中心词:

其好处(没看懂):
This neutral approach is useful insofar as it forces the model to be aware of all valid actions during each step of decoding, providing a rich learning signal during training and maximizing robustness;
Such an approach also bears resemblance to the principle of maximum entropy, which has successfully been employed for maximum entropy modeling across a number of domains in machine learning

Termination

在训练过程中什么时候停止?
有两种:slot finalization 和 sequence finalization。

slot finalization

当模型预测到某个location,该location对应的是在真实输出中不存在的span,那就直接将target设为end-of-slot token。
在测试阶段,当所有的slot都预测到end-of-slot token,则停止decode。

sequence finalization

在训练阶段,当遇到空span,则将该部分的loss定义为未定义,也即不纳入loss的计算。当整个句子被生成完了,将每个位置的loss设为end-of-sequence token的loss(相当于希望模型此时全都预测该token)。
在测试阶段,下面详谈。

Training Differences

与普通autoregressive的模型相比的不同:
①generation step之间没有state的propagation,因为每生成完都要重新计算state,不能复用。
②普通的autoregressive在训练时可以一次性计算完所有的loss,而这里只能一次计算一个。因此更占内存。
③subsampling可能带来variance估计不准的问题。

Inference

Greedy Decoding

每次选择最大的即可:

如果是sequence finalization,则当直到end-of-sequence token被任意位置选中则停止。
如果是slot finalization,那么只在还没生成end-of-slot的位置上用argmax,直到所有位置都生成了end-of-slot。

Parallel Decoding

先计算每个位置的l的argmax:

如果是前面提到的条件概率$p(c, l)=p(l) p(c | l)$,那么此时$p(c | l)$已经有了;如果是直接计算联合概率分布则可通过$p(c | l)=p(c, l) / p(l)=p(c, l) / \sum_{c^{\prime}} p\left(c^{\prime}, l\right)$ 获得。

接着将已经生成了end-of-slot的location过滤掉,最后插入对应的预测词。

这种方法理论上可以只需要$\left\lfloor\log _{2} n\right\rfloor+ 1$个steps。

实验

Part1

括号都是报告的加了EOS最好的结果。
几个值得注意的点:
①发现EOS总是过早被生成,因此引入EOS penalty,也即将EOS的概率减掉一个β,当EOS的概率与概率第二高的差距超过β才真正生成EOS,发现确实有不错的提升。

②使用knowledge distillation有显著提升,teacher model是transformer baseline。

Part2

使用parallel decoding相比greedy decoding稍好一些,证明模型是有能力同时生成文本的。

parallel decoding的几个例子:

Part3

在实验过程中发现parallel decoding确实能逼近下界。

Part4

最后一个与其他related work的对比:

可以看到其复杂度非常低。


[本周论文小结]

本周由于要在组会讲机器翻译的论文,因此绝大多数都是相关的论文。其实大部分都是ACL19的best paper以及相关论文。目前机器翻译有几个有意思的方向如non-autoregressive NMT、unsupervised/semi-supervised NMT都是值得深入的。而实验室接下来也会围绕机器翻译做一些工作,我个人还是倾向将Curriculum Learninig与NMT结合。