Collaborative Echo State Networks is a framework for predicting chaotic dynamical systems using distributed Echo State Networks (ESNs). Each ESN receives only partial (local) information about the system and collaborates with others to reconstruct the full system's behavior. The architecture supports different modes of interaction and collaboration between ESNs, with both teacher forcing (during training) and generative inference (during prediction).
The goal is to forecast the evolution of chaotic attractors by modeling them through multiple interconnected ESNs, each observing only a subset of the full state space.
Given a dynamical system:
$\mathbf{x}(t) = [x_0(t), x_1(t), ..., x_{N-1}(t)]$ - The ESNs aim to predict
$\mathbf{x}(t+1)$ from partial information about$\mathbf{x}(t)$
Each ESN follows a standard Echo State Network structure:
Training (Teacher Forcing):
Inference (Generative Mode):
One ESN takes all dimensions
Each ESN
Like Chain, but one dimension is removed (e.g.,
Extension of Cross: all reservoirs also receive
Each reservoir
Similar to Mean, but applies a weighted average based on training NRMSE:
Each ESN's contribution to each dimension is proportional to its accuracy during training.
- Lorenz Attractor
- Rössler Attractor
- Lorenz-96 System with customizable dimensions
python3 main.py --system={system} --config_file=path/to/config.jsonValid options for system are: lorenz, rossler, lorenz96.
(e.g. python3 main.py --system=lorenz --config_file=configs/monolithic_config.json)
main.py: Main entrypointesn_alternative.py: ESN implementationutils.py: Utility functions{system}/: Contains info on the dynamical system, where system can be lorenz, rossler or lorenz96configs/: Contains configuration files in JSON formatdata/:{system}_generator.py: File to generate the dataset in .csv extension{system}_dataset.csv: Csv file containing the dataset
results/: Contains results and logs
Gallicchio, C., Micheli, A., Pedrelli, L.: Deep reservoir computing: A critical experimental analysis. Neurocomputing268, 87–99 (2017). https://doi.org/10.1016/j.neucom.2016.12.08924.
Developed by Matthew Bernardi as a Computer Science Bachelor's degree thesis @ University of Pisa, 2025.