3

对于我的论文,我正在运行一个 4 层深度网络,用于序列到序列转换用例 150 x Conv(64,5) x GRU (100) x softmax 在最后阶段激活,损失 ='categorical_crossentropy'。

训练损失和准确率很快收敛到最佳状态,因为验证损失和准确率似乎停留在 val_acc 97 到 98.2 的范围内,无法超过此范围。

我的模型是否过拟合?

尝试过层间 0.2 的 dropout。

Output after drop-out
    Epoch 85/250
    [==============================] - 3s - loss: 0.0057 - acc: 0.9996 - val_loss: 0.2249 - val_acc: 0.9774
    Epoch 86/250
    [==============================] - 3s - loss: 0.0043 - acc: 0.9987 - val_loss: 0.2063 - val_acc: 0.9774
    Epoch 87/250
    [==============================] - 3s - loss: 0.0039 - acc: 0.9987 - val_loss: 0.2180 - val_acc: 0.9809
    Epoch 88/250
    [==============================] - 3s - loss: 0.0075 - acc: 0.9978 - val_loss: 0.2272 - val_acc: 0.9774
    Epoch 89/250
    [==============================] - 3s - loss: 0.0078 - acc: 0.9974 - val_loss: 0.2265 - val_acc: 0.9774
    Epoch 90/250
    [==============================] - 3s - loss: 0.0027 - acc: 0.9996 - val_loss: 0.2212 - val_acc: 0.9809
    Epoch 91/250
    [==============================] - 3s - loss: 3.2185e-04 - acc: 1.0000 - val_loss: 0.2190 - val_acc: 0.9809
    Epoch 92/250
    [==============================] - 3s - loss: 0.0020 - acc: 0.9991 - val_loss: 0.2239 - val_acc: 0.9792
    Epoch 93/250
    [==============================] - 3s - loss: 0.0047 - acc: 0.9987 - val_loss: 0.2163 - val_acc: 0.9809
    Epoch 94/250
    [==============================] - 3s - loss: 2.1863e-04 - acc: 1.0000 - val_loss: 0.2190 - val_acc: 0.9809
    Epoch 95/250
    [==============================] - 3s - loss: 0.0011 - acc: 0.9996 - val_loss: 0.2190 - val_acc: 0.9809
    Epoch 96/250
    [==============================] - 3s - loss: 0.0040 - acc: 0.9987 - val_loss: 0.2289 - val_acc: 0.9792
    Epoch 97/250
    [==============================] - 3s - loss: 2.9621e-04 - acc: 1.0000 - val_loss: 0.2360 - val_acc: 0.9792
    Epoch 98/250
    [==============================] - 3s - loss: 4.3776e-04 - acc: 1.0000 - val_loss: 0.2437 - val_acc: 0.9774
4

2 回答 2

3

你提出的案例是一个非常复杂的案例。为了回答您的问题,如果您的情况确实发生了过度拟合,您需要回答两个问题:

  1. 在验证集上获得的结果是否令人满意?- 验证集的主要目的是让您了解新数据到达时会发生什么。如果您对验证集的准确性感到满意,那么您应该认为您的模型没有过度拟合。
  2. 我应该担心您的模型在训练集上的极高准确性吗?- 你可能很容易注意到你的模型在训练集上几乎是完美的。这可能意味着它背诵了一些模式。通常——你的数据中总是有一些噪音——你的模型在数据上的完美属性——意味着它可能使用了它学习偏差的部分能力。为了测试这一点,我通常更喜欢测试分数最低的正样本或分数最高的负样本——因为异常值通常在这两组中(模型正在努力将它们推高/低于0.5阈值)。

所以 - 在检查了这两个问题之后,如果你的模型过拟合,你可能会得到答案。您呈现的行为非常好 - 背后的实际原因可能是验证集中的模式很少在训练集中没有正确覆盖。但在设计机器学习解决方案时,您应该始终考虑到这一点。

于 2017-07-19T11:52:40.263 回答
1

不,这不是过拟合。过度拟合仅在训练损失低且验证损失高时发生。这也可以看作是训练和验证准确性之间的巨大差异(在分类的情况下)。

于 2017-07-19T11:38:19.880 回答