# Graph Machine Learning

Graph-based data structures can be found everywhere, from molecular structures to big social networks but also in databases and knowledge graphs. Tackling such structured data with machine learning comes with its own challenges, e.g. graphs typically have varying size which implies that we cannot directly use traditional CNNs. Additionally, in social networks the number of neighboring nodes can vary by several orders of magnitude, making aggregation of information from the neighbors at least challenging.

In this course we will give an overview of graph learning techniques, starting with (rather historic) kernel methods and then covering various standard message-passing graph neural networks up to modern graph transformers. We will furthermore address the theoretical expressiveness of the models which (in contrast to simple MLPs) are not universal function approximators. Last, we will have a short look into approximating NP-hard problems using GNNs.

## Structure

In the first phase, the course consists of lectures and mandatory exercises where methods are implemented in pytorch-geometric (the standard library for graph machine learning).

In the second phase, teams of 3 will work together on a project and the project and its final presentation will determine the grade.

## Lecture Plan

The lecture takes place on Wednesdays 14-16.