Introduction to Neural Cellular Automata
=========================================
Neural Cellular Automata (NCA) are a new type of neural network models that merge the concepts
of Cellular Automata and Artificial Neural Networks.
These models operate on a cellular grid or graph, where each cell interacts with its neighbors
according to a learned transition function over multiple time steps.
This allows NCAs to evolve and adapt their states based on local interactions,
leading to emergent behaviors that can be both interesting to study and useful in practical applications,
such as medical imaging.
In NCAs, the transition function is typically parameterized by a neural network, which learns to update
the state of each cell based on its current state and the states of its neighbors.
This learning process allows NCAs to discover patterns and behaviors that may not be easily defined by
traditional rule-based systems.
The evolution of the cellular grid occurs over discrete time steps, where each update can lead to
changes in the overall configuration.
The concept of Neural Cellular Automata was first introduced in 2020 by Mordvintsev et al. in their
online publication titled `Growing Neural Cellular Automata `__,
which features an online demo of a Lizard emoji that emerges from a single black pixel, illustrating
the nature of NCAs to generate complex structures from minimal initial conditions.
Since their introduction, NCAs have garnered significant interest in the research community.
A curated collection of recent advancements and resources related to Neural Cellular Automata
can be found in our `Awesome List `__.
This list includes papers, code repositories, and applications that highlight the versatility
and potential of NCAs in various fields, including computer graphics, biology, and medical imaging.
NCALab aims to facilitate and unify the desgin, training and inference with NCAs.
The following chapters of this documentation will explain the inner workings of NCALab and
provide practical guidelines for adding new models, tweaking parameters and troubleshooting errors.