Tuesday, 14 October 2008

Neural Network Components

Okay, so I've had a quick look available artificial life simulators and now it is time to look at neural network simulators. Genetic algorithm components are not really necessary because I intend to use interaction with a dynamic challenging environment to provide evolutionary pressure instead of an abstract mathematical function. Artificial life simulators are useful because they often combine evolutionary algorithms or systems along with an artificial world. However, AL simulators often do no have a robust neural network component. I may be wrong but I it is worth looking at what neural network components are available. To this, I turn to Wikipedia, the font of all knowledge.

There are two NN software categories: simulators and development environments. Simulators are often stand alone and are not intended to produce neural networks that can be integrated into other software. Development environments allow the development of custom networks and support network deployment outside of the development environment.

There are two simulator categories: research and data analysis. Research simulators have a high level of customisation and functionality. Data analysis simulators are intended for practical applications and focus on data mining and forecasting. Some can work with environments such as Excel and MATLAB.

Research simulators include: Stuttgart Neural Network Simulator, Emergent, JavaNNS and Neural Lab.

Stuttgart Neural Network Simulator

The Stuttgart Neural Network Simulator (SNNS) looks powerful but it looks like it is difficult to deploy separably with a world simulator.

Emergent

Emergent looks like powerful. It can do robotics simulators with rigid body physics using the Open Dynamics Engine. Emergent has potential because it has a world simulator but the world simulator looks difficult to extend. For example, I want to have a large number of agents with neural networks roaming, communicating and living in the world.

JavaNNS is the successor to the SNNS but it is not as popular as SNNS.

NeuralLab

Neural Lab looks simple yet powerful. It is not useful because it cannot deploy neural networks separately and does not have a world simulator.

There are two development environment categories: conventional and component based. Conventional environments allow development of custom networks and support network deployment outside of the development environment. This is one of the major things that I need. Component based environments are similar to conventional environments with the difference that it allows packaging of NN into components that can then be used with component based frameworks such as .NET and Java.

Conventional development environments include: Wolfram Research Neural Network package for Mathematica, AMORE and neural packages of the R programming language, MathWorks Neural Network Toolbox for MATLAB, GBLearn2 library of the Lush programming language and Neural Lab.

Wolfram_Research_Neural_Network_package

Wolfram Research Neural Network package for Mathematica looks powerful but I prefer not to use it because it is not open source and I am not familiar with Mathematica. As a side note, Wolfram Research reminds me of Wolfram and Hart from one of my favourite TV shows, Angel.

AMORE and neural packages of the R programming language is something I prefer not to use because I prefer not to explore a new programming language at this point in time.

MathWorks_Neural_Network_Toolbox

MathWorks Neural Network Toolbox for MATLAB looks powerful but I prefer not to use it because it is not open source and I did not feel comfortable with it.

GBLearn2 library of the Lush programming language is something I prefer not to use because I prefer not to explore a new programming language at this point in time

NeuralLab

Neural Lab looks like it falls in both the simulator and development environment categories. That might mean that it is capable of deploying neural networks separately. I am hesitant to use it because it does not seem widely used and it seems to have little documentation.

Component development development environments include: Peltarion Synapse, NeuroDimension NeuroSolutions and Scientific Software Neuro Laboratory.

Synapse

Peltarion Synapse looks powerful but it is not open source and and it is not free.

Neural_Solutions

NeuroDimension NeuroSolutions looks powerful but it is not open source and and it is not free.

Neural_Laboratory


Scientific Software Neuro Laboratory
looks powerful but it is not open source and and it is not free.

The Emergent website also has a useful comparison of neural network software. The only packages with virtual environments are Emergent and Catacomb2.

Catacomb2

Catacomb2 looks interesting but I have a hunch that it will not be useful because while it does have a virtual environment, the environment is too simple and the simulation is at a cellular level.

FANN

FANN was listed on an earliar version of Wikipedia's page on neural network software but seems to have disappeared since. I like FANN because it seems to allow separate deployment, it is fast, it is small, it is portable, it is written in C, a language that I am familiar with, it is popular, it is well supported and it has a good amount of documentation.

My shortlist includes: Emergent and FANN. As a last resort I might use MathWorks Neural Network Toolbox because my supervisor has experience with it and it does have some stand alone deployment capability.

No comments:

Post a Comment