[ home ] currently complexity Bugverse c.v. code cribbings cd player compendium coda camera co-ordinates
|
|
Bugverse
Recursive Modularity in Neural NetworksBugverse 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
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.
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. 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).
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.
|