首页 > 解决方案 > 深度学习模型测试精度不稳定

问题描述

我正在尝试训练和测试一个应该识别人的 pytorch GCN 模型。但是测试准确率非常不稳定,比如它在 23 个 epoch 时给出了 49%,然后在 41 个 epoch 时低于 45%。因此,尽管损失似乎在每个时期都在减少,但它并没有一直在增加。

我的问题不是关于实施错误,而是我想知道为什么会发生这种情况。我认为我的编码没有问题,因为我看到 SOTA 架构也有这种行为。作者刚刚选择了最好的结果并发表说他们的模型给出了这个结果。

准确度跳动(上下)是否正常,我是否只是采用有史以来最好的重量来产生这种情况?

标签: deep-learningpytorch

解决方案


正如您所说,准确性自然会更加“跳跃”。就准确性而言,您对每个样本都有一个离散的结果——您要么正确,要么错误。这使得结果会波动,尤其是在样本数量相对较少的情况下(因为样本方差较高)。

另一方面,损失函数应该更平滑地变化。它基于在您的 softmax 层计算的每个类的概率,这意味着它们连续变化。在学习率足够小的情况下,损失函数应该单调变化。您看到的任何颠簸都是由于优化算法采取了离散步骤,假设损失函数在当前点附近大致呈线性。


推荐阅读