Seq2Seq模型中的Bucketing概念

时间:2018-03-19 16:29:05

标签: machine-learning deep-learning lstm machine-translation sequence-to-sequence

为了处理不同长度的序列,我们使用bucketing和padding。在分组中我们为一些max_len制作不同的桶,我们这样做是为了减少填充量,在制作不同的桶之后我们在不同的桶上训练不同的模型。

这是我到目前为止所发现的。但我不明白的是,所有不同的模型如何训练以及如何使用它们来翻译新句子?

1 个答案:

答案 0 :(得分:2)

在训练和推理时,算法都需要选择最适合当前输入句子(或批处理)的网络。通常,它只需要输入大小大于或等于句子长度的最小桶。

bucketing

例如,假设只有两个存储分区[10, 16][20, 32]:第一个存储分区采用长度为10的任何输入(填充到10}并输出翻译的句子长度为16(填充到16)。同样,第二个桶处理长度为20的输入。与这些桶对应的两个网络接受非交叉输入集。

然后,对于长度为8的句子,最好选择第一个桶。请注意,如果这是一个测试句,第二个桶也可以处理它,但在这种情况下,它的神经网络已经训练了更大的句子,从1120个词,所以很可能不是很好地认出这句话。与第一个存储桶对应的网络已经在输入110上进行了培训,因此是更好的选择。

如果测试句的长度25比任何可用的存储桶长,则可能会遇到麻烦。这里没有通用的解决方案。这里最好的做法是将输入修剪为20个单词并尝试翻译。