- 
Graph neural networks are neural network architectures specifically designed for learning representations of graph-structured data including learning node representation.
More formally the problem solved by GNNs can be framed as follows. Let
be a graph and be the Adjacency Matrix. We also let be the attribute matrix on the node features. The goal is to learn a node representation in
dimensions, denoted such that the graph structural information and node attributes are preserved.  - 
Each layer in a GNN has two different functions
- Aggregate information from the neighbors of each node.
 - Combine aggregated information from neighbors with current node representations.
 
 - 
The general framework can be described as follows. Let
be the representation of vertex at time step . We have that
Note the similarity to LSTMs and GRUs.
To use the representations, we use the representations at the last layer. That is
.  
Issues
- 
The following challenges are apparent in graph representation learning and motivate advances in GNNs.
- High Computational complexity which limits its applicability to large networks.
 - Low Parallelizability since edges imply coupling between nodes.
 - Non-stationarity - samples from graph data are dependent on each other.
 
 - 
Another problem is the Over-smoothing Problem That is, if the network is too deep representations become too similar
 - 
One approach to alleviate it is using the PairNorm. The goal is to keep the total pairwise squared distance of node representations unchanged.
- 
In particular, we want
Or
 - 
The above computation can be simplified by noticing that
Where
 is the L2-Norm.Which can be further simplified using
So that
And we want too update
 using the rule 
 -