"Learning AI (or any deep comp.sci for that matter) is not like learning J2EE or Ruby DSLs or whatever the fad du jour in the enterprise software world is — read a few chapters of the latest bestselling “pragmatic” book, write some crappy web site and hey presto you are the expert.

This seems like over-the-top smuggery."

That's probably because he didn't say it.

I did (I don't know if you noticed he was linking to a separate page, and if so you followed the link), a long time ago, in a blog post. And of course the context was different.

Here is the original post from which that sentence was extracted. Hopefully it makes more sense in context.

-------------------------------------------------------

"To "learn AI" <---- title of the blog post.

first learn basic mathematics.

I keep getting asked this question and I keep saying the same thing - to three people in the last week, for e.g, two of whom were working through (or planning to work through) AIMA - so I thought I'd put this down here (and point anyone who asks the same question to this entry in the future).

Learning AI (or any deep comp.sci for that matter) is not like learning J2EE or ruby "dsl"s or whatever the fad du jour in the enterprise software world is - read a few chapters of the latest bestselling "pragmatic" book, write some crappy web site and hey presto you are the expert.

"Real" comp sci doesn't quite work like that.

To really understand a standard 3 layer feed forward neural network, for example, you need to have a solid grip on

* vector spaces
* basis vectors and change of bases
* eigen vectors and eigen values
* Basic matrix operations like inversion
* multi dimensional performance surfaces
* Quadratic functions and finding their global maxima within Newton's method and Conjugate gradients
* performance measures and steepest descent
* partial differentiation of vector values
* numerical stability of algorithms

Without that background you will be able to use conceive of "class NeuralNetwork" that "has an" instance of "class Node" etc, but you will not,(repeat NOT) be able to do anything useful with real world data (writing a XOR classifier doesn't count!).

And, a feed forward neural network is only one type of pattern recognizer (or function approximator). There are many more, each with its own trade offs , and you have to know the math to make the trade offs.

That being said, the best book to start with is AIMA as long as you (1) learn the required math parallely (2) do all the exercises at the end of every chapter.(I can't emphasize this enough). Reading through != "working through".

If one is willing to work hard, there are very few fields as fascinating as the various branches of AI.

Once you start down the rabbit hole, however it may be very hard to continue writing all that heavy lifting enterprise software without hearing the giant sucking sound of your life going down the drain as you write yet another jsp page for the latest leasing system. ;-)

Be warned! :-D.

Anyway the really hard part of "learning AI" is not getting the books or working through them systematically (which is hard enough), but that is for another blog entry.

Post Script - Some book recommendations for beginners.

1. Linear Algebra by Gilbert Strang
2. Calculus by Gilbert Strang
3. Artificial Intelligence A Modern Approach By Russell and Norvig
4. Machine Learning By Tom Mitchell
5. Neural Networks for Pattern Recognition by Chris Bishop
6. Paradigms of Artificial Intelligence Programming by Peter Norvig (ok, this one is not quite an cutting edge AI book, but imo this is the best book on programming ever written and if you call yourself a programmer you should have it on your book shelf)

end blog post.

_______________________________________________________

Hopefully that wasn't too much "over the top smuggery" :-). (Not that I care if it is, I write stuff on my blog to clear my head, not be popular).

This was written as answer to my ex-colleagues from the world of enterprise software who asked for advice on "How to move into AI Dev and do interesting projects like you do" and the "leasing system " and "heavy lifting" "read some book and become the (local) expert" etc references make sense to the people (from ThoughtWorks) who asked me the question.

I am not sure how anything I said fits into this Java-bank-interview vs Haskell-bank-interview discussion.

Fwiw I am entirely self taught and was addressing other self learners in that blog post, so I am not sure how the author uses my opinion to buttress his thesis that "self learning is overrated". If anything I believe it is underrated.

jrockway said it best above,

" I've learned everything I know about programming on my own -- reading other people's code, and trying their techniques for myself. "

Amen.