naria-dev-ml  

First version of the N.A.R.I.A. Library source code available

Olivier Reisch
Sun, 06 Oct 2002 04:40:26 -0700

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello all,

Yesterday was a great day for the project. I have finally been able to code a 
first working version of the N.A.R.I.A. Library.

I linked it to a test application that gives some graphical feedback (using 
SDL and SDL_gfx libraries) about the network.

A SDL window will pop up with 4 dots on it. The 2 upper dots are the input
neurons and the 2 lower dots are the output neurons. Each neurons is white
if not excited and red if excited. There's a total of 6 neurons in the 
network.

The test application will alternatively light one input neuron, then the
other. The network's task is to make the output neurons behave exactly like
the input neurons. The network will typically be able to do so after half a
minute or so, depending on your CPU speed.

The interesting part is probably the log file generated by the test app which 
includes the network state for each timestep. You will see that a trained 
network will have adapted the weights of each neuron in a way to directly 
link the input neurons to the output neurons.

Maybe a few words about the network itself.

It can be composed of as much neurons as you can hold in memory. Each neuron 
is linked to X other neurons (you can tell the network what X to use) and can 
be linked to by a high number of neurons.

A neuron will fire if its action potential is higher than half the number of 
neurons connected to it. Due to the weights of each synapse between neurons, 
there may be more neurons needed than those half to reach the AP. On the 
other side, it can also be triggered by a lower number of neurons if the 
weights are set high.

The weights are initially set to 1, but they decrease slowly with each 
timestep. The learning process is made by either increasing or decreasing 
(inverting) the normal decrease rate of all weights. Weights between 2 
neurons are increased if the first neuron participated to the triggering of 
the second one during a single timestep.

It's in fact a majority based system. Theoretically, if a majority of neurons 
connected to a single neuron say that it should be triggered, all those 
neurons that actually trigger the neuron are gratified by increasing their 
weights. This is an original way to create a working feedback routine that is 
NOT based on an error reduction algorithm, but on a simple good/bad 
algorithm.

To help the network tell what to do, a function allows to tell the network 
whether the network's output was correct or not.

To save CPU cycles, the whole network is processed using a double index of 
relevant neurons. This makes sure that unused neurons during a certain 
timestep do not get any CPU power. This allows for larger networks to be 
processed on slower CPUs.


As a final note, this is still a very early version of the Library and it does 
not include many of the features I've planned so far, such as multiple 
input/ouput groups, p2p based network connections between neural networks, 
and so on and so forth.

Also, there are still bugs in this release, such as incomplete log files, over 
gratification (the network will virtually explode after a certain time, 
because we never stop telling it that it does fine, once it has found the 
solution), etc, etc.

I just wanted to make sure that everyone has something to play with while I 
keep working on the project. That's why you can download the current C source 
code on our site at http://naria.karasuma.net  Make sure to read the INSTALL, 
README and LICENCE files before playing with the code or test app.

If you want to join the development effort, don't hesitate to contact me at 
[EMAIL PROTECTED]

Upcoming features on the site are: Mailing list archive and a bit later CVS 
access to the source code :)

Greetings,
Olivier Reisch

- -- 
________________________________________________
Olivier Reisch                      [EMAIL PROTECTED]
N.A.R.I.A. Project Leader
For safe mail, get my PGP Key:
http://perso.wanadoo.fr/olivier.reisch/oreisch_public_key.gpg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)

iD8DBQE9oCdMXrXcgVpifr0RAlm/AJsFjBrpU3FPAcKTh/sStvAKddDnywCfR8Qx
6Tjk0p8SwRA4WBkV9ZIzse0=
=bEVG
-----END PGP SIGNATURE-----

_________________________
N.A.R.I.A. Mailing List
http://naria.karasuma.net

To unsubscribe, go to http://naria.karasuma.net/ml.html
  • First version of the N.A.R.I.A. Library source code available Olivier Reisch