What are some good resources for learning about Artificial Neural Networks?

Neural Network

Neural Network Problem Overview


I'm really interested in Artificial Neural Networks, but I'm looking for a place to start.

What resources are out there and what is a good starting project?

Neural Network Solutions


Solution 1 - Neural Network

First of all, give up any notions that artificial neural networks have anything to do with the brain but for a passing similarity to networks of biological neurons. Learning biology won't help you effectively apply neural networks; learning linear algebra, calculus, and probability theory will. You should at the very least make yourself familiar with the idea of basic differentiation of functions, the chain rule, partial derivatives (the gradient, the Jacobian and the Hessian), and understanding matrix multiplication and diagonalization.

Really what you are doing when you train a network is optimizing a large, multidimensional function (minimizing your error measure with respect to each of the weights in the network), and so an investigation of techniques for nonlinear numerical optimization may prove instructive. This is a widely studied problem with a large base of literature outside of neural networks, and there are plenty of lecture notes in numerical optimization available on the web. To start, most people use simple gradient descent, but this can be much slower and less effective than more nuanced methods like

Once you've got the basic ideas down you can start to experiment with different "squashing" functions in your hidden layer, adding various kinds of regularization, and various tweaks to make learning go faster. See this paper for a comprehensive list of "best practices".

One of the best books on the subject is Chris Bishop's Neural Networks for Pattern Recognition. It's fairly old by this stage but is still an excellent resource, and you can often find used copies online for about $30. The neural network chapter in his newer book, Pattern Recognition and Machine Learning, is also quite comprehensive. For a particularly good implementation-centric tutorial, see this one on CodeProject.com which implements a clever sort of network called a convolutional network, which constrains connectivity in such a way as to make it very good at learning to classify visual patterns.

Support vector machines and other kernel methods have become quite popular because you can apply them without knowing what the hell you're doing and often get acceptable results. Neural networks, on the other hand, are huge optimization problems which require careful tuning, although they're still preferable for lots of problems, particularly large scale problems in domains like computer vision.

Solution 2 - Neural Network

I'd highly recommend this excellent series by Anoop Madhusudanan on Code Project.

He takes you through the fundamentals to understanding how they work in an easy to understand way and shows you how to use his brainnet library to create your own.

Solution 3 - Neural Network

Here are some example of Neural Net programming. http://www.codeproject.com/KB/recipes/neural_dot_net.aspx

you can start reading here: http://web.archive.org/web/20071025010456/http://www.geocities.com/CapeCanaveral/Lab/3765/neural.html

I for my part have visited a course about it and worked through some literature.

Solution 4 - Neural Network

Neural Networks are kind of declasse these days. Support vector machines and kernel methods are better for more classes of problems then backpropagation. Neural networks and genetic algorithms capture the imagination of people who don't know much about modern machine learning but they are not state of the art.

If you want to learn more about AI and machine learning, I recommend reading Peter Norvig's Artificial Intelligence: A Modern Approach. It's a broad survey of AI and lots of modern technology. It goes over the history and older techniques too, and will give you a more complete grounding in the basics of AI and machine Learning.

Neural networks are pretty easy, though. Especially if you use a genetic algorithm to determine the weights, rather then proper backpropagation.

Solution 5 - Neural Network

I second dwf's recommendation of Neural Networks for Pattern Recognition by Chris Bishop. Although, it's perhaps not a starter text. Norvig or an online tutorial (with code in Matlab!) would probably be a gentler introduction.

A good starter project would be OCR (Optical Character Recognition). You can scan in pages of text and feed each character through the network in order to perform classification. (You would have to train the network first of course!).

Solution 6 - Neural Network

Raul Rojas' book is a a very good start (it's also free). Also, Haykin's book 3rd edition, although of large volume, is very well explained.

Solution 7 - Neural Network

I can recommend where not to start. I bought An Introduction to Neural Networks by Kevin Gurney which has good reviews on Amazon and claims to be a "highly accessible introduction to one of the most important topics in cognitive and computer science". Personally, I would not recommend this book as a start. I can comprehend only about 10% of it, but maybe it's just me (English is not my native language). I'm going to look into other options from this thread.

Solution 8 - Neural Network

http://www.ai-junkie.com/ann/evolved/nnt1.html is a clear introduction to multi-layers perceptron, although it does not describe the backpropagation algorithm

you can also have a look at generation5.org which provides a lot of articles about AI in general and has some great texts about neural network

Solution 9 - Neural Network

If you don't mind spending money, The Handbook of Brain Theory and Neural Networks is very good. It contains 287 articles covering research in many disciplines. It starts with an introduction and theory and then highlights paths through the articles to best cover your interests.

As for a first project, Kohonen maps are interesting for categorization: find hidden relationships in your music collection, build a smart robot, or solve the Netflix prize.

Solution 10 - Neural Network

I think a good starting point would always be Wikipedia. There you'll find some usefull links to documentations and projects which use neural nets, too.

Solution 11 - Neural Network

Two books that where used during my study:

Introductional course: An introduction to Neural Computing by Igor Aleksander and Helen Morton.

Advanced course: Neurocomputing by Robert Hecht-Nielsen

Solution 12 - Neural Network

I found Fausett's Fundamentals of Neural Networks a straightforward and easy-to-get-into introductory textbook.

Solution 13 - Neural Network

I found the textbook "Computational Intelligence" to be incredibly helpful.

Solution 14 - Neural Network

http://oreilly.com/catalog/9780596529321">Programming Collective Intelligence discusses this in the context of Search and Ranking algorithms. Also, in the code available http://kiwitobes.com/PCI_Code.zip">here</a> (in ch.4), the concepts discussed in the book are illustrated in a Python example.

Solution 15 - Neural Network

I agree with the other people who said that studying biology is not a good starting point... because theres a lot of irrelevant info in biology. You do not need to understand how a neuron works to recreate its functionality - you only need to simulate its actions. I recomend "How To Create A Mind" by Ray Kurzweil - it goes into the aspect of biology that is relevant for computational models, (creating a simualted neuron by combining several inputs and firing once a threshhold is reached) but ignores the irrelvant stuff like how the neuron actually adds thouse inputs togeather. (You will just use + and an inequality to compare to a threshold, for example)

I should also point out that the book isn't really about 'creating a mind' - it only focuses on heirarchical pattern recognition / the neocortex. The general theme has been talked about since the 1980s I beleive, so there are plenty of older books that probably contain slightly dated forms of the same information. I have read older documents stating that the vision system, for example, is a multi layered pattern recognizer. He contends that this applies to the entire neocortex. Also, take his 'predictions' with a grain of salt - his hardware estimates are probably pretty accurate, but i think he underestimates how complicated simple tasks can be (ex: driving a car). Granted, he has seen a lot of progress (and been part of some of it) but i still think he is over optimistic. There is a big difference between an AI car being able to drive a mile successfully 90% of the time, when compared to the 99.9+% that a human can do. I don't expect any AI to be truly out driving me for atleast 20 years... (I don't count BMWs track cars that need to be 'trained' on the actual course, as they aren't really playing the same game)

If you already have a basic idea of what AI is and how it can be modeled, you may be better off skipping to something more technical.

Solution 16 - Neural Network

If you want to do quickly learn about applications of some neural network concepts on a real simulator, there is a great online book (now wiki) called 'Computational Cognitive Neuroscience' at http://grey.colorado.edu/CompCogNeuro/index.php/CCNBook/Main

The book is used at schools as a textbook, and takes you through lots of different brain areas, from individual neurons all the way to higher-order executive functioning.

In addition, each section is augmented with homework 'projects' that are already down for you. Just download, follow the steps, and simulate everything that the chapter talked about. The software they use, Emergent, is a little finnicky but incredibly robust: its the product of more than 10 years of work I believe.

I went through it in an undergrad class this past semester, and it was great. Walks you through everything step by step

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestioncbrulakView Question on Stackoverflow
Solution 1 - Neural NetworkdwfView Answer on Stackoverflow
Solution 2 - Neural NetworkCodeAndCatsView Answer on Stackoverflow
Solution 3 - Neural NetworkFriedrichView Answer on Stackoverflow
Solution 4 - Neural NetworkChad OkereView Answer on Stackoverflow
Solution 5 - Neural NetworkgravecaView Answer on Stackoverflow
Solution 6 - Neural NetworklmsasuView Answer on Stackoverflow
Solution 7 - Neural NetworkVincentView Answer on Stackoverflow
Solution 8 - Neural Networkuser217299View Answer on Stackoverflow
Solution 9 - Neural NetworkCorbin MarchView Answer on Stackoverflow
Solution 10 - Neural NetworkXn0vv3rView Answer on Stackoverflow
Solution 11 - Neural NetworkToon KrijtheView Answer on Stackoverflow
Solution 12 - Neural NetworkchaosView Answer on Stackoverflow
Solution 13 - Neural NetworkBradley PowersView Answer on Stackoverflow
Solution 14 - Neural NetworkjamesaharveyView Answer on Stackoverflow
Solution 15 - Neural NetworkAllenView Answer on Stackoverflow
Solution 16 - Neural NetworkVarun SinghView Answer on Stackoverflow