---
kind: concept
slug: dynamic-graph-embedding
title: Dynamic graph embedding
summary: >-
  Dynamic graph embedding gives each node a vector that follows a graph changing over time, as snapshots or timed events. Covered: temporal random walks, warm-started autoencoders, temporal point processes and dynamic GNNs, from one survey taxonomy plus a general graph-learning survey. The trade-off: neither survey runs experiments, so no method is compared on numbers here.
tags: [graph-representation-learning, dynamic-graphs, node-embedding, temporal-graphs, survey]
papers: ["2204.01855", "2105.00696"]
related: [node-embedding, graph-neural-network, skip-gram-negative-sampling, attributed-network-embedding, knowledge-graph-embedding, time-series-forecasting]
status: draft
updated_at: 2026-10-31
---

## Overview

A dynamic graph embedding maps the nodes of a graph that changes over time to
vectors, so that similar nodes stay close as the graph evolves
[arxiv:2204.01855 §2.1] [§3.2]. The input comes in one of two forms. A
discrete-time graph is a sequence of snapshots, one graph per time step. A
continuous-time graph is a stream of timed events, such as an edge that appears
at a given moment [arxiv:2204.01855 §3.2].

The two forms are not interchangeable. Converting a stream into snapshots, or
the reverse, changes what a model can see [arxiv:2204.01855 §3.2]. A method
should therefore be picked for the form the data already has.

Two surveys are the sources for this page. The dynamic-graph survey splits the
field into traditional (non-GNN) methods and GNN-based methods, and each family
into static and dynamic settings [arxiv:2204.01855 §1]. The variants below
follow that split. The general graph-learning survey covers the topic only in
passing, under random walks and spatial-temporal networks [arxiv:2105.00696
§2.3.4] [§2.4.5]. Neither survey gives experiments, so the variants are not
ranked against each other here.

## Variants

### Aggregation over snapshots

Collapse the snapshots into one static graph, for example by summing or
weighting their adjacency matrices, and embed that graph with a static method.
Alternatively, embed each snapshot separately and combine the vectors over
time, for example with a time-series model. Factorising a node-by-node-by-time
tensor also belongs here [arxiv:2204.01855 §3.2.1]. The time order is lost in
the first form and only partly kept in the second.

### Temporal random walks

Walks are generated over the timed edges. CTDNE only follows edges whose
timestamps do not decrease along the walk. EvoNRL updates its walks when edges
change. DynNode2vec initialises node2vec from the snapshots [arxiv:2204.01855
§3.2.2] [eq. 9]. The walks are then fed to a skip-gram model, as in static
random-walk embedding [arxiv:2204.01855 §3.1.2]. The general graph-learning
survey also files time-varying network embedding under random-walk methods, but
names no specific method there [arxiv:2105.00696 §2.3.4].

### Warm-started autoencoders (non-GNN deep learning)

Each snapshot's autoencoder starts from the weights of the previous snapshot,
which the survey gives as the DynGEM approach [arxiv:2204.01855 §3.2.3]. Dyn-VGAE
adds a penalty that keeps the latent variables of consecutive snapshots close
[arxiv:2204.01855 §3.2.3] [eq. 10]. dyngraph2vec instead encodes a window of
past adjacency matrices [arxiv:2204.01855 §3.2.3].

### Temporal point processes

These model when new links form. HTNE uses a Hawkes process over a node's
history of neighbours [arxiv:2204.01855 §3.2.4] [eq. 11] [eq. 12]. DyRep
separates two kinds of event, communication and association, with two
processes [arxiv:2204.01855 §3.2.4]. MTNE adds motif-based neighbourhoods
[arxiv:2204.01855 §3.2.4].

### Triad closure (DynamicTriad)

DynamicTriad models how open triads close over time. It adds a homophily term
and a temporal-smoothness term to its objective [arxiv:2204.01855 §3.2.5].

### Dynamic and spatio-temporal GNNs

