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------