What is a graph neural network?

Introduction

Project introduction

What is a graph neural network?

Some data is a set of things plus the connections between them. Research papers are a good example, since each paper has its own text and papers cite each other. In graph language each paper is a node and each citation is an edge.

A graph neural network predicts something about each node using both its own features and its neighbors. Each layer lets every node collect messages from the nodes it is connected to and update its own vector, so after two layers a paper has heard from papers up to two links away.

Why use the links?

In the Cora dataset you will use, 2,708 machine learning papers are each labeled with one of 7 topics, but only 140 of the labels may be used for training. A model that reads only a paper's words gets about 57% of the test papers right.

Linked papers share a topic 81% of the time, against 18% for two random papers. So a paper's neighbors are strong evidence about its topic. A two-layer graph convolutional network that averages over neighbors reaches about 81% with the same 140 labels.

One paper, many messages

2,708 Cora papers
0123456

Paper 0

links4gathersitself + 4 papersstepcollect messages
Wordswhat a paper says
Linkswho it cites
Averageitself and neighbors
Topicone of 7

What you will build

01

Message passing

The normalized adjacency matrix and a GCN layer that averages each paper with its neighbors.

02

Over-smoothing

Measure how stacking layers makes every paper look alike, and fix it.

03

Honest evaluation

A fixed split, choices made on validation, test reported once, across seeds.

Start with scoring a split

Compute the loss and accuracy over only the papers in one split.

Continue to Problem 1