How to obtain the worst possible test accuracy?

I’m training a simple model on MNIST data where my goal is to obtain the worst possible test accuracy.

Intuitively, given my model reaches to %99 accuracy when it’s trained properly, the worst possible accuracy can be at most %1. I can simply obtain this accuracy by picking some random value that is different than my model’s prediction.

However, if I want to train the model to do this instead of messing with its inference phase, how can I do it? I naively attempted to negate the output of my loss function (negative log-likelihood) with a goal of maximizing the training loss. However, I ended up with a model that reaches %10 accuracy which always predicts the same digit.

So long story short, what’s the proper way to to train a model where the goal is to obtain the worst possible test accuracy? Should I pick a loss function that is bounded (both from above and below) and try to negate that instead? If yes, what’s a suitable candidate?

Turn off all the regularization effects. The model will overfit then. Romeve dropout, use batch-size = 1, Learning rate should be small (you can get there in steps). Further try using wide and shallow network.

It’s (I would say) not possible to get an accuracy less than by chance unless you train the network to properly classify items and later on switch classes.

This means, train the network to semantically learn that 1 is 2 and so on and later on just use the proper labels.

Think that if the network learn to missclasify it is implicitly learning to classify.

1 Like

Thanks Juan, that’s what I had in my mind too as an alternative to maximizing the loss. With that method, my model reaches to about %0.2 accuracy which is low enough.