验证损失和准确性上升
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。
我正在使用 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。