为了判断我的模型是过拟合还是欠拟合,我应该如何获取这些值?例如,当train_error= 0.1
和dev_error=0.25
时,可以理解为模型过拟合了。但我不知道我的模型提供的结果中,哪些指标表示上述误差。是损失值表示这个度量,还是(1-准确率)表示呢?
这是我模型训练结果的一部分:
Epoch 152/250100253/100253 [==============================] - 12s 118us/step - loss: 0.5306 - acc: 0.8568 - val_loss: 1.1438 - val_acc: 0.7550
回答:
-
术语“误差”和“损失”是同义词
-
Keras将训练损失(分别是准确率)表示为
loss
(acc
);验证损失和准确率分别表示为val_loss
和val_acc
。 -
train_error= 0.1
和dev_error=0.25
,或者这里的loss: 0.5306
和val_loss: 1.1438
,不表示过拟合;这只是泛化差距,即训练集和验证集之间性能的预期差距。引用谷歌AI最近的博客文章中的话:理解泛化的重要概念是泛化差距,即模型在训练数据上的表现与在同一分布下的未见数据上的表现之间的差异。
过拟合的典型特征是,当你的验证损失开始增加,而你的训练损失继续减少,即:
请注意上面图表中曲线之间的差距(双关语)(改编自维基百科关于过拟合的条目)。
根据具体情况,人们可能更喜欢监控指标而不是损失,正如下面的评论中正确指出的那样,但这是另一个讨论——希望你能理解这里的要点……