about
Do We Need Zero Training Loss After Achieving Zero Training Error? (arxiv.org)
1 point by sillysaurusx on Apr 24, 2020 | hide | past | pdf | 1 comment on HN

In plain words: After a network classifies every training example correctly, this keeps the loss from dropping below a set floor by pushing it up when it dips. It beat training the loss to zero on test performance, and made the test loss fall, rise, and fall again.

Abstract

Overparameterized deep networks have the capacity to memorize training data with zero \emph{training error}. Even after memorization, the \emph{training loss} continues to approach zero, making the model overconfident and the test performance degraded. Since existing regularizers do not directly aim to avoid zero training loss, it is hard to tune their hyperparameters in order to maintain a fixed/preset level of training loss. We propose a direct solution called \emph{flooding} that intentionally prevents further reduction of the training loss when it reaches a reasonably small value, which we call the \emph{flood level}. Our approach makes the loss float around the flood level by doing mini-batched gradient descent as usual but gradient ascent if the training loss is below the flood level. This can be implemented with one line of code and is compatible with any stochastic optimizer and other regularizers. With flooding, the model will continue to "random walk" with the same non-zero training loss, and we expect it to drift into an area with a flat loss landscape that leads to better generalization. We experimentally show that flooding improves performance and, as a byproduct, induces a double descent curve of the test loss.

Takashi Ishida, Ikko Yamane, Tomoya Sakai, Gang Niu, Masashi Sugiyama
arXiv:2002.08709 · cs.LG, stat.ML · submitted Feb 20, 2020 · updated Mar 31, 2021
abstract · pdf · html · ICML 2020 camera ready version

add comment on HN

This technique is called "flood loss," and it's one of the most underrated papers in ML due to its implementation simplicity: https://twitter.com/theshawwn/status/1253505386172145666

Loss getting too low?

  loss = abs(loss - x) + x
where x is a value like 0.2.

Presto, your loss is no longer <0.2.

We have some pretty shocking screenshots of before/after using this technique for our BigGAN training runs.

Before flood loss, no progress: https://media.discordapp.net/attachments/696383989145010216/...

After flood loss: https://media.discordapp.net/attachments/696383989145010216/...

Both of these are screenshots from around step ~3k, about an hour into training. As you can see, flood loss improved things immediately and dramatically.

Other people are reporting that it's stabilizing their runs as well, but that's hearsay for the moment.