Bugverse
 

Bugverse

Recursive Modularity in Neural Networks

Figure 1. Screenshot from the original DOS program - plants are green, poison is red and bugs are yellow.

Screenshot from the original DOS program - plants are green, poison is red and bugs are yellow.

Bugverse is a two dimensional artificial universe, populated entirely by bugs, plants (food) and poison. Bugs move about in the world, gather food and avoid poison. Each bug is controlled by a neural network and over generational (evolutionary) time the bugs will evolve strategies to cope with their environment. In it's original incarnation as Bugworld, it was an DOS application running on a 64K DOS partition. The extensions contemplated in Bugverse have both scientific and technical motivations:

  • to scale up the size of the simulation significantly

  • port to a Unix-based implementation

  • introduce more biological realism in the model

Motivation

The motivation behind Bugworld is to test a hypothesis about evolution of brain complexity. The original bugworld model implemented each bug's neural network a "recursively modular" neural network within each "bug". The idea of recursively modular architectures is to allow for a hierarchy of levels, in which a group of neurones at one level becomes the basic building block at the next level. At the base of the network one has individual neurones, but these aggregate into higher level structures, the "scales" of the network. Stated simply, the hypothesis was:

  • does the global architecture (the highest level "scale") of the network (as the bugs neural networks evolve) tend to reproduce the architecture of the local neural circuit (lowest-level "scale"), referred to as reaching up;

  • or rather does it work in reverse, where the local circuit adopts the global architecture: reaching down.

Figure 2. Reaching up, reaching down

Reaching up, reaching down
  • A' => B. The original single-scale network is shown with black connections between neurons. The new scale of organisation (grey connections) is introduced as an elaboration of individual neurons into smaller scale circuits. The old circuit structure is retained as the overarching architecture of the new, two-scale, network. This is an example of reaching down.

  • A" => B. The original single-scale network is shown with grey connections between neurons. The new scale of organisation (black connections) is introduced as an overarching architecture. The old circuit structure is replicated to form the smaller scale circuits in the two-scale structure. This is an example of reaching up.

The original experiments tended to confirm the reaching up hypothesis (see the original paper from Complex Systems 96 held in Albury, New South Wales, Australia in June 1996). However the genetic coding strategy was rather simple, a deficit we hope to rectify in Bugverse.

The improved model

Specifically in Bugverse we hope to incorporate more biological realism in the following ways:

  • A developmental phase: in the original model, the connection scheme was encoded in the genome directly. In the new model we intend to allow the construction of the scales and connections in the neural network to be controlled by the time evolution of a Boolean network (which models the genetic regulatory system). At the time of writing, the exact interpretation of the time evolution in terms of neuronal connections was yet to be decided.

  • Sensorimotor: The connections from the neural network to the bug's sensorimotor inputs and outputs will also be specified by the Boolean network's time evolution. (previously this was hardcoded).

  • A neuro-ethological component: We hope to model sexual reproduction as being spatially-dependent (i.e. upon an encounter), previously, bugs selected for re-combination were made randomly from any place on the grid.

  • Better vision: The vision model used by each bug will be considerably more sophisticated (using a pin-hole camera model).

Implementation details

I previously coded up a Objective-C (an object-oriented extension of C, rather like C++, extended by NeXT and the GNU project) using the Swarm agent-based modelling system. Swarm can run on many different flavours of Unix, Linux and Windows NT platforms. [The implementation is a little old now (mainly done in 1996-97), but we hope to update it in the sometime future.]

To this end I implemented an entirely new Swarm autonomous NK-Boolean network library, boolnet, which has been very much in Beta status for some time now. If you are using Swarm, and need a Boolean network, please contact me.