首页 > 解决方案 > 我的神经网络是过拟合还是欠拟合?

问题描述

我正在尝试构建一个多类神经网络,从我创建的数据集中尽可能准确地预测石头或剪刀。

当我处理各种参数时,训练集的损失/准确性似乎差异很大。然而,经过大量的试验和错误,这似乎是最好的模型版本。我查看了与我有关的其他问题,我认为这些图表似乎是合适的,但由于我是机器学习的新手,我想知道该模型是否存在一些问题(过度拟合/欠拟合),而我只是没有看到。

我理解过度拟合是指随着时代的增加,准确率上升而损失下降的情况,但我仍然不确定图表上是否有明显的东西超出了我的理解。

这就是我目前编译和拟合模型的方式。

model.compile(loss=['categorical_crossentropy'], optimizer=Adam(.01), metrics=['accuracy'])

history = model.fit(X_train,y_train, epochs=30, verbose=True, validation_split=.33, batch_size=3)

模型精度

模型损失

编辑:

该模型应根据先前确定的系数与 9 个特征相乘来预测石头纸或剪刀。5 个特征是随机创建的系数,代表 5 大人格维度的连续值,范围从 -2 到 2。

其他四个是:

  1. 如果他们赢了或输了。

2, 3, 4) 如果他们赢了,选择石头、纸或剪刀:这三者中的每一个都与一个系数相乘,该系数作为他们获胜的偏见。

选择石头或剪刀的概率有一个内置的激活,它会偏向各自的选择。Scissors 的偏差最大。

有 999 次试验(由于随机机会而排除了第一次),并且 100 次试验值中的每一个,对于 Big 5 Personality 维度,都保持不变。只有代表赢/输和赢选择石头、纸或剪刀的列会逐次更改。

标签: pythonmachine-learningkerasneural-networkoverfitting-underfitting

解决方案


从损失和准确率曲线来看,您似乎已经非常精确地将模型拟合到训练数据(过度拟合的迹象)。如果您担心过拟合问题,那么您可以采用一些正则化方法,例如 L1/L2 正则化器(权重衰减)、Dropout、Batch Norm 等。它们将有助于模型很好地泛化到看不见的数据。此外,类似“提前停止”的方法也适用于这种场景。希望它能帮助您减轻过度拟合的问题。


推荐阅读