在Seq2Seq模型的训练与验证过程中,经常会出现输出句和输入句子有一些gap或者明显不符合常识的情况出现。这种情况很有可能是因为Seq2Seq的exposure bias问题。此外,对于高频的安全词重复出现或者重复解码的问题,基本上也是因为exposure bias的问题。

出现exposure bias的主要原因是由于训练阶段采用的是Teacher Forcing,而才测评或者生成时,我们基本都采用贪心或者beam search的方法,这就造成了训练和测评上的一些gap。在训练阶段,模型总是能获取上一步的正确答案。

这就像我们在上学时,老师带你做题很容易就做出来,因为老师每一步在引导你时,上一步都是正确答案,而到了自己做题时,由于没有办法确保上一步的正确性,因此就可能会出现一些错误。

1.beam search

我们可以通过beam search在一定程度上缓解这一问题。

就像上学做题时,我们可以不断的试错,当做到这一步发现情况不太对时,及时修改前面的步骤。而beam search就可以让我们可以综合的考虑当前模型的输出,当模型当前输出的概率较低时,就转而选择其他概率更高的结果。

还有一种可以缓解这个问题的方法就是随机替换decoder的输入词(oracle words)。

2.替换oracle words

这个方法的思路就像训练language model一样,随机替换掉一些decoder端输入的词,从而获得更加优秀的结果。

输入模型时,将一定概率的token随机替换成当前句子中的其他token,然后在计算loss时,依然使用真实句子与预测结果进行loss计算,从而让模型具备一定的”纠错“能力,因此模型也就更容易的会在推理阶段发现之前的”错误生成“。

3.TeaForN

来自论文 EMNLP 2020 TeaForN: Teacher-Forcing with N-grams,主要思路是依然是解决前瞻性不足的问题,强制模型在解码的t时刻,强制思考t+n时的输出,相当于在训练流程中引入beam search的思路。

TeaForN主要通过上图的方式,将n(3)个decoder的loss融合起来,这样在计算$h^{(1)}_1$时,就会融合$h^{(2)}_2$和$h^{(3)}_3$的loss,也就做到了一定的”前瞻“。


0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注