纠正序列到序列神经机器翻译模型中的“坏”翻译

人工智能 机器学习 楷模
2021-11-02 08:41:26

在使用机器翻译的基本序列到序列模型时,我已经能够取得不错的结果。但是不可避免地有些翻译不是最佳的,或者完全不正确。我想知道是否有某种方法可以在模型出错时“纠正”模型,同时又不损害以前表现良好的翻译的理想行为。

作为一个实验,我采用了一个我之前训练过的模型,并收集了几个表现不佳的翻译示例。然后,我将这些示例放入他们自己的小型训练集中,在那里我提供了比模型输出的更理想的翻译。然后,我非常简短地在这个新的小型训练集上训练了旧模型(“学习”新材料只需要 3-6 个训练步骤)。当我测试新模型时,它以我指定的确切方式翻译了这几个示例。但正如我应该预料到的那样,该模型会过度补偿以“记住”那些少数新示例,因此我注意到它开始在之前表现出色的翻译上表现不佳。

除了简单地在更新的数据集上从头开始重新训练模型之外,还有什么方法可以避免这种行为?我想我直觉地理解神经网络的性质不适合进行小的精确校正(即,当只有几个神经元的权重发生变化时,整个模型的性能会发生变化),但也许有办法绕过它,也许是某种类型的混合强化学习方法。

更新:

本文谈到逐步改进神经机器翻译模型的方法

1个回答

您描述的基本过程听起来很像Boosting ,这在Russell & Norvig的第 18 章中也有很好的介绍,或者像主动学习

您说得对,强调特定数据子集的模型训练可能会在其他地方导致错误。Boosting 巧妙地解决了这个问题。

  1. 它首先像平常一样训练模型。
  2. 测量新模型在训练集上的性能。
  3. 生成一个新数据集,其中被先前模型错误分类的示例具有更高的权重(这在直观上类似于将它们的额外副本添加到数据集中)。
  4. 在加权数据集上训练一个新模型。该模型会因与先前模型产生相同类型的错误而遭受更大的惩罚,因此往往会产生不同的错误。
  5. 将步骤 2-4 重复一段时间。
  6. 输出的是一模型,而不是单个模型。

为了对新点进行分类,使用来自所有集成成员的最常见分数。

我对使用这种方法的 NLP 工作不太熟悉,但似乎可以在这里有效地使用相同的基本思想:这个概念是训练许多会犯独立错误的模型,然后相信他们的集体决策。