ANNDART stands for Artificial Neural Network Dot Art. It's a toy I created testing an artificial Brain framework. Notice I say "Brain" because I avoid saying it's a proper neural network. Proper ANNs are supposed to have learning and training capabilities and are more strictly defined mathematically. Mine doesn't have that because my intention is to use it with random mutations in genetic algorithms with natural-artificial selection.
How it works
The user can click any of the four grids to generate new offspring with some mutations replacing the other three grids.
The structure of the neural net is based on layers:
- Input layer, with two input neurons: X, Y (from -5.5 to 5.5) Notice each grid is made of 10 dots centered.
- 2 Inner layers with 2 neurons each (arbitrary decision by me. Can be easily changed in code)
- Output layer, with three output neurons: R, G, B values for the colours (clamped from 0 to 255)
The transfer functions can be:
- sum: Send the sum of all the weighted inputs as it is.
- step: Send a 1 if the internal value is equal/higher than an internal constant (mutable) and 0 if lower. This is the kind of transfer function you find on a perceptron neural net.
- sigma: Applies the sigma function to the internal value.
- linear: Applies a linear function (y=ax+b) to the internal value using two (mutable) constants.
- quadratic: Applies a quadratic function (y=ax^2+bx) using only two (mutable) constants.
- average: Divide the internal value by the number of inputs, which is the average weighted input value.
- accumulator: Accumulates the internal value over cycles. When a threshold (mutable) is reached the whole value is sent and reset. This is what causes the blinking in some of the dots. This behaviour slightly resembles biological neurons which only trigger after a specific electric differential has build up inside.
When offspring is created the new copies are mutated. Mutation can introduce random changes in the weights of the connections, the transfer function used and the two internal constants used by the transfer function. The structure of the net is not mutated in ANNDART although it could be implemented.
Enough talking! Download the standalone and generate some cool art. If you tweet or share cool images give me a shout at @alejocamaleon
For windows only right now.
Ask in comments for other builds.
In this case the mutations are introduced by a predesigned reproduction behaviour.
What would you build using a system like this?