R. has posted 11 posts at DZone. View Full User Profile

Neuroph: Smart Java Apps with Neural Networks (Part 1)

08.18.2009
| 37193 views |
  • submit to reddit

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. We talk about what neural networks look like, how they do their magic, and why the NetBeans IDE was the natural choice for the Neuroph development team. In part two of the interview, we have a closer look at use cases of neural networks—and what they can do for Java developers like me and you.

Hi Zoran, please introduce yourself and your team!

My name is Zoran Sevarac, and I am a research assistant at the Laboratory for Artificial Intelligence at the University of Belgrade. My main research interests are neural networks, fuzzy logic, genetic algorithms and hybrid systems.

I'm particularly interested in applied artificial intelligence, which means that I like to make stuff and see how it works for real-world problems. It does not always have to be something serious and useful, sometimes it is interesting just to see how something works.

At the moment I'm working on Neuroph, the open source neural network framework, together with people like Ivan Goloskokovic and Jon Tait. Ivan talked me into putting the neural network framework I created on Source Forge, and that's how the project started. Jon was the first who successfully used the framework for a real-world application. After that he joined the project and helped us improve the framework in many ways.

What does Neuroph do?

Neuroph is a general Java neural network framework—It provides an easy way to use neural networks in Java programs thanks to its Java class library with an easy-to-use neural network API. It also comes with a GUI editor (called easyNeurons) for creating and training neural networks.

What are neural networks?

We can say that neural networks can learn to map input onto output data. Neural networks are computational models inspired by the principles of how the human brain works. They can learn from data, they are able to generalize well, and they are noise resistant.

Typically neural networks are used for problems like classification, prediction, pattern recognition, approximation, and association. They just need some sample data to learn from, and after they have learned, they can work with unknown input data, or even noisy or incomplete input data.

What does a neural network look like?

Every neural network consists of interconnected basic processing units called Neurons. The network learns by modifying connection weights between neurons during the training process. The picture below shows a simple neural network created with easyNeurons. This type of network is called Multi Layer Perceptron and it is one of the most commonly used networks.

Multi Layer Perceptron neural network

If you are curious, you can create and train this network with our online demo application!

Who uses neural networks?

Some typical applications are image, fingerprint and face recognition, stock prediction, sport bets prediction, pattern classification and recognition, monitoring and control. They are used in industry, medicine (diagnostics), military applications (like radar image recognition), finance and robotics. Lately they are popular in games industry, because thanks to their learning mechanisms they can provide adaptive control and learning for computer controlled characters!

An interesting project to mention is Neuro-Evolving Robotic Operatives (NEROgame) where you evolve your own robotic army by tuning artificial brains for challenging tasks, and then put them to fight against another team!

Another interesting example is the driving simulation Colin McRae Rally 2.0 which uses neural networks to train computer controlled drivers.

usecases

What kind of input/output format can a neural network handle?

Neural networks handle numeric data as input, and they also output numeric data. So it can handle any kind of input as long as it is transformed to appropriate numerical form. Also you must provide a suitable way to interpret the network output.

It's just a question of transforming the real world values to a numeric form used by the neural network – multi-dimensional vectors with values in [0, 1] or [-1, 1].

Is it difficult to train a network?

To train the neural network you need to provide the data that network should learn: A training set of inputs and desired outputs. During the learning procedure the connection weights are adjusted every time the network doesn't show the desired behaviour. All neural network components and learning rules in Neuroph are already implemented and ready to use.

Furthermore you have a GUI tool that allows you to experiment with various network architectures and learning parameters. There is no general answer to this because the settings are problem dependent. In the future we plan to automate this process in Neuroph.

Why did you choose NetBeans IDE?

I like the Swing support very much, it makes it really easy to make GUIs for desktop applications, and it was the easiest way to migrate old code we had. Also I like the fact that after downloading and installing NetBeans you have everything you need to make full featured GUI applications, including version control support. No additional actions are required, like endless searching and installing plugins for plugins, and resolving compatibility issues. We are considering to migrate the whole GUI part to the NetBeans Platform when our feature set stabilizes.

screenshot

Anything you would improve?

I would like better support for custom project types and NetBeans Platform applications, since I got stuck with that when I tried to use it. It appeared to me that it takes some time to learn it well, and it requires experience to use it efficiently.

What are your plans for the future?

I saw the NetBeans Platform tutorials and they are great, just what I was looking for. Some future version of GUI for Neuroph will definitely be based on the NetBeans Platform. In the future we'd like to organize NetBeans Platform training classes at my University, and I guess that could help you to promote NetBeans in the academic community.

Continue Reading: In part two of the interview, we have a closer look at use cases of neural networks—and what they can do for you.

Related Links

Published at DZone with permission of its author, R. Kusterer.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Alexandre Verri replied on Fri, 2009/08/28 - 12:26pm

Congratulations to Zoran Sevarac and team members for the excellent project. I would like to see some examples about image recognition.

 Regards,

A. Verri

SharkTime Software replied on Thu, 2009/10/22 - 12:29pm

Great project. I'm waiting for more apps using Neuroph.
You may be interested in my free Neural Network app, see

Sharky Neural Network
http://www.sharktime.com/us_SharkyNeuralNetwork.html

Unfortunately SNN doesn't use Neuroph

SharkTime Software replied on Thu, 2009/10/22 - 12:40pm

Enjoy movie about solving Two Spirals Problem with Neural Network:

http://www.youtube.com/watch?v=p_kckXJUxxg

It would be great if Neuroph would has verifiable demos with similar problems.

Zoran Sevarac replied on Mon, 2009/10/26 - 5:01pm in response to: SharkTime Software

Hi, nice app!

If its written in Java you can try to add MultiLayerPerceptron with MomentumBackpropagation from Neuroph easily. Maybe we'll make some similiar examples like these in future.

Charles Bedon replied on Thu, 2010/05/27 - 9:13am

Nice project. I've been searching for a replacement to the good old SNNS (and its sucessor JNNS) for a while. Thanks for sharing this information!

Vishal Tehlan replied on Tue, 2011/01/25 - 6:28pm

I am doing research on human perception & rendering. in that i have to prepare Neural Net training set taking some features our eye can detect and draw an image on the screen. I have to find some anomalies in the eye using NN training set. Can u help me?

Mateo Gomez replied on Tue, 2012/06/19 - 2:47am in response to: Ivan Goloskokovic

these samples are awesome!!Congratulations to ya'll corn salsa recipe

Matt Coleman replied on Tue, 2012/07/31 - 1:44am

Smart Java Apps simply rocks...this is great!

web designer buffalo

Cata Nic replied on Mon, 2013/09/02 - 5:13pm

How was the networks chart generated? Can I use the Excel solution for that, via the NetBean solution?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.