# Notes on: Kipf, T. N., & Welling, M. (2016): Semi-Supervised Classification With Graph Convolutional Networks

## Table of Contents

## Notation

- denotes
*supervised*loss wrt. labeled part of graph - denotes differentiable function (e.g. neural network)
- is a weighting factor
- matrix of node feature vectors
- denotes unnormalized graph Laplacian of an undirected graph
- denotes # of nodes in
- edges
**adjacency matrix**(binary or weighted)- is the
*adjaceny matrix*of the undirected graph with added**self-connections** - is a layer-specific trainable weight matrix
- denotes activation function, e.g.
- is the matrix of activations in the l-th layer; .
- is the set of node indices that have labels

## Update rule

- Normalized Laplacian with self-loops, and then we multiply it by the activations of the previous layer () and the weight matrix connecting the previous layer to the current one ()
- I like to "visualize" it as:
- Flatten input graph
- Activations of the hidden layer is then the another graph, so we've basically projected the input-graph onto another graph by the use of the weight-matrix

## Spectral Graph Convolutions

- Motivates the the update rule as an approximations to this
- They're basically starting of with what you've read about in henaff15_deep_convol_networ_graph_struc_data, which you aslo have notes on here

## Example: 2-layer GCN

- is an
*input-to-hidden*weight matrix for a hidden layer with feature maps - is an
*hidden-to-output*weight matrix - with , is applied
*row-wise* Semi-supervised multi-class classification, we evaluate cross-entropy error over all labeled examples:

where is the set of node indices that have labels, and denotes the outputs, and since we're using sigmoid it represents a distribution, and the sum then becomes the expectation over our output.