Machine learning 深度学习:具有keras的小数据集:局部极小值

Machine learning 深度学习:具有keras的小数据集:局部极小值,machine-learning,neural-network,deep-learning,keras,minima,Machine Learning,Neural Network,Deep Learning,Keras,Minima,在我的论文中,我正在运行一个用于序列到序列翻译用例的4层深层网络 最后阶段150 x Conv(64,5)x GRU(100)x softmax激活,损失为class='classifical_crossentropy' 训练损失和准确性非常快地以最佳方式收敛 其中,as验证损失和准确性似乎停留在val_acc 97至98.2范围内,无法超过该范围 我的模型是不是太合适了 已尝试在层之间退出0.2 Output after drop-out Epoch 85/250 [=====

在我的论文中,我正在运行一个用于序列到序列翻译用例的4层深层网络 最后阶段150 x Conv(64,5)x GRU(100)x softmax激活,损失为class='classifical_crossentropy'

训练损失和准确性非常快地以最佳方式收敛 其中,as验证损失和准确性似乎停留在val_acc 97至98.2范围内,无法超过该范围

我的模型是不是太合适了

已尝试在层之间退出0.2

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

不,这并不过分。过度拟合仅在训练损失较低且验证损失较高时发生。这也可以被视为培训和验证准确性之间的一个巨大差异(在分类的情况下)。

您介绍的案例非常复杂。为了回答您的问题,如果您的案例中确实发生了过度装配,您需要回答两个问题:

  • 验证集的结果是否令人满意?验证集的主要目的是让您了解新数据到达时会发生什么。如果您对验证集的准确性感到满意,那么您应该认为您的模型没有过度拟合
  • 我是否应该担心您的模型在训练集上的极高准确性?您可能很容易注意到,您的模型在训练集上几乎是完美的。这可能意味着它背诵了一些模式。通常情况下,数据中总是有一些噪声,而且模型的特性对数据来说是完美的,这意味着它可能会利用部分能力来学习偏差。为了验证这一点,我通常更喜欢测试分数最低的阳性样本或分数最高的阴性样本,因为离群值通常在这两组中(模型正在努力将它们推到高于/低于
    0.5
    treshold)

  • 因此,在检查了这两个问题后,如果您的模型过拟合,您可能会得到一个答案。您所展示的行为真的很好,而真正的原因可能是验证集中很少有模式没有在培训集中得到适当的涵盖。但是,在设计机器学习解决方案时,您应该始终考虑到这一点。

    花时间检查模型上的不同排列。您观察到网络正在使用部分能力来学习BAI是正确的。尝试了各种型号的容量减少百分比进行验证。在较低的容量下,训练acc和验证精度同步移动。您对具有唯一模式的验证集的第二次观察也是正确的,手动验证这两个数据集花了时间。我们可以使用什么参数来检查序列到序列用例的过度拟合?