Part of a series on |
Machine learning and data mining |
---|
A graph neural network (GNN) belongs to a class of artificial neural networks for processing data that can be represented as graphs.[1][2][3][4][5]
In the more general subject of "geometric deep learning", certain existing neural network architectures can be interpreted as GNNs operating on suitably defined graphs.[6] A convolutional neural network layer, in the context of computer vision, can be considered a GNN applied to graphs whose nodes are pixels and only adjacent pixels are connected by edges in the graph. A transformer layer, in natural language processing, can be considered a GNN applied to complete graphs whose nodes are words or tokens in a passage of natural language text.
The key design element of GNNs is the use of pairwise message passing, such that graph nodes iteratively update their representations by exchanging information with their neighbors. Several GNN architectures have been proposed,[2][3][7][8][9] which implement different flavors of message passing,[6][10] started by recursive[2] or convolutional constructive[3] approaches. As of 2022[update], it is an open question whether it is possible to define GNN architectures "going beyond" message passing, or instead every GNN can be built on message passing over suitably defined graphs.[11]
Relevant application domains for GNNs include natural language processing,[12] social networks,[13] citation networks,[14] molecular biology,[15] chemistry,[16][17] physics[18] and NP-hard combinatorial optimization problems.[19]
Open source libraries implementing GNNs include PyTorch Geometric[20] (PyTorch), TensorFlow GNN[21] (TensorFlow), Deep Graph Library[22] (framework agnostic), jraph[23] (Google JAX), and GraphNeuralNetworks.jl[24]/GeometricFlux.jl[25] (Julia, Flux).
wucuipeizhao2022
was invoked but never defined (see the help page).scarselli2009
was invoked but never defined (see the help page).micheli2009
was invoked but never defined (see the help page).sanchez2021
was invoked but never defined (see the help page).daigavane2021
was invoked but never defined (see the help page).bronstein2021
was invoked but never defined (see the help page).kipf2016
was invoked but never defined (see the help page).hamilton2017
was invoked but never defined (see the help page).velickovic2018
was invoked but never defined (see the help page).hajij2022
was invoked but never defined (see the help page).velickovic2022
was invoked but never defined (see the help page).wuchen2023
was invoked but never defined (see the help page).ying2018
was invoked but never defined (see the help page).stanforddata
was invoked but never defined (see the help page).gilmer2017
was invoked but never defined (see the help page).qasim2019
was invoked but never defined (see the help page).li2018
was invoked but never defined (see the help page).fey2019
was invoked but never defined (see the help page).tfgnn2022
was invoked but never defined (see the help page).jraph2022
was invoked but never defined (see the help page).Lucibello2021GNN
was invoked but never defined (see the help page).