3

我正在 keras 中训练编码器-解码器 LSTM 用于文本摘要和具有以下架构的 CNN 数据集

双向编码器-解码器LSTM的图片

  1. 我正在使用 skip-gram 预训练词嵌入(大小为 256)和

  2. 然后我用零填充输入序列,这样所有文章的长度都相等

  3. 我在每个摘要中放了一个 1 的向量作为“开始”标记

  4. 稍后在解码器输出中使用 MSE、RMSProp、tanh 激活

  5. 训练:20 epochs,batch_size=100,clip_norm=1,dropout=0.3,hidden_​​units=256,LR=0.001,训练样例=10000,validation_split=0.2

  6. 网络训练、训练和验证 MSE 下降到 0.005,但是在推理过程中,解码器不断重复产生一些没有意义的单词,并且与真正的摘要相去甚远。

我的问题是,我的训练方法、填充、损失函数、数据大小、训练时间是否存在根本性错误,导致网络无法泛化?

4

1 回答 1

1
  • 你的模型看起来不错,除了损失函数。我不知道 MSE 如何适用于单词预测。交叉熵损失在这里看起来是一个自然的选择。

  • 生成的单词重复可能是由解码器在推理时的工作方式引起的:您不应该简单地从分布中选择最可能的单词,而应该从中采样。这会给生成的文本带来更多变化。开始看束搜索

  • 如果我要选择一种技术来提高序列到序列模型的性能,那肯定是注意力机制。有很多关于它的帖子,例如,您可以从这个开始。

于 2018-04-18T18:25:52.733 回答