验证损失和准确性提高

时间:2020-10-29 04:32:27

标签: keras deep-learning loss

我正在使用MLP进行分类

这是我的模特

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(X.shape[1], X.shape[2])),
    keras.layers.Dense(2048, activation='relu'),
    keras.layers.Dropout(0.1),
    keras.layers.Dense(512, activation='relu'),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(10, activation='softmax')
])

lr_schedule = keras.optimizers.schedules.ExponentialDecay(0.00015, decay_steps=1000, decay_rate=0.96, staircase=True)
optimiser = keras.optimizers.Adam(learning_rate=lr_schedule)

model.compile(optimizer=optimiser, loss='sparse_categorical_crossentropy', metrics=['accuracy'])

我注意到traning/validation loss and accuracy(image)验证损失随着验证准确性的提高而增加。

不是应该随着精度的提高而减少损失吗?

1 个答案:

答案 0 :(得分:0)

我建议您检出此post。此处未提及但值得一提的另一个方面是数据集中的类平衡。由于您将Softmax用作最终层(例如,多类分类),因此观察到验证损失增加的原因可能是由于关于每个标签的观察次数,您的数据不平衡(类)存在。您的分类器在确定最频繁的班级时会变得更好(更准确),而在更稀有的班级中会变得更差(准确性更低)。您可能会说您正在“过度拟合”模型以更频繁地预测通用类。

因此,由于分类器总体上更正确,因此准确性提高了,但是由于稀有类别的损失变大(因为它预测分类器的概率为0),因此损失也增加了。

要解决此问题,您可以对数据进行上采样或下采样,或者按照here的说明设置类别权重。