Home

Awesome

Improving generalization by controlling label-noise information in neural network weights

The author implementation of LIMIT method described in the paper "Improving generalization by controlling label-noise information in neural network weights" by Hrayr Harutyunyan, Kyle Reing, Greg Ver Steeg, and Aram Galstyan.

If you goal is to reproduce the results, please use the version of the code at time of ICML 2020 camera-ready submission. It can be found in the following release.

If your goal is to use LIMIT, you can use the this newer code. It is better commented and easier to use. The main method of the paper, LIMIT, is coded in the LIMIT class of the file methods/limit.py.

To cite the paper please use the following BibTeX:

@incollection{harutyunyan2020improving,
 author = {Harutyunyan, Hrayr and Reing, Kyle and Ver Steeg, Greg and Galstyan, Aram},
 booktitle = {Proceedings of Machine Learning and Systems 2020},
 pages = {5172--5182},
 title = {Improving generalization by controlling label-noise information in neural network weights},
 year = {2020}
}

Requirements:

The exact versions of libraries we used are listed in the requirements.txt file.

Using the code

The whole code is writen as a package. All scripts should be initiated from the root directory. An example command would be:

python -um scripts.train_classifier -d cuda -c configs/4layer-cnn-mnist.json --log_dir logs/mnist

To monitor the training we run Tensorboard:

tensorboard --logdir=/path/to/the/log/directory

Structure of the repository

DirectoryPurpose
methodsContains implementations of classifiers used in the paper, including LIMIT.
modulesContains code that is modular and can be shared across different models and experiments.
notebooksDesigned for Jupyter notebooks. Contains the notebooks used to generate the plots in the paper.
scriptsContains the scripts for training, testing, collecting results, and generating training commands.
configsStores training/architecture configurations of our models.
logsUsed to store tensorboard logs.
dataUsed to store data files.
plotsUsed to store the plots.
nnlibPoints to a submodule which contains useful and generic code for training neural networks.

Reproducing the results

As mentioned above, we recommend using the code of the v0.1 release to reproduce the results of the paper. However, one should be able to reproduce the results with the current code too, although some unexpected errors might arise (they should be easy to fix). The commands we used to run the experiments were generated using the scripts/generate_commands.py script.