Machine learning 为什么我的注意力模型比不注意力模型更糟糕

Machine learning 为什么我的注意力模型比不注意力模型更糟糕,machine-learning,deep-learning,nlp,attention-model,encoder-decoder,Machine Learning,Deep Learning,Nlp,Attention Model,Encoder Decoder,我的任务是把英语句子转换成德语句子。我首先用普通的编解码网络做了这个,在这个网络上我得到了相当好的结果。然后,我试着用与以前相同的精确模型解决相同的任务,但其中包含了Bahdanau注意力。而且,没有注意的模型优于有注意的模型 在5个时期内,模型在没有注意的情况下的损失从大约8.0增加到1.4,在10个时期内增加到1.0,损失仍在减少,但速度较慢 模型的注意力损失在5个时期内从大约8.0下降到2.6,并且没有学到更多 由于两个模型中的验证损失也在减少,因此没有一个模型过度拟合 每个英语句子有47

我的任务是把英语句子转换成德语句子。我首先用普通的编解码网络做了这个,在这个网络上我得到了相当好的结果。然后,我试着用与以前相同的精确模型解决相同的任务,但其中包含了Bahdanau注意力。而且,没有注意的模型优于有注意的模型

在5个时期内,模型在没有注意的情况下的损失从大约8.0增加到1.4,在10个时期内增加到1.0,损失仍在减少,但速度较慢

模型的注意力损失在5个时期内从大约8.0下降到2.6,并且没有学到更多

由于两个模型中的验证损失也在减少,因此没有一个模型过度拟合

每个英语句子有47个单词(填充后),每个德语句子有54个单词(填充后)。我在训练集中有7000个英语句子和7000个德语句子,在验证集中有3000个

我尝试了几乎所有的方法,比如:不同的学习速率,不同的优化器,不同的批量大小,我在模型中使用的不同激活函数,尝试应用批量和层规范化,以及编码器和解码器的不同数量的LSTM单元,但没有什么区别,除了标准化和增加数据,其中损失下降到约1.5,但随后再次停止学习

为什么会这样?为什么有Bahdanau注意力的模型失败了,而没有任何注意力的模型表现良好

编辑1-我尝试在注意之前、注意之后以及注意之前和之后应用图层规范化。每个病例的结果大致相同。但是,这一次,损失在5个时期内从大约8.0降至2.1,并且再次没有学到多少东西。但大部分学习是在一个时期内完成的,因为在一个时期结束时,它达到了大约2.6的损失,然后在下一个时期达到了2.1,然后又没有学到多少东西

尽管如此,没有任何注意力的模型还是优于同时有注意力和分层的模型。这可能是什么原因?我得到的结果可能吗?一个没有任何规范化、没有任何丢失层的普通编码器-解码器网络如何比既有关注又有层规范化的模型表现得更好

编辑2-我尝试增加数据(我比前一个增加了7倍),这次,两个模型的性能都提高了很多。但是,没有注意的模型比有注意的模型表现得更好。为什么会这样

编辑3-我试图调试模型,首先只传递整个训练数据集中的一个样本。损失从大约9.0开始,并在0.0处减少和收敛。然后,我试着通过2个样本,损失再次开始在9.0左右,但这一次,它只是在前400个时期徘徊在1.5和2.0之间,然后慢慢减少。这是当我仅使用2个样本对其进行训练时,损失如何减少的曲线图:

这是当我仅使用一个样本对其进行训练时,损失如何减少的曲线图:


谢谢大家的帮助。。。。这是一个执行问题。。。修正这一点,使注意力模型比普通的编码器-解码器模型表现得更好

似乎您有一个正常化问题。您是否在模型中应用了任何类型的规范化?如果没有,请尝试在注意层之后(或之前,测试两者)应用层规范化,然后比较两种方法。@Ghanem我尝试了你所说的,我已经在编辑中添加了层规范化的结果。
我得到的结果可能吗?
为什么不可能!添加注意或任何辅助层并不意味着性能更好。你使用单词嵌入吗?哪一个?@Ghanem是的,我使用单词嵌入。但是,我不使用任何预先训练过的单词嵌入。我使用自己的嵌入,使用
tf.keras.layers.embedding
LayerOk,所以您可以训练它们。尽量使用预培训的嵌入件,值得。