Graph neural networks extended to time. Spatio-temporal models combine graph
convolution with recurrent or temporal-convolution layers. They are applied to
traffic, epidemic and sleep-stage forecasting [arxiv:2204.01855 §4.3]. Dynamic
GNNs for event streams include TGAT, which adds a learned time encoding to
graph attention, CAW-N, which scores links with causal anonymous walks, and
MTSN, which combines motif encoding with a temporal shift [arxiv:2204.01855
§4.4]. Streaming GNNs train on changes as they arrive [arxiv:2204.01855 §4.4]. The
general graph-learning survey lists spatial-temporal networks as one of its
deep-learning families [arxiv:2105.00696 §2.4.5].
The general GNN basics this rests on are in [arxiv:2204.01855 §4.1] and
[graph-neural-network](/concepts/graph-neural-network).

## When to use which

Pick by the form of the input and the output you need. The survey does not
measure any of these trade-offs, so the rows state what each family can and
cannot represent.

| Situation | Use | Why |
|---|---|---|
| Edges arrive as timestamped events | Temporal random walks or temporal point processes | They use the exact event times, not a per-step snapshot [arxiv:2204.01855 §3.2.2] [§3.2.4] |
| The graph is delivered as snapshots | Warm-started autoencoders or snapshot aggregation | The snapshot order is already the model's time axis [arxiv:2204.01855 §3.2.1] [§3.2.3] |
| Time order does not matter, only a static summary is needed | Aggregation over snapshots | It reduces the problem to a static embedding [arxiv:2204.01855 §3.2.1] |
| Nodes carry features and the model must be trained end to end | Dynamic GNNs | GNN layers take node features and the adjacency structure [arxiv:2204.01855 §4.1.1] [§4.4] |
| Forecasting a quantity on each node over time (traffic, epidemics) | Spatio-temporal GNNs | The survey names these applications [arxiv:2204.01855 §4.3] |
| Large graphs where neighbour expansion is costly | Check the scalability fixes for GNNs first | The survey lists sampling and pruning as fixes for neighbour explosion [arxiv:2204.01855 §4.6.3] |

## Implementation sketch

Two common patterns, both from the survey's taxonomy. The first is for timed
events, the second for snapshots. The survey does not give the sampling rule
for each walk method, so the choice step is marked open.

```pseudocode
# Temporal random walk over timed edges  [§3.2.2]
# Input:  edges_by_node[u] = list of (v, t) sorted by t; walk length L
# Output: a walk whose edge times never decrease

def temporal_walk(start, edges_by_node, L):
    # 1. Start at the node of interest with no time bound yet  [§3.2.2]
    walk, t_last = [start], -inf
    for _ in range(L - 1):
        # 2. Keep only edges not earlier than the last one used  [§3.2.2]
        options = [(v, t) for (v, t) in edges_by_node[walk[-1]]
                   if t >= t_last]
        if not options:
            break
        # 3. Choose the next edge; the rule differs per method  [§3.2.2]
        v, t_last = choose(options)
        walk.append(v)
    return walk
```

```pseudocode
# Warm-started embedding over snapshots  [§3.2.3]
# Input:  snapshots A_1..A_T (adjacency matrices); embedding dim d
# Output: one embedding matrix per snapshot

def embed_snapshots(snapshots, d):
    # 1. No model exists before the first snapshot  [§3.2.3]
    model, outputs = None, []
    for A_t in snapshots:
        # 2. Start from the previous snapshot's weights  [§3.2.3]
        model = fit_autoencoder(A_t, d, init=model)
        outputs.append(model.encode(A_t))
    return outputs
```

## Contradictions

The two surveys do not disagree on any method. Within the general
graph-learning survey, the open-issues section says dynamic graph learning has
rarely been studied, while its random-walk section reviews time-varying network
embedding. The card itself calls the wording loose [arxiv:2105.00696 §4] [§2.3.4].
Within the dynamic-graph survey, the notation for the HTNE base rate and
influence is unclear, and the factorization loss uses absolute rather than
squared differences [arxiv:2204.01855 §3.1.1] [§3.2.4]. Check the original
method papers before implementing either.

## Papers

- [A Survey on Graph Representation Learning Methods](/papers/2204.01855): taxonomy of static and dynamic graph embedding, traditional and GNN-based, with nine GNN limitations and their proposed fixes.
- [Graph Learning: A Survey](/papers/2105.00696): general map of graph learning in four families; touches time-varying embedding and spatial-temporal networks, with no experiments.
