{"id":19979270,"url":"https://github.com/edisonleeeee/greatx","last_synced_at":"2025-04-05T08:04:45.907Z","repository":{"id":39831040,"uuid":"428081896","full_name":"EdisonLeeeee/GreatX","owner":"EdisonLeeeee","description":"A graph reliability toolbox based on PyTorch and PyTorch Geometric (PyG).","archived":false,"fork":false,"pushed_at":"2024-10-15T07:07:03.000Z","size":8539,"stargazers_count":85,"open_issues_count":3,"forks_count":13,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-03-29T07:08:44.278Z","etag":null,"topics":["adversarial-attacks","distribution-shift","graph-convolutional-networks","graph-neural-networks","graph-reliability-toolbox","inherent-noise","pytorch","pytorch-geometric"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EdisonLeeeee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-15T01:06:58.000Z","updated_at":"2024-12-15T07:23:54.000Z","dependencies_parsed_at":"2024-01-05T21:21:55.332Z","dependency_job_id":"c2bb139a-b0c8-4a2f-9924-3c5757059d14","html_url":"https://github.com/EdisonLeeeee/GreatX","commit_stats":{"total_commits":289,"total_committers":3,"mean_commits":96.33333333333333,"dds":0.03114186851211076,"last_synced_commit":"2ca9add9cebfb67d109c779d6ebd52dea865aeea"},"previous_names":["edisonleeeee/graphwar"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdisonLeeeee%2FGreatX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdisonLeeeee%2FGreatX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdisonLeeeee%2FGreatX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdisonLeeeee%2FGreatX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EdisonLeeeee","download_url":"https://codeload.github.com/EdisonLeeeee/GreatX/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247305933,"owners_count":20917208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adversarial-attacks","distribution-shift","graph-convolutional-networks","graph-neural-networks","graph-reliability-toolbox","inherent-noise","pytorch","pytorch-geometric"],"created_at":"2024-11-13T03:37:22.703Z","updated_at":"2025-04-05T08:04:45.885Z","avatar_url":"https://github.com/EdisonLeeeee.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **GreatX**: Graph Reliability Toolbox\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg width = \"600\" height = \"150\" src=\"./imgs/greatx.png\" alt=\"banner\"/\u003e\r\n  \u003cbr/\u003e\r\n\u003c/p\u003e\r\n\u003cp align=\"center\"\u003e\u003cstrong\u003eGreatX is great!\u003c/strong\u003e\u003c/p\u003e\r\n\r\n\u003cp align=center\u003e\r\n  \u003ca href=\"https://greatx.readthedocs.io/en/latest/\"\u003e\r\n    [Documentation]\r\n  \u003c/a\u003e\r\n  |\r\n  \u003ca href=\"https://github.com/EdisonLeeeee/GreatX/blob/master/examples\"\u003e\r\n    [Examples]\r\n  \u003c/a\u003e\r\n\u003c/p\u003e\r\n\r\n\u003cp align=center\u003e\r\n  \u003ca href=\"https://www.python.org/downloads/release/python-370/\"\u003e\r\n    \u003cimg src=\"https://img.shields.io/badge/Python-\u003e=3.7-3776AB?logo=python\" alt=\"Python\"\u003e\r\n  \u003c/a\u003e\r\n  \u003ca href=\"https://github.com/pytorch/pytorch\"\u003e\r\n    \u003cimg src=\"https://img.shields.io/badge/PyTorch-\u003e=1.8-FF6F00?logo=pytorch\" alt=\"pytorch\"\u003e\r\n  \u003c/a\u003e\r\n  \u003ca href=\"https://pypi.org/project/greatx/\"\u003e\r\n    \u003cimg src=\"https://badge.fury.io/py/greatx.svg\" alt=\"pypi\"\u003e\r\n  \u003c/a\u003e\r\n  \u003ca href=\"https://github.com/EdisonLeeeee/GreatX/blob/master/LICENSE\"\u003e\r\n    \u003cimg src=\"https://img.shields.io/github/license/EdisonLeeeee/GreatX\" alt=\"license\"\u003e\r\n  \u003c/a\u003e\r\n  \u003ca href=\"https://github.com/EdisonLeeeee/GreatX/blob/master/CONTRIBUTING.md\"\u003e\r\n    \u003cimg src=\"https://img.shields.io/badge/Contributions-Welcome-278ea5\" alt=\"Contrib\"/\u003e\r\n  \u003c/a\u003e\r\n  \u003ca href=\"https://greatx.readthedocs.io/en/latest\"\u003e\r\n    \u003cimg src=\"https://readthedocs.org/projects/greatx/badge/?version=latest\" alt=\"docs\"\u003e\r\n  \u003c/a\u003e\r\n\u003c/p\u003e\r\n\r\n# ❓ What is \"Reliability\" on Graphs?\r\n![threats](./imgs/threats.png)\r\n\r\n\"Reliability\" on graphs refers to *robustness* against the following threats:\r\n+ Inherent noise\r\n+ Distribution Shift\r\n+ Adversarial Attacks\r\n\r\nFor more details, please kindly refer to our paper [**Recent Advances in Reliable Deep Graph Learning: Inherent Noise, Distribution Shift, and Adversarial Attack**](https://arxiv.org/abs/2202.07114)\r\n\r\n\r\n# 💨 News\r\n- November 2, 2022: We are planning to release GreatX 0.1.0 this month, stay tuned!\r\n- June 30, 2022: GraphWar has been renamed to GreatX.\r\n- ~~June 9, 2022: GraphWar **v0.1.0** has been released. We also provide the [documentation](https://greatx.readthedocs.io/en/latest) along with numerous [examples](https://github.com/EdisonLeeeee/GreatX/blob/master/examples)~~ .\r\n- ~~May 27, 2022: GraphWar has been refactored with [PyTorch Geometric (PyG)](https://github.com/pyg-team/pytorch_geometric), old code based on [DGL](https://www.dgl.ai) can be found [here](https://github.com/EdisonLeeeee/GreatX/tree/dgl). We will soon release the first version of GreatX, stay tuned!~~\r\n\r\nNOTE: GreatX is still in the early stages and the API will likely continue to change.\r\nIf you are interested in this project, don't hesitate to contact me or make a PR directly.\r\n# 🚀 Installation\r\n\r\nPlease make sure you have installed [PyTorch](https://pytorch.org) and [PyTorch Geometric (PyG)](https://pytorch-geometric.readthedocs.io/en/latest/notes/installation.html).\r\n\r\n\r\n```bash\r\n# Coming soon\r\npip install -U greatx\r\n```\r\n\r\nor\r\n\r\n```bash\r\n# Recommended\r\ngit clone https://github.com/EdisonLeeeee/GreatX.git \u0026\u0026 cd GreatX\r\npip install -e . --verbose\r\n```\r\n\r\nwhere `-e` means \"editable\" mode so you don't have to reinstall every time you make changes.\r\n\r\n# ⚡ Get Started\r\n\r\nAssume that you have a `torch_geometric.data.Data` instance `data` that describes your graph.\r\n\r\n## How fast can we train and evaluate your own GNN?\r\nTake `GCN` as an example:\r\n```python\r\nfrom greatx.nn.models import GCN\r\nfrom greatx.training import Trainer\r\nfrom torch_geometric.datasets import Planetoid\r\n# Any PyG dataset is available!\r\ndataset = Planetoid(root='.', name='Cora')\r\ndata = dataset[0]\r\nmodel = GCN(dataset.num_features, dataset.num_classes)\r\ntrainer = Trainer(model, device='cuda:0') # or 'cpu'\r\ntrainer.fit(data, mask=data.train_mask)\r\ntrainer.evaluate(data, mask=data.test_mask)\r\n```\r\n## A simple targeted manipulation attack\r\n\r\n```python\r\nfrom greatx.attack.targeted import RandomAttack\r\nattacker = RandomAttack(data)\r\nattacker.attack(1, num_budgets=3) # attacking target node `1` with `3` edges\r\nattacked_data = attacker.data()\r\nedge_flips = attacker.edge_flips()\r\n\r\n```\r\n\r\n## A simple untargeted (non-targeted) manipulation attack\r\n\r\n```python\r\nfrom greatx.attack.untargeted import RandomAttack\r\nattacker = RandomAttack(data)\r\nattacker.attack(num_budgets=0.05) # attacking the graph with 5% edges perturbations\r\nattacked_data = attacker.data()\r\nedge_flips = attacker.edge_flips()\r\n```\r\n\r\n\r\n# 👀 Implementations\r\n\r\nIn detail, the following methods are currently implemented:\r\n\r\n## ⚔ Adversarial Attack\r\n\r\n### Graph Manipulation Attack (GMA)\r\n\r\n#### Targeted Attack\r\n\r\n| Methods          | Descriptions                                                                                                                                           | Examples                                                                                                      |\r\n| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- |\r\n| **RandomAttack** | A simple random method that chooses edges to flip randomly.                                                                                            | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/targeted/random_attack.py) |\r\n| **DICEAttack**   | *Waniek et al.* [Hiding Individuals and Communities in a Social Network](https://arxiv.org/abs/1608.00375), *Nature Human Behavior'16*                 | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/targeted/dice_attack.py)   |\r\n| **Nettack**      | *Zügner et al.* [Adversarial Attacks on Neural Networks for Graph Data](https://arxiv.org/abs/1805.07984), *KDD'18*                                    | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/targeted/nettack.py)       |\r\n| **FGAttack**     | *Chen et al.* [Fast Gradient Attack on Network Embedding](https://arxiv.org/abs/1809.02797), *arXiv'18*                                                | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/targeted/fg_attack.py)     |\r\n| **GFAttack**     | *Chang et al*.  [A Restricted Black - box Adversarial Framework Towards Attacking Graph Embedding Models](https://arxiv.org/abs/1908.01297), *AAAI'20* | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/targeted/gf_attack.py)     |\r\n| **IGAttack**     | *Wu et al.* [Adversarial Examples on Graph Data: Deep Insights into Attack and Defense](https://arxiv.org/abs/1903.01610), *IJCAI'19*                  | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/targeted/ig_attack.py)     |\r\n| **SGAttack**     | *Li et al.* [ Adversarial Attack on Large Scale Graph](https://arxiv.org/abs/2009.03488), *TKDE'21*                                                    | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/targeted/sg_attack.py)     |\r\n| **PGDAttack**    | *Xu et al.* [Topology Attack and Defense for Graph Neural Networks: An Optimization Perspective](https://arxiv.org/abs/1906.04214), *IJCAI'19*         | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/targeted/pgd_attack.py)    |\r\n\r\n#### Untargeted Attack\r\n\r\n| Methods          | Descriptions                                                                                                                                   | Examples                                                                                                        |\r\n| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |\r\n| **RandomAttack** | A simple random method that chooses edges to flip randomly                                                                                     | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/untargeted/random_attack.py) |\r\n| **DICEAttack**   | *Waniek et al.* [Hiding Individuals and Communities in a Social Network](https://arxiv.org/abs/1608.00375), *Nature Human Behavior'16*         | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/untargeted/dice_attack.py)   |\r\n| **FGAttack**     | *Chen et al.* [Fast Gradient Attack on Network Embedding](https://arxiv.org/abs/1809.02797), *arXiv'18*                                        | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/untargeted/fg_attack.py)     |\r\n| **Metattack**    | *Zügner et al.* [Adversarial Attacks on Graph Neural Networks via Meta Learning](https://arxiv.org/abs/1902.08412), *ICLR'19*                  | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/untargeted/metattack.py)     |\r\n| **IGAttack**     | *Wu et al.* [Adversarial Examples on Graph Data: Deep Insights into Attack and Defense](https://arxiv.org/abs/1903.01610), *IJCAI'19*          | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/untargeted/ig_attack.py)     |\r\n| **PGDAttack**    | *Xu et al.* [Topology Attack and Defense for Graph Neural Networks: An Optimization Perspective](https://arxiv.org/abs/1906.04214), *IJCAI'19* | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/untargeted/pgd_attack.py)    |\r\n\r\n### Graph Injection Attack (GIA)\r\n| Methods             | Descriptions                                                                                                    | Examples                                                                                                          |\r\n| ------------------- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |\r\n| **RandomInjection** | A simple random method that chooses nodes to inject randomly.                                                   | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/injection/random_injection.py) |\r\n| **AdvInjection**    | The 2nd place solution of [KDD Cup 2020](https://www.biendata.xyz/competition/kddcup_2020/), team: ADVERSARIES. | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/injection/adv_injection.py)    |\r\n\r\n### Graph Universal Attack (GUA)\r\n\r\n### Graph Backdoor Attack (GBA)\r\n\r\n| Methods         | Descriptions                                                                                                              | Examples                                                                                                     |\r\n| --------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |\r\n| **LGCBackdoor** | *Chen et al.* [Neighboring Backdoor Attacks on Graph Convolutional Network](https://arxiv.org/abs/2201.06202), *arXiv'22* | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/backdoor/lgc_backdoor.py) |\r\n| **FGBackdoor**  | *Chen et al.* [Neighboring Backdoor Attacks on Graph Convolutional Network](https://arxiv.org/abs/2201.06202), *arXiv'22* | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/attack/backdoor/fg_backdoor.py)  |\r\n\r\n\r\n\r\n## Enhancing Techniques or Corresponding Defense\r\n\r\n### Standard GNNs (without defense)\r\n\r\n#### Supervised\r\n| Methods                 | Descriptions                                                                                                                               | Examples                                                                                                      |\r\n| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- |\r\n| **GCN**                 | *Kipf et al.* [Semi-Supervised Classification with Graph Convolutional Networks](https://arxiv.org/abs/1609.02907), *ICLR'17*              | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/gcn.py)         |\r\n| **SGC**                 | *Wu et al.*  [Simplifying Graph Convolutional Networks](https://arxiv.org/abs/1902.07153), *ICLR'19*                                       | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/sgc.py)         |\r\n| **GAT**                 | *Veličković et al.*  [Graph Attention Networks](https://arxiv.org/abs/1710.10903), *ICLR'18*                                               | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/gat.py)         |\r\n| **DAGNN**               | *Liu et al.*  [Towards Deeper Graph Neural Networks](https://arxiv.org/abs/2007.09296), *KDD'20*                                           | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/dagnn.py)       |\r\n| **APPNP**               | *Klicpera et al.*  [Predict then Propagate: Graph Neural Networks meet Personalized PageRank](https://arxiv.org/abs/1810.05997), *ICLR'19* | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/appnp.py)       |\r\n| **JKNet**               | *Xu et al.*  [Representation Learning on Graphs with Jumping Knowledge Networks](https://arxiv.org/abs/1806.03536), *ICML'18*              | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/jknet.py)       |\r\n| **TAGCN**               | *Du et al.*  [Topological Adaptive Graph Convolutional Networks](https://arxiv.org/abs/1806.03536), *arXiv'17*                             | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/tagcn.py)       |\r\n| **SSGC**                | *Zhu et al.*  [Simple Spectral Graph Convolution](https://openreview.net/forum?id=CYO5T-YjWZV), *ICLR'21*                                  | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/ssgc.py)        |\r\n| **DGC**                 | *Wang et al.*  [Dissecting the Diffusion Process in Linear Graph  Convolutional Networks](https://arxiv.org/abs/2102.10739), *NeurIPS'21*  | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/dgc.py)         |\r\n| **NLGCN, NLMLP, NLGAT** | *Liu et al.*  [Non-Local Graph Neural Networks](https://ieeexplore.ieee.org/document/9645300), *TPAMI'22*                                  | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/nlgnn.py)       |\r\n| **SpikingGCN**          | *Zhu et al.*  [Spiking Graph Convolutional Networks](https://arxiv.org/abs/2205.02767), *IJCAI'22*                                         | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/spiking_gcn.py) |\r\n\r\n#### Unsupervised/Self-supervise\r\n| Methods     | Descriptions                                                                                                                                                                     | Examples                                                                                                    |\r\n| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |\r\n| **DGI**     | *Veličković et al.* [Deep Graph Infomax](https://arxiv.org/abs/1809.10341), *ICLR'19*                                                                                            | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/unsupervised/dgi.py)     |\r\n| **GRACE**   | *Zhu et al.* [Deep Graph Contrastive Representation Learning](https://arxiv.org/abs/2006.04131), *ICML'20*                                                                       | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/unsupervised/grace.py)   |\r\n| **CCA-SSG** | *Zhang et al.* [From Canonical Correlation Analysis to Self-supervised Graph Neural Networks](https://arxiv.org/abs/2106.12484), *NeurIPS'21*                                    | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/unsupervised/cca_ssg.py) |\r\n| **GGD**     | *Zheng et al.* [Rethinking and Scaling Up Graph Contrastive Learning: An Extremely Efficient Approach with Group Discrimination](https://arxiv.org/abs/2206.01535), *NeurIPS'22* | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/unsupervised/ggd.py)     |\r\n\r\n### Techniques Against Adversarial Attacks\r\n\r\n| Methods                 | Descriptions                                                                                                                                                                                                                                | Examples                                                                                                          |\r\n| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |\r\n| **MedianGCN**           | *Chen et al.* [Understanding Structural Vulnerability in Graph Convolutional Networks](https://www.ijcai.org/proceedings/2021/310), *IJCAI'21*                                                                                              | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/median_gcn.py)      |\r\n| **RobustGCN**           | *Zhu et al.*  [Robust Graph Convolutional Networks Against Adversarial Attacks](http://pengcui.thumedialab.com/papers/RGCN.pdf), *KDD'19*                                                                                                   | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/robust_gcn.py)      |\r\n| **SoftMedianGCN**       | *Geisler et al.* [Reliable Graph Neural Networks via Robust Aggregation](https://arxiv.org/abs/2010.15651), *NeurIPS'20*\u003cbr\u003e*Geisler et al.* [Robustness of Graph Neural Networks at Scale](https://arxiv.org/abs/2110.14038), *NeurIPS'21* | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/soft_median_gcn.py) |\r\n| **ElasticGNN**          | *Liu et al.* [Elastic Graph Neural Networks](https://arxiv.org/abs/2107.06996), *ICML'21*                                                                                                                                                   | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/elastic_gnn.py)     |\r\n| **AirGNN**              | *Liu et al.* [Graph Neural Networks with Adaptive Residual](https://openreview.net/forum?id=hfkER_KJiNw), *NeurIPS'21*                                                                                                                      | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/air_gnn.py)         |\r\n| **SimPGCN**             | *Jin et al.* [Node Similarity Preserving Graph Convolutional Networks](https://arxiv.org/abs/2011.09643), *WSDM'21*                                                                                                                         | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/simp_gcn.py)        |\r\n| **SAT**                 | *Li et al.* [Spectral Adversarial Training for Robust Graph Neural Network](https://arxiv.org/abs/2211.10896), *arXiv'22*                                                                                                                   | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/model/supervised/gcn_sat.py)          |\r\n| **JaccardPurification** | *Wu et al.* [Adversarial Examples on Graph Data: Deep Insights into Attack and Defense](https://arxiv.org/abs/1903.01610), *IJCAI'19*                                                                                                       | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/defense/gcn_jaccard.py)               |\r\n| **SVDPurification**     | *Entezari et al.* [All You Need Is Low (Rank): Defending Against Adversarial Attacks on Graphs](https://arxiv.org/abs/1903.01610), *WSDM'20*                                                                                                | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/defense/gcn_svd.py)                   |\r\n| **GNNGUARD**            | *Zhang et al.* [GNNGUARD: Defending Graph Neural Networks against Adversarial Attacks](https://arxiv.org/abs/2006.08149), *NeurIPS'20*                                                                                                      | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/defense/gnnguard.py)                  |\r\n| **GUARD**               | *Li et al.* [GUARD: Graph Universal Adversarial Defense](https://arxiv.org/abs/2204.09803), *arXiv'22*                                                                                                                                      | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/defense/universal_defense.py)         |\r\n| **RTGCN**               | *Wu et al.* [Robust Tensor Graph Convolutional Networks via T-SVD based Graph Augmentation](https://dl.acm.org/doi/abs/10.1145/3534678.3539436), *KDD'22*                                                                                   | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/model/supervised/rt_gcn.py)           |\r\n\r\nMore details of literatures and the official codes can be found at [Awesome Graph Adversarial Learning](https://github.com/gitgiter/Graph-Adversarial-Learning).\r\n\r\n### Techniques Against Inherent Noise\r\n\r\n| Methods                | Descriptions                                                                                                                                                                     | Examples                                                                                                    |\r\n| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |\r\n| **DropEdge**           | *Rong et al.* [DropEdge: Towards Deep Graph Convolutional Networks on Node Classification](https://arxiv.org/abs/1907.10903), *ICLR'20*                                          | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/drop_edge.py) |\r\n| **DropNode**           | *You et al.* [Graph Contrastive Learning with Augmentations](https://arxiv.org/abs/2010.13902), *NeurIPS'20*                                                                     | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/drop_node.py) |\r\n| **DropPath**           | *Li et al.* [MaskGAE: Masked Graph Modeling Meets Graph Autoencoders](https://arxiv.org/abs/2205.10053), *arXiv'22*'                                                             | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/models/supervised/drop_path.py) |\r\n| **FeaturePropagation** | *Rossi et al.* [On the Unreasonable Effectiveness of Feature propagation in Learning on Graphs with Missing Node Features](https://openreview.net/forum?id=qe_qOarxjg), *Log'22* | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/defense/feature_propagation.py) |\r\n\r\n\r\n## Miscellaneous\r\n| Methods                             | Descriptions                                                                                                                                                                            | Examples                                                                            |\r\n| ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |\r\n| **Centered Kernel Alignment (CKA)** | *Nguyen et al.* [Do Wide and Deep Networks Learn the Same Things? Uncovering How Neural Network Representations Vary with Width and Depth](https://arxiv.org/abs/2010.15327), *ICLR'21* | [[**Example**]](https://github.com/EdisonLeeeee/GreatX/blob/master/examples/cka.py) |\r\n\r\n\r\n\r\n# ❓ Known Issues\r\n+ `Untargeted attacks` are suffering from performance degradation, as also in DeepRobust, when a validation set is used during training with model picking. Such phenomenon has also been revealed in [Black-box Gradient Attack on Graph Neural Networks: Deeper Insights in Graph-based Attack and Defense](https://arxiv.org/abs/2104.15061).\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedisonleeeee%2Fgreatx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedisonleeeee%2Fgreatx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedisonleeeee%2Fgreatx/lists"}