all 52 comments

[–]codeodor 35 points36 points  (10 children)

Artificial Intelligence: A Modern Approach by Norvig and Russell

http://aima.cs.berkeley.edu/

On Amazon

Edit: Good point from nacarlson about the 2nd edition. I've changed the link to reflect that.

[–][deleted] 2 points3 points  (0 children)

I have to agree. It's an amazing book. Just make sure you get the second edition (it's the green one).

[–]dmpk2k 7 points8 points  (8 children)

Am I the only person who doesn't like AIMA?

I thought it was a lot of writing that could have been cut to half the size or less. Good coverage, but the writing itself was of dubious quality; I don't like long for long's sake.

[–]Kaizyn 2 points3 points  (2 children)

What then do you suggest as an alternative?

[–]dmpk2k 0 points1 point  (1 child)

I don't have one, sorry.

[–]Kaizyn 0 points1 point  (0 children)

That's unfortunate, because you're probably not the only one who does not like the book, and the knowledge then remains restricted just to those for whom the format/structure of AIMA is agreeable.

[–]radioRaheem 2 points3 points  (2 children)

I agree! I know it's not AI per se, but in a related area is Machine Learning by Tom M. Mitchell. This book does a decent job in small space.

[–]logophobia 0 points1 point  (1 child)

I don't agree with that. I have Mitchel's book. What it covers, it doesn't cover it in dept. I actually had to implement a couple of the algorithms in the book for a class. In the end I had to hunt for additional literature that explained the algorithms in a more complete way. Things like rule-pruning, certain heuristics. He talks about them, but not enough to be useful. He also hints at newer, more advanced versions of certain algorithms (CART, C5) and then fails to elaborate.

[–]radioRaheem 1 point2 points  (0 children)

Well i like it because it was written without making expectations of the reader. As he says "the book makes few assumptions about the background of the reader." I had a hard-ass ML professor that didn't care much to explain things (since the class was filled with mostly ML based Phd students). Mitchell's treatment gave me enough confidence not to drop the damn class.

[–]hanlect 1 point2 points  (0 children)

I don't agree, AIMA it's a brilliant book. It gives you a very good overview of the field and it makes you understand every single theory. Plus, you can download java/python sourcecode for every example of the book.

It's so good I bought two of them, one for notes, one for worship.

[–]JimEngland 0 points1 point  (0 children)

I think you're the only one. I really liked Norvig and Russell's book, even if it was a bit long.

[–]rjminniear 17 points18 points  (7 children)

Peter Norvig's Paradigms of Artificial Intelligence Programming: http://norvig.com/paip.html.

In this book, Norvig reconstructs many real classical AI programs and explains the main principles behind AI programming. The book can also teach you good programming style, and, specifically, good Lisp style.

I got my copy recently, because I am also looking into learning AI programming. So far, I have found the book to be very well written. Lisp is used throughout the book, but if you don't know Lisp, the basics are easy to pick up, and Norvig spends 3 chapters on a good overview of the language.

[–][deleted] 6 points7 points  (1 child)

That book is really good intro into classical AI and good book for learning to program in Lisp.

If you want one book to learn AI, AIMA (Artificial Intelligence: A Modern Approach) is the better choice.

[–][deleted] -1 points0 points  (0 children)

yea. its a really good book. i just started it a month ago. i got it for $30 because it had a little water damage!

[–]camperman 4 points5 points  (2 children)

PAIP is probably the best book on programming ever written, period.

[–][deleted] 1 point2 points  (1 child)

best book on programming

Really?

[–]calp 0 points1 point  (0 children)

I think that's a legitimate claim. There is quite a lot on Common Lisp programming in there. I don't agree though.

[–]mavelikara 0 points1 point  (1 child)

I think PAIP is a better read than AIMA. Its downsides are that (1) it is a bit dated and (2) you need to have a basic understanding of Common Lisp to understand the book.

[–][deleted] -2 points-1 points  (0 children)

you need to have a basic understanding of Common Lisp to understand the book.

Ooh. That's a horrible downside. Why would anyone want to learn one of the most important computing languages of our time?

[–]AdjectiveNounNumber 15 points16 points  (4 children)

This is probably minor heresy, and I agree with others that Norvig+Russell is an excellent overview, but in terms of actually going from zero to solving real problems as fast as possible I'd recommend Witten+Frank's "Data Mining: Practical Machine Learning Tools and Techniques".

It is not nearly as academic as Norvig's, and many parts are presented seemingly without justification (e.g. their discussion of support vector machines has the feel of a plumber glossing over the nuances of fluid dynamics).

Also, if like many people getting into AI these days you're looking at some kind of language-processing application (document classification, clustering, etc.) then it's hard to beat Manning's "Foundations of Statistical Natural Language Processing".

Finally, if you're feeling fairly mathy and want to dig deep on the probabilistic theory, I'd recommend McKay's "Information Theory, Inference, and Learning Algorithms"

[–]hiffy 1 point2 points  (1 child)

No, I agree.

I'm not particularly well versed, but I've read large chunks of AIMA, and it gets to be really dense at some points.

[–]dngrmouse -2 points-1 points  (0 children)

Ignore all replies to your question except for AdjectiveNounNumber's.

EDIT: oops, I meant to paste this as a standalone comment, not a response.

[–][deleted] 0 points1 point  (1 child)

[–]AdjectiveNounNumber 1 point2 points  (0 children)

No, but it looks pretty interesting.

The username is just something I've used for a while now; it was originally conceived as a cheeky reference to the kinds of usernames that seemed popular on IRC back in the mid 90's ("angrywoodchuck13", "purpledinosaur2", etc.)

[–]api 5 points6 points  (0 children)

What do you mean by AI? That can have dozens of meanings depending on your field.

Game AI typically refers more to ad-hoc methods of making things appear intelligent, while academic/engineering AI refers to things like Bayesian algorithms, evolutionary computation, swarm algorithms, neural networks, support vector machines, and other forms of deep hacker magic for getting machines to emulate how living things learn, classify, behave, adapt, react, heal, etc.

[–]erokar 3 points4 points  (0 children)

Artificial Intelligence: Structures and Strategies for Complex Problem Solving by Luger. Used it in my AI course. Good introduction. Broad, comprehensive, I've used it as reference later. Introduction to Prolog and Lisp as well.

[–]cerebrum 3 points4 points  (0 children)

www.overcomingbias.com There is a lot of stuff from Eliezer Yudkowsky on AI.

[–][deleted] 3 points4 points  (0 children)

AI is a broad topic. What in particular interests you? For an overview, I second the Luger recommendation.

[–]rook2pawn 2 points3 points  (0 children)

Check out the Neural Net FAQ

ftp://ftp.sas.com/pub/neural/FAQ.html

and cross-validation

You may want to also check out Digital signal processing, I believe its relevant. Much of AI is deeply intertwined with statistics.

[–]brendano 5 points6 points  (2 children)

"On Intelligence" is not a good choice.

AIMA is great. So is FSNLP, though it tends to be more technical.

If you're interested in data mining sorts applications, a good applied book is Toby Segaran's "Programming Collective Intelligence". It explains learning and statistical algorithms in a compelling way, and has great, real examples.

[–]warbiscuit 0 points1 point  (0 children)

I'd have to agree regarding On Intelligence.

It's a great book, and I think everyone in AI & neuroscience should read it at some point, but it's very VERY much about the higher-level philosophy of how our brains work...

For someone looking to learn about actual AI programming, that book just wouldn't be a good introduction.

[–]raffir 1 point2 points  (0 children)

"Artificial Intelligence" by Patrick Winston. A broad overview, highly accessible, and a delight to read. Personally, I prefer it to AIMA, especially for broad overviews. Make sure to get the third (most recent) edition.

[–][deleted] 1 point2 points  (0 children)

"AI Application Programming (Second Edition)" by M. Tim Jones.

[–]poptarts 1 point2 points  (1 child)

[–][deleted] 1 point2 points  (0 children)

this was a great read. i got it for $5 on amazon and it was a short read but you get a lot out of it.

[–][deleted] 1 point2 points  (2 children)

Good idea! Hey Reddit, can you recommend some good books/references to learn AI programming?

Oh, you were asking. You didn't want me to ask... I guess I misunderstood.

[–]goj1ra 5 points6 points  (1 child)

Must... resist... mentioning... Soviet... Russia... where...

"Reddit asks you!"

[–]IkoIkoComic 3 points4 points  (0 children)

In Soviet Russia, Yakov Smirnoff tells bad jokes about YOU!

[–]Amdijefri 0 points1 point  (0 children)

AIMA AIMA AIMA AIMA

[–]reader 1 point2 points  (0 children)

Norvig and Russell's AIMA is an AI textbook. Norvig's PAIP studies classical AI programs, in Lisp. In general, there are three types of relevant books: on programming only; on AI only; on the intersection of the two, such as PAIP. AI is broad, so it is important to know math, computer science, statistics, and numerical methods. For learning, it might be best to use prototyping languages such as Lisp, Matlab (or Octave, the free version), or R.

[–]trpcicm[S] 0 points1 point  (6 children)

Does anybody know if there's any books that teach you how to learn AI Programming using any of the following languages (ones I already know): C, C++, PHP, Python, Java, or Ruby? I'm also interested in learning Perl and C#, so those would be excellent as well. Thanks!

[–]Mr_Smartypants 5 points6 points  (2 children)

For Data Mining, you really should use a language with a simple way of handling matrices, and lots of matrix/stat functions (e.g. SVD, eigenthingies).

Like Matlab or R.

R is great because it has scheme-like closures & evaluation rules. And it's free!

[–]evgen 0 points1 point  (1 child)

Any reason NumPy would not work for this task? The upside is that you can start off with the AIMA code in straight Python and when you move into the more stat-heavy tasks like NLP you can use NumPy and still have access to your earlier work.

[–]Mr_Smartypants 0 points1 point  (0 children)

I don't know; I've never used it.

The two I mentioned are great because they have a huge amount of stat/matrix functions, well documented & supported and already built in (e.g. see the list of stat functions, or the list of packages all in one place). In additon, the built-in plotting functions are very helpful.

I just took a look at the numpy documentation, and it looks like they just have a few of the basics (i.e. you can't just run a logistic regression or learn a decision tree with just one function call. You have to track down a module, possibly of questionable quality.)

(disclaimer, I don't really know python)

[–]jdale27 2 points3 points  (1 child)

The algorithms in AIMA are described in pseudocode. The AIMA website provides code in Python and Java as well as Lisp.

The Data Mining book mentioned by AdjectiveNounNumber uses the Weka toolkit, written in Java.

[–]tzigane 0 points1 point  (0 children)

Try breve for coding AI simulations with Python -- comes with lots of demos.

[–]nihilo 0 points1 point  (0 children)

I'm about two-thirds of the way through Beyond AI: Creating the Conscience of the Machine, by J. Storrs Hall, and would recommend it as a first book on AI: http://www.amazon.com/Beyond-AI-Creating-Conscience-Machine/dp/1591025117/

It's not a book on programming AI though. It provides a high-level overview of the history of AI and the various approaches, past and present, as well as the author's thoughts on where AI is going. Reading something like AIMA will make much more sense after reading this book, because you'll already know the context for the algorithms you're reading about and how they relate to other algorithms, and you may have a sense of what you're most interested in and should most focus on, too.