在seq2seq转换中,何处放置<start>和<end>标记?

时间:2019-03-12 03:05:18

标签: tensorflow keras neural-network sequence seq2seq

我浏览了许多教程,对我的问题的答案有所不同。

因此,对于seq2seq模型(英语到法语的翻译),我有encoder_input_data,它的英语短语没有<start><stop>标签。 我对decoder_input_datadecoder_target_data感到困惑。

目前,我的数据以这种方式进行组织,结果一无所获。

  • decoder_input_data:包含同时具有<start><stop>标签的法语短语。
  • decoder_target_data:包含仅带有<stop>标签的法语短语。

lesson from Google说,英语和法语短语都必须在开头和结尾都具有标签。而且,我没有任何结果。

  

我应该在解码器的输入中放入<start><stop>标签吗?还是应该在解码器的输入中仅包含<start>,在解码器的目标中仅包含<stop>标签?为NMT放置这些标签的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您应该在解码器的输入中放置<start>标签,并在解码器的目标中放置<end>标签。

请查看以下图片:

enter image description here

解码器输入中的<start>标签用于预测解码器中的第一个令牌,解码器目标中的<end>标签用于标记解码器中的结尾。

不需要在目标中使用<start>标签,因为我们在解码器中有一个清晰的开始。另外,由于输入的末尾由输出而不是输入标记,因此不需要在输入中使用<end>标签。

此外,有些作品将<start><end>用作同一标记。实际上,它们位于不同的位置,因此它们不会发生冲突。

例如:

enter image description here