MENU

TUTORIALS

Self-Organizing Systems with Machine Learning

organized by Bert Chan & Alexander Mordvintsev

In this tutorial, we are going to demonstrate how we can use machine learning as a practical tool to design self-organizing systems, train emergent patterns to perform desired tasks or achieve predefined goals. These systems are composed of large numbers of locally interacting “microscopic” agents (e.g. grid cells, particles), they work together towards a shared common goal (e.g. matching a target pattern, or surviving in a virtual environment), and form dynamical “macroscopic” patterns that are believed to be performing morphological computation. Such systems are often described as demonstrating self-organization of collective intelligence.

We are going to put emphasis on cases of hierarchical organization of virtual matter, when higher-level structures demonstrate the characteristics of agent-like behavior. Examples include: Neural Cellular Automata (NCA), where self-organizing patterns can be trained using gradient descent and back-propagation-through-time to reproduce a texture or auto-classify symbols, with capabilities of spontaneous regeneration and noise resistance; complex adaptive systems called Lenia, where agent-like localized patterns (or “virtual creatures”) are trained for agent-agent and agent-environment interactions inside a virtual environment; Flow Lenia, where mass conservation law is incorporated into Lenia such that energy constraints and species-species interactions become feasible; and Particle Lenia, where the concept of energy minimization is introduced in Lenia applied to a particle system.

How to build Research Software: Python

organized by Penn Faulkner Rainford

Research runs in cycles. Those can be of PhDs or Grants but eventually blocks of research come to an end. When they do there are many things we can consider outputs. As well as papers, qualifications and outreach we have software. While software is listed as an output it is more often an abandonment. Code is often not reused and rarely maintained. This is because the code, written for a purpose and normally by a single author, isn’t usable by others. It can be hard to port to a different computer or operating system. It can be hard to tell how to use functions or algorithms. It can even be incorrect.

These problems are challenging to correct after authors leave projects. Much easier is the creation of reusable code in the first place. Code with clear definitions and descriptions, stored accessibly and tested for distribution and use. This is achievable. There are many tools and methods to assist development to these goals. By improving our software output we make the next cycle easier as software can be reused rather than re-implemented.

In the tutorial we will look at general methods for structuring, documenting, storing and testing code. We will introduce general and python specific tools for supporting developers.

Methods: Versioning and Version Control, Documenting in Code and Test driven development.

General Tools: Git, GitHub and Sphinx.

Python tools: IDEs, unittest and Poetry.

We will work through examples, but attendees are encouraged to bring their own projects to work on. The final part of the session (20-30 minutes) will be put aside for questions and to help people with their own code.

Writing research software well: best practices around software sustainability, collaborative work, and open- and reproducible science

organized by Nadine Spychala

TBA

Website

TBA

Untangling Cognition: How Information Theory can demystify brains

organized by Clifford Bohm

Information Theory (IT) defines mathematical methods to analyze similarities and dissimilarities within data. A number of researchers have developed techniques using IT to study cognition. With IT, we can measure: what an agent knows about its environment (Representation), where information is stored (Fragmentation), how distributed it is (Smearedness), how information flows through an agent (Data Flow and Transfer Entropy), and the complexity of an agent (PHI). Using these methods can help explain behavior or otherwise intractable structures.

This tutorial will provide an introduction to IT and cover ways that IT can be used to understand simple cognitive structures (ANNs, GRNs, Markov Brains, and other “digital brains”); whether evolved or trained. The tutorial will focus on discrete entropy (although continuous entropy will be introduced). The tutorial is designed to develop concepts and intuitions, so, while some mathematical details will be necessary, they will be avoided whenever possible. After this tutorial, attendees should have a sense of what can and cannot be asked with IT, and how they may employ IT in their own research.

This tutorial is primarily designed for individuals who work with some form of artificial cognition (i.e., digital brains, Gene Regulatory Networks, artificial/spiking networks) and are interested in analyzing the behavior of these systems, but should also serve as a broad introduction to IT for those with other interests.

Website

TBA

Phylogenies: how and why to track them in artificial life

organized by Emily Dolson, Matthew Andres Moreno, and Alexander Lalejini

TBA

Website

TBA

The OpenMOLE platform for model exploration and validation

organized by Juste Raimbault, Romain Reuillon, and Mathieu Leclaire

TBA

Website

TBA

Cellular Automata, Self-Reproduction & Complexity

organized by Prof. Chrystopher L. Nehaniv (University of Waterloo, Canada)

Cellular automata (CAs) are a widely applied model of massively parallel computation based on local neighborhoods and updates introduced by John von Neumann and Stanislaw Ulam. The tutorial introduces the concept of cellular automata and examples, and overviews basic results, such as for the Game of Life (which is computationally universal and shows emergent properties), and variations of the cellular automata concept, including random boolean networks, synchronous and asynchronous automata networks, and discrete dynamical systems with external inputs. Von Neumann, one of the grandfathers of Artificial Life, also used CAs as a formal tool to study the logic of life and complexity: in particular, How is self-reproduction possible?, or How is it possible for a mechanistic system to reproduce itself? How is it possible for something to produce something as complex or more complex than itself? Prior to the discovery of the structure of DNA and its relation to these questions, von Neumann gave several different solutions. It turns out that some correspond to life as we now know, and others perhaps to life as it could be. We survey his solutions to these problems, and discuss progress on these questions since then on self-reproducing systems. Also, we survey open problems for Artificial Life research that go beyond the state-of-the-art in the synthesis of self-reproducing systems, and offer challenges for researchers entering the field including those related to the concepts of individuality, robustness, evolution and self-production (autopoiesis).

Website

TBA

Evolving Robot Bodies and Brains in Unity

organized by Frank Veenstra, Emma Stensby Norstein, and Kyrre Glette

TBA

Website

TBA

(TBA)

organized by Antoine Pasquali

TBA

Website

TBA