Git Product home page Git Product logo

mmp's Introduction

MMP

A PyTorch implementation of MMP "MEMORY-BASED MESSAGE PASSING: DECOUPLING THE MESSAGE FOR PROPAGATION FROM DISCRIMINATION ".(ICASSP 2022)

(https://arxiv.org/abs/2202.00423)

Abstract

Message passing is a fundamental procedure for graph neural networks in the field of graph representation learning. Based on the homophily assumption, the current message passing always aggregates features of connected nodes, such as the graph Laplacian smoothing process. However, real-world graphs tend to be noisy and/or non-smooth. The homophily assumption does not always hold, leading to sub-optimal results. A revised message passing method needs to maintain each node’s discriminative ability when aggregating the message from neighbors. To this end, we propose a Memory-based Message Passing (MMP) method to decouple the message of each node into a self-embedding part for discrimination and a memory part for propagation. Furthermore, we develop a control mechanism and a decoupling regularization to control the ratio of absorbing and excluding the message in the memory for each node. More importantly, our MMP is a general skill that can work as an additional layer to help improve traditional GNNs performance. Extensive experiments on various datasets with different homophily ratios demonstrate the effectiveness and robustness of the proposed method.

Dependencies

  • python 3.7.3
  • pytorch 1.6.0
  • dgl 0.6.0
  • torch-geometric 1.6.2

Code Architecture

|── datasets                # datasets and load scripts
|── utils                   # Common useful modules(transform, loss function)
|── models                  # models 
|  └── layers               # code for layers
|  └── models               # code for models
└── train                   # train scripts

Usage

Standard node classification

python train.py -d texas
python train.py -d wisconsin
python train.py -d actor
python train.py -d squirrel
python train.py -d chameleon
python train.py -d cornell
python train.py -d citeseer
python train.py -d pubmed
python train.py -d cora

Noisy edges scenario

python train.py -d cora_noisy -a 0.25
python train.py -d cora_noisy -a 0.50
python train.py -d cora_noisy -a 0.75
python train.py -d cora_noisy -a 1.00
python train.py -d cora_noisy -a 2.00
python train.py -d cora_noisy -a 3.00
python train.py -d cora_noisy -a 4.00
python train.py -d cora_noisy -a 5.00

Citation

@article{chen2022memory,
  title={Memory-based Message Passing: Decoupling the Message for Propogation from Discrimination},
  author={Chen, Jie and Liu, Weiqi and Pu, Jian},
  journal={preprint arXiv:2202.00423},
  year={2022}
}

mmp's People

Contributors

jc-202 avatar

Stargazers

Junyuan Fang avatar  avatar jayeewong avatar Kzh avatar

Watchers

 avatar

mmp's Issues

关于H与Memory的差异性讨论

我注意到论文中比较直觉的让H和C保持差异性,前者用于预测,后者用于传播,但深层的考虑好像没太解释清楚。
在代码中,超参lambda用来保证第二项损失,即保证H与C事实上的差异性,但只有cornell、wisconsin两个数据集是1,其他数据集都是0、0.1、0.2等很接近0的数,
换句话说,大部分情况下并没有从事实上保证H与C的差异。

既然不保证二者的差异性,如果我们为了简化而去掉模型每层的卷积参数W1和映射参数W2,去掉alphas,模型大致可以等价于H+AH+A^2H+ ... ...的常见形式,
但这似乎又失去了模型特色——“让H和C保持差异性,前者用于预测,后者用于传播”。

希望作者能解释一下,不胜感激。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.