- Notifications
You must be signed in to change notification settings - Fork33
Adversarial Attack on Graph Structured Data (https://arxiv.org/abs/1806.02371)
License
Hanjun-Dai/graph_adversarial_attack
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Adversarial Attack on Graph Structured Data (https://arxiv.org/abs/1806.02371, to appear in ICML 2018).This repo contains the code, data and results reported in the paper.
First clone the repo recursively, since it depends on another repo (https://github.com/Hanjun-Dai/pytorch_structure2vec):
git clone git@github.com:Hanjun-Dai/graph_adversarial_attack --recursive
(BTW if you have trouble downloading it because of permission issues, please seethis issue )
Then download the data using the following dropbox link:
https://www.dropbox.com/sh/mu8odkd36x54rl3/AABg8ABiMqwcMEM5qKIY97nla?dl=0
Put everything under the 'dropbox' folder, or create a symbolic link with name 'dropbox':
ln -s /path/to/your/downloaded/files dropbox
Finally the folder structure should look like this:
graph_adversarial_attack (project root)|__ README.md|__ code|__ pytorch_structure2vec|__ dropbox|__ |__ data| |__ scratch|......
Optionally, you can use the data generator undercode/data_generator
to generate the synthetic data.
The current code depends on pytorch 0.3.1, cffi and CUDA 9.1. Please install using the following command (for linux):
pip install http://download.pytorch.org/whl/cu91/torch-0.3.1-cp27-cp27mu-linux_x86_64.whl pip install cffi==1.11.2
The c++ code needs to be built first:
cd pytorch_structure2vec/s2v_libmakecd code/commonmake
If you want to retrain the target model, go to eithercode/graph_classification
orcode/node_classification
and run the script in train mode. For example:
cd code/graph_classification./run_er_components.sh -phase train
You can also use the pretrained model that is the same as used in this paper, under the folderdropbox/scratch/results
In this paper, we presented 5 different approaches for attack, under both graph-level classification and node-level classification tasks. The code for attack can be found undercode/graph_attack
andcode/node_attack
, respectively.
For example, to use Q-leaning to attack the graph classification method, do the following:
cd code/graph_attack./run_dqn.sh -phase train
@article{dai2018adversarial, title={Adversarial Attack on Graph Structured Data}, author={Dai, Hanjun and Li, Hui and Tian, Tian and Huang, Xin and Wang, Lin and Zhu, Jun and Song, Le}, journal={arXiv preprint arXiv:1806.02371}, year={2018}}
About
Adversarial Attack on Graph Structured Data (https://arxiv.org/abs/1806.02371)