Neuroph: Smart Java Apps with Neural Networks (Part 2)
Neural networks can learn to map input onto output data, and are used for tasks like automated classification, prediction, and artificially intelligent game characters. The NetBeans team interviewed Zoran Sevarac, who is working on Neuroph, the open-source neural network framework. Part one of the interview explains what neural networks are and why the NetBeans IDE was the natural choice for the Neuroph development team. This is part two of the interview where we have a closer look at use cases of neural networks—and what they can do for you!
What is this game image recognition tool that we heard about on Slashdot?
The game image recognition program is called DotA AutoScript. DotA AutoScript uses the Neuroph framework to interpret images on the screen to maintain a real-time model of the game state while playing Defense of the Ancients (DotA). The player is provided with various hints and shortcut macros on-the-fly, depending on what situations he finds himself in.
Such an image recognition network built with the Neuroph framework can be similarly applied to many kinds of image classification problems, such as optical character recognition (OCR), or building webcam security software. The Neuroph framework is not limited to games, but they make a fun showcase of the technology.
Neuroph includes many tools for building image classification networks in the newest distribution. The image recognition plugin for Neuroph was originally built for DotA AutoScript by Jon Tait and has since been integrated to the Neuroph project.
And how can I, Mr. Joe Java Developer, benefit from neural networks?
If you need non-linear classification, prediction, recognition, learning from experience, or adaptive control, then a neural network could be right for you. For many applications, the Multi Layer Perceptron can do the job, you just need to experiment a bit and figure out the right architecture.
The Neuroph framework provides an easy-to-use tool and API which can be customized for specific needs. The Getting Started tutorial shows you how to create a basic neural network with easyNeurons, and how you can save it as a Java component and use it in your programs.
It is also very likely that we'll create a neural network plugin for the NetBeans IDE in the future. The idea is to have a Neural Network Components palette that lets you drag'n'drop neural networks into your Java application—for example if you need a neural classifier or image recognition. Recently I saw that somebody already started making a neural network plugin for NetBeans, the Neurox plugin, so we may join our efforts in the future.
How does the Neuroph user interface assist me?
The Neuroph user interface guides you through the training process with a set of dialogs.
1. Use the Networks menu to create a neural network with layers of Neurons
2. Use the Training menu to create a training set containing the data the network should learn.
3. To train the network, select the training set from the list
You can use default settings, and just click the Train button.
When the difference between actual network output and desired output falls under a certain threshold, the learning is complete.
4. Test the network by giving it an input value and seeing what output value you will get.
How do I get started with Neuroph? Is it free?
Yes it's free, and under the LGPL licence, which means that it can also be used in commercial projects.
To get started with Neuroph download the distribution: It contains complete sources, binaries, javadoc, class diagram and a Getting Started tutorial. In July 2009, we have just released version 2.2 of the Neuroph framework. Look at the help system for some basic examples, and follow the provided link to learn more about neural networks.
At the current stage of development the Neuroph framework is primarily intended for beginners in neural networks, but it is also ready for real applications. Neuroph is already being used in teaching neural networks at our University, and in our experience absolute beginners in this area had no issues in using it. Solid Java knowledge is a prerequisite.
Zoran, thank you for this interview.