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