Skip to content

An implementation of the experiments on KG robustness

Notifications You must be signed in to change notification settings

INK-USC/deceive-KG-models

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Learning to Deceive Knowledge Graph Augmented Models via Targeted Perturbation

This is a PyTorch implementation of our ICLR 2021 paper:

Learning to Deceive Knowledge Graph Augmented Models via Targeted Perturbation
Mrigank Raman, Aaron Chan*, Siddhant Agarwal*, Peifeng Wang, Hansen Wang, Sungchul Kim, Ryan Rossi, Handong Zhao, Nedim Lipka, Xiang Ren.
ICLR 2021.
*=equal contritbution

Note: This repo is still under construction. Please check again later!

Getting Started

Clone the repository


git clone https://github.com/INK-USC/deceive-KG-models.git

Question Answering

  1. Download the pretrained models and datasets
cd deceive-KG-models/obqa

bash scripts/download.sh

cd data/cpnet

wget https://csr.s3-us-west-1.amazonaws.com/tzw.ent.npy
  1. Preprocess the data
cd deceive-KG-models/obqa

python preprocess.py

By default, all available CPU cores will be used for multi-processing in order to speed up the process. Alternatively, you can use -p to specify the number of processes to use:

python preprocess.py -p 20
  1. Train the base classifier

Then train a grn model (for example)using the command:

python grn.py -ds obqa --encoder bert-base-uncased -bs 64 -mbs 4 -dlr 1e-3

Similarly train RN and GN as well.

  1. Train the triple classifier
python Get_neg_triples.py

python deep_triple_classifier.py
  1. Pruning the Graph for only the useful nodes
python new_graph.py
  1. Running Heuristics
python heuristics.py

The attributes are:

-np --num_pert: number of perturbations

--type type of perturbation(rel for Relation Swapping, edge for Edge Deletion and edge1 for Edge Rewiring)

For Relation Replacement use the command:

python train.py --mode_type eval --num_epochs 1 --save_dir ./saved_models/KG/model_25 --model_id 5 --enable_shuffle --dqn_lstm_len 100 --dqn_batch_size 16 --dqn_train_step 50 --log_path log_25.csv --steps_after_collecting_data 2000
  1. Training the RL agent
python train.py --mode_type train --num_epochs 1 --save_dir ./saved_models/KG/model_25 --model_id 1 --enable_shuffle --dqn_lstm_len 100 --dqn_batch_size 16 --dqn_train_step 50 --log_path log_25.csv --steps_after_collecting_data 2000
  1. Evaluating the RL agent
python train.py --mode_type eval --num_epochs 71801 --num_steps 70000 --save_dir ./saved_models/KG/model_25 --model_id 1 --debug_mode

what you have to change for specific model:

change of GPU number

change saved path to coincide with your saved model: ./saved_models/KG/model_25;

change num_steps: the number of steps you want to perturb, 70000 as default

Recommendation based experiments

cd deceive-KG-models/RippleNet
  1. Train the base classifier
bash scripts/run_movie.sh

or

bash scripts/run_music.sh
  1. Run Heurisitics
python main_RN.py

The attributes are: --dataset: movie or music

--type : Type of perturbation

--num_pert : Number of perturbations

  1. Train RL agent
python train.py --mode_type train --num_epochs 1 --save_dir ./saved_models/KG/model_25 --model_id 1 --enable_shuffle --dqn_lstm_len 100 --dqn_batch_size 16 --dqn_train_step 50 --log_path log_25.csv --steps_after_collecting_data 2000
  1. Evaluate the RL agent
python train.py --mode_type eval --num_epochs 71801 --num_steps 70000 --save_dir ./saved_models/KG/model_25 --model_id 1 --debug_mode

About

An implementation of the experiments on KG robustness

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published