为什么我的注意力模型比非注意力模型更糟糕

问题描述

我的任务是将英语句子转换为德语句子。我首先使用普通的编码器/解码器网络进行此操作,在该网络上我获得了不错的结果。然后,我尝试使用与以前相同的精确模型来解决相同的任务,但是其中包含了 Bahdanau Attention 。而且,没有注意力的模型要比有注意力的模型好。

该模型的损失在没有注意的情况下从大约8.0下降到8.0到1.4,在10个阶段上升到1.0,并且损失仍在减少,但速度较慢。

该模型的注意力损失在5个时期内从8.0变为2.6,并且没有学到更多。

两个模型都没有过度拟合,因为两个模型的验证损失也在减少。

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

我几乎尝试了所有类似的东西:学习率不同,优化器不同,批次大小不同,模型中使用的激活函数不同,尝试对批次和层进行归一化以及为编码器和解码器使用不同数量的LSTM单位,但没有除了归一化和增加数据(损失减少到大约1.5,然后又停止学习)之外,其他都大有不同!

为什么会这样?为什么在没有任何注意力的情况下表现出色的巴赫达瑙模型失败了?

编辑1-我尝试在关注之前,关注之后以及关注之前和之后都应用LayerNormalization。在每种情况下,结果大致相同。但是,这次,损失从大约8.0到8.0下降到5个时期,并且再次没有学到太多。但是大多数学习是在1个时期完成的,因为在1个时期结束时,它损失了大约2.6,然后在下一个时期达到了2.1,然后又没有学习太多。

尽管如此,没有任何注意的模型要优于具有注意和LayerNormzalization的模型。这可能是什么原因?我得到的结果甚至是可能?没有任何规范化,没有任何丢失层的普通编解码器网络如何比具有注意力和LayerNormalization的模型表现更好?

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

编辑3-我尝试通过首先传递整个训练数据集中的一个样本来调试模型。损失从大约9.0开始,并在0处减小并收敛。然后,我尝试通过2个样本,损失再次从大约9.0开始,但是这次,在前400个时期中,损失仅在1.5和2.0之间徘徊,然后慢慢减少。这是当我仅用两个样本训练时损耗如何减少的图:

enter image description here

这是当我仅用一个样本训练时损失如何减少的图:

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)