Where and How to Attack? A Causality-Inspired Recipe for Generating Counterfactual Adversarial Examples
This repository is the official implementation of our paper Where and How to Attack? A Causality-Inspired Recipe for Generating Counterfactual Adversarial Examples. In this work we propose CADE, a framework that can generate Counterfactual ADversarial Examples.
attacker = CADELatent(generative_model=generative_model,
attacking_nodes=attacking_nodes,
substitute=substitute,
device=device)
x_cade = attacker.attack_whitebox(x=x,
label=label,
lr=lr,
epochs=num_steps,
epsilon=epsilon,
causal_layer=causal_layer)
attacker = CADEObservable(causal_dag=causal_dag,
attacking_nodes=attacking_nodes,
y_index=y_index,
substitute=substitute,
l_dag=l_dag)
x_cade = attacker.attack(endogenous=endogenous,
epsilon=epsilon,
causal_layer=causal_layer,
num_steps=num_steps,
lr=lr)
python Experiment_CADE_Pendulum.py --substitute resnet50
python Experiment_CADE_Pendulum.py --substitute vgg16
python Experiment_CADE_CelebA.py --substitute resnet50
python Experiment_CADE_CelebA.py --substitute vgg16
python Experiment_CADE_SynMeasurement.py --substitute lin
python Experiment_CADE_SynMeasurement.py --substitute mlp
https://drive.google.com/drive/folders/1khGEtAqlpKtLFspSKdz5zyObwpDGoLzV?usp=share_link
The causal generative models for Pendulum and CelabA are trained based on this repository
model_training/Pendulum/model_train_standard.py
model_training/Pendulum/model_train_adversarial.py
model_training/CelebA/model_train_standard.py
model_training/CelebA/model_train_adversarial.py