views:

86

answers:

5

I am doing a Neural Network project as my final year undergraduate project. The idea of the project : A very simple robot with 2 motors, and two ir and bump sensors will traverse a environment with the use of a Neural Network which is in a computer. The main requirement is to observe possibly with a suitable GUI the learning process and the evolution process of the Neural Network. (The main objective is to observe the neural Network, and its changes not to drive the robot). The robot will communicate with the computer using Serial communication in the earlier stages of the project and then will using WLAN..

My question is which is the best language that can be used to implement the components in the Computer (Neural Network). The things that has to be considered are : Ease of implementation of neural network, Performance (Although the robot task seems simple, observing the neural network's evolution might involve bit of maths also changing the GUI), Ease of interfacing to the hardware (Serial and WLAN)

I have so far considered JAVA and C#.. I request your opinion too... Please give your feedback on the project and on the aspects of my considerations when choosing a language.(In other words.. what more should I look in to before taking a decision)

Thank you.

+8  A: 

(The main objective is to observe the neural Network, and its changes not to drive the robot).

A neural network is one of the types of learners that has a form not easily (if at all) understandable by humans. Visualizing the network and its weights will not really be interesting or all that beneficial. You'll be better of saving state of the neural network at various points during its training -- start, middle, and end, say -- and then demonstrating the behaviour of the robot with all three. Hopefully showing that, as training progressed, performance improved (by whatever objective metric you've chosen). You might want to show some graphs showing the "performance" rating of the robot after N intervals -- eventually you should reach an asymptote, or even start to see performance trail off, as over training becomes a liability. (At least, that's what I'd want to see if I were reviewing your project in an academic setting.)

My question is which is the best language that can be used to implement the components in the Computer (Neural Network

ANNs can be written in any language. Use the language you're most comfortable with, or at least whatever language is "compatible" with your current set up. (e.g. if you already have a robot talking to a Windows machine over a serial connection using C#, then why not use that existing setup as the basis for your project? You'd already be half-finished!). If that's Java or C#, then go for it. There's no reason you should need to learn a new language. In fact, I would recommend not learning a new language for your project. You'll much prefer to spend your time working on your interesting problem, than trying to figure out the dusty corners of some new language.

Shaggy Frog
+1  A: 

I'd agree with Shaggy that visual representaion of a network complex enough to drive a robot will likely not be an interesting sight.

Have you looked at similar existing projects? Some quick googling showed The Zero Dimension - an attempt to visualize some aspects of ANN learning in 3D. Here is their video demo. Probably there're more like this - they would probably give you some insights on what aspects you do and do not want to concetrate on.

Here is an article on ANN structure visualization (again, just the first one I stumbled upon). As you see, the visualization is not very insightful.

Speaking of the language - just choose the one you are most comfortable with. Or choose the one you would like to improve your experience with - if you have attitude and time to learn during this project.
One thing to keep in mind, though: ANN learning is a computationally intensive task, and achieving reasonable performance in "higher-level" languages like C# or Java will probably be harder than in "lower-level" ones like C++.

I'd also suggest you to consider using existing libraries to work with NN. I've used STATISTICA Neural Networks package (costs some money) a few years ago, there're also some open source libraries, I believe.
Implementing a good ANN learning algorithm correctly and efficiently is hard, so you may want to take an existing implementation and focus on GUI/visualization part.

VladV
A: 

I recomend using C# with the free neurondtonet neural network library. I think it will give you everything you need

Bass
A: 

Thanks a lot guys !!! I am experienced in JAVA but I am fairly new to C#. Problem with JAVA lies on performance, and the complexity and performance of connectivity to Serial Port. I have heard that C# is better in those two contexts than JAVA.. What do you say? Also my supervisor wants me to design the neural network from scratch, because we want to examine the evolution of the topology of it.. any comments to which language that will be easy to use???

A: 

Consider Matlab/Labview. The combination makes it very easy to visualize the operation of your program and to plot the internal states.

jholl