验证损失和准确性上升

validation loss and accuracy rising

我正在使用 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) 验证损失随着验证准确性的增加而增加。

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

我建议查看此 post。那里没有提到但我认为值得注意的另一个方面是数据集中的 class-balance 。由于您使用 Softmax 作为最后一层,例如 multi-class classification,您观察到验证损失增加 验证准确性增加的原因可能是因为您的数据是每个标签 (class) 的观察值存在多少不平衡。您的 classifier 在确定最频繁的 classes 时变得更好(更准确),但在确定更罕见的 classes 时更差(不太准确)。您可以说您正在“过度拟合”您的模型以更频繁地预测常见的 classes.

正因为如此,准确度提高了,因为你的 classifier 更经常地总体正确,但损失也增加了,因为罕见的 classes 的损失变大了(因为它预测它们为 0 的概率)。

要解决此问题,您可以对数据进行上采样或下采样,或者按照 here 所述设置 class-weights。