【问题标题】:RNN/GRU Increasing validation loss but decreasing mean absolute errorRNN/GRU 增加验证损失但减少平均绝对误差
【发布时间】:2021-07-13 20:26:39
【问题描述】:

我是深度学习的新手,我尝试实现一个 RNN(具有 2 个 GRU 层)。 起初,网络似乎做得很好。但是,我目前正在尝试了解损失和准确度曲线。我附上了下面的图片。深蓝色的线是训练集,青色的线是验证集。 在 50 个 epoch 之后,验证损失会增加。我的假设是这表明过度拟合。但是,我不确定为什么验证平均绝对误差仍然会减少。你有什么想法吗?

我想到的一个想法是,这可能是由我的数据集中的一些大异常值引起的。因此,我已经尝试清理它。我也尝试正确缩放它。我还添加了一些 dropout 层以进行进一步的正则化(rate=0.2)。然而,这些只是普通的 dropout 层,因为 cudnn 似乎不支持 tensorflow 的recurrent_dropout。

备注:我使用负对数似然作为损失函数,使用张量流概率分布作为输出密集层。

任何提示我应该调查什么? 提前致谢

编辑:我还按照评论中的建议附加了非概率图。似乎在这里平均绝对误差表现正常(不会一直改善)。

【问题讨论】:

    标签: tensorflow recurrent-neural-network loss tensorflow-probability overfitting-underfitting


    【解决方案1】:

    您的模型的输出是什么?听起来很奇怪,您使用负对数似然(基本上“适用于”分布)作为损失函数,但 MAE 作为指标,适用于确定性连续值。

    我不知道你的任务是什么,也许这在你的具体情况下是有意义的,但也许奇怪的行为就是从那里出现的。

    【讨论】:

    • 感谢您的反馈。正如您已经猜到的那样,我的输出是一个 Distribution 对象。目的是预测时间序列中的下一个条目,它是不确定性的。但是,实际上我不知道哪个指标可能适合此目的。如果我删除所有概率部分,我还将尝试测试我的模型的行为
    • 请考虑,如果您的意思是您要预测下一个条目是一个连续的确定性值,您可能只想将问题重铸为回归问题。相反,如果在每个步骤中您都有一个定义的分布并且您想对其进行近似,那么一个好的指标可能是例如 Kullback-Leibler 散度。我从未真正处理过第二种情况,这在我看来并不常见。
    • 是的,这是第一种情况(连续确定性值)。对不起,只是为了让您正确:如果您正在谈论将其转换为回归问题,您的意思是删除 RNN(LSTM) 层并通过密集层替换它吗?顺便说一句:刚刚删除了概率层并开始训练。一旦我得到一些结果会提供一些反馈
    • 您绝对可以保留 RNN 架构,但您需要一个适当的损失函数(例如 MSE,而不是负对数似然)。这个machinelearningmastery.com/… 可能是澄清任何疑问的好来源。
    • 刚刚将此标记为答案。到目前为止,我还没有完全确定问题,但它似乎只是由于我的概率转换与 MAE 损失相结合而发生的
    猜你喜欢
    • 2017-08-14
    • 2021-03-11
    • 2020-08-17
    • 2014-10-17
    • 2022-12-26
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多