This is our Tensorflow implementation of Jacobian Adversarially Regularized Networks (JARN).
Jacobian Adversarially Regularized Networks for Robustness (ICLR 2020)
Alvin Chan, Yi Tay, Yew Soon Ong, Jie Fu
https://arxiv.org/abs/1912.10185
TL;DR: We show that training classifiers to produce salient input Jacobian matrices with a GAN-like regularization can boost adversarial robustness.
- Tensorflow 1.14.0
- Python 3.7
- Install dependencies with
pip install -r requirements.txt
. - Run JARN training and evaluation with
sh run_train_jarn.sh
. Final evaluation output is saved inattack_log
.
train_jarn.py
: trains the JARN model and subsequently evaluate on adversarial examples.pgd_attack.py
: generates adversarial examples and save them inattacks/
.run_attack.py
: evaluates model on adversarial examples fromattacks/
.config.py
: training parameters for JARN.config_attack.py
: parameters for adversarial example evaluation.model_jarn.py
: contains code for JARN model architectures.cifar10_input.py
provides utility functions and classes for loading the CIFAR10 dataset.
If you find our repository useful, please consider citing our paper:
@article{chan2019jacobian,
title={Jacobian Adversarially Regularized Networks for Robustness},
author={Chan, Alvin and Tay, Yi and Ong, Yew Soon and Fu, Jie},
journal={arXiv preprint arXiv:1912.10185},
year={2019}
}
Useful code bases we used in our work:
- https://github.com/MadryLab/cifar10_challenge (for adversarial example generation and evaluation)