lun apr 19 23:51:50 CEST 2010
Neural++ v.0.4 has been released
--
Just released the version 0.4 of Neural++, the C++ library for
managing neural networks. A lot of changes and enhancements have
been made, even if the end user won't probably experience much
new in the API interface he uses for the library. But most of the
code has been completely rewritten. Now everything is clearer,
the documentation is very very rich, and a lot of bugs have been
fixed. Among them, a serious bug that made the network's output
diverge sometimes in the training phase. This was due to no mech-
anism to avoid strong oscillations in the output values at the
beginning of the training, a very poor code for the back-propaga-
tion algorithm, and nothing to stop the machine when a synaptical
weight assumes a value greater then 1. Now everything has been
fixed, a mechanism for controlling the back-propagation algorithm
at the beginning of the training phase has been made (through a
mechanism of inertial momentum, that initially keeps the output
values quite stable, and is decreased when the network gets
trained). Moreover, the back-propagation algorithm has been com-
pletely rewritten to make this case even rarer. And, when it re-
ally happens, the library sees it stops everything by launching
an InvalidSynapsisWeightException. Actually there's no way to
completely avoiding the diverging of the output values, as the
network is initialized with random values, and an odd combination
of input values could make linear combinations that generate odd
output values, that in turn generate synaptical deltas that make
weights > 1. The randomness of the network makes these eventuali-
ty always possible, but we have now the mechanisms to make them
less probable. Actually there's already a case on 10 to get an
unstable and diverging network in the training phase.
Another huge fix has been made about the management of multiple
output values. Earlier it was in TODO list, now it's been finally
implemented. So, you can use, for example, the same network to
compute the sum, difference and product between two numbers, with
3 neurons in the output layer, one for each operation. Anyway
this approach is quite deprecated, as it's quite hard to get a
combination of synaptical weights that offers satisfying output
results for every desired output value.
A very important fix has been made about multiple training sets
too. It was a very serious bug that made possible the training of
the network from a single training set per time, and made the
generated network poorly flexible. Now everything works fine.
And, last but not least fix, a fix to manage arbitrary user-de-
fined activation functions (now really working fine). By the way,
now you don't have to specify both your activation function and
its derivative any more, as its derivative is cleanly computed by
the library itself.
Last enhancement, the network now supports a threshold value. The
threshold is an activation value for each neuron, below which the
neuron is "off".
Direct download link: http://0x00.ath.cx/prog/neuralpp/neuralpp-
current.tar.bz2
GitHub download (suggested): git clone git://github.com/Black-
Light/neuralpp.git
Official documentation: http://0x00.ath.cx/prog/neuralpp/doc/in-
dex.html
Examples: http://0x00.ath.cx/prog/neuralpp/examples/
--
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GAT d? a? C++++ U++++ P++++ L+++++ E--- W+++ !w PS+++ PE-- Y++ PGP++ X++
R+ tv-- b+>+++ DI++ G++ e+++ h* r++ z**
------END GEEK CODE BLOCK------