Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

I took a Class in college (A.I.) and I found it pretty interesting, but didn't go much further than that (I graduated that semester so I wasn't able to take any more classes).

So it's something that's been kind of coming back up as a "side" interest that I kinda wanted to study on my own, I have a ton of e-books and documents but the problem is they are VERY advanced and extremely math/algorithm heavy (which I can understand).....however none of them really explain how you would go about it 'code wise'......so I guess what Im asking is, is their a beginner resource to this kinda stuff (Bayesian Networks/Machine learning/Neural Networks) and such that isn't SO math heavy.

I understand why the math is there, but when it doesn't really explain how you would go about 'programming' such a system.....well it gets kind of confusing to move forward with.

share|improve this question

closed as not constructive by MichaelT, Kilian Foth, Martijn Pieters, gnat, GlenH7 May 6 '13 at 13:26

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. If this question can be reworded to fit the rules in the help center, please edit the question.

What langauges/programming tools were used in your college class? When I took such classes we mostly used Prolog, and a little Java. –  FrustratedWithFormsDesigner May 16 '11 at 17:16
We used Whatever we wanted (except for some programs required Lisp and some Prolog) but the others (such as Bayesian/Genetic etc we could make in whatever language we wanted) –  user6791 May 16 '11 at 17:18
Lisp and PROLOG are the way to go. They are used widely in AI. I know that PROLOG has a bunch of libraries to help, although I don't have exact names –  inspectorG4dget May 16 '11 at 17:21
@Sauron: Have you looked into finding existing libraries that handle this stuff? I know I used Weka for a course I took on data-mining, but you might find some of its features usable for your own AI projects. As I recall the whole thing is written in Java, is open source, and has an API you can call from your application, so you don't have to write the hard math algorithms from scratch (unless you want to ;) ) cs.waikato.ac.nz/ml/weka –  FrustratedWithFormsDesigner May 16 '11 at 17:34
@inspectorG4dget: The problems I found with LISP and Prolog was that while they were very good for AI tasks, there was little support for UI components, network communication, etc... so that usually was written in some other language which would then have to make calls to the LISP/Prolog parts. Perhaps the situation's improved since I last tried to do that? –  FrustratedWithFormsDesigner May 16 '11 at 17:35

8 Answers 8

up vote 1 down vote accepted

One very confusing thing is that AI is an umbrella term for lots and lots of different things that are not necessarily related: search, planning, pattern matching, knowledge representation... You should definitely try to narrow down to one specific subtopic when searching for a textbook, etc.

By the things you mentioned in your post, I'd guess that you might be interested in Machine Learning. Here are some books they suggested in the ML class I took, just in case you need some pointers:

http://www.amazon.com/Pattern-Classification-2nd-Richard-Duda/dp/0471056693 http://www.amazon.com/Machine-Learning-Tom-M-Mitchell/dp/0070428077

About the issues with programming: The real meat in ML is in choosing the right algorithms, the best representations of data, the best parameters, the best training and verifications approaches and using this to "magicaly" solve real problems... Overall this is much more empirical and real-world oriented than other areas of CS you may be used with.

Most algorithms either aren't too hard for you to implement yourself or are available via frameworks/libraries in a way that allows you to just tweak the parameters as needed.

About the math: most introductions (and actually much of the advanced material) isn't that math-heavy actually - the hard math is usually created as an afterthought to explain already existing algorithms. This means you don't really have to worry too much about it to be able to start "doing stuff".

share|improve this answer

I just finished with an Artificial Intelligence class and also a Machine Learning class. My AI class focused on rule-based expert systems, genetic programming, and neural nets. The book we used was Negnevitsky's "Artificial Intelligence: A Guide to Intelligent Systems" which is very good at explaining, and goes over concepts at a code-level with examples. For this class, I implemented a 5x5x5 Tic-tac-toe game with a genetic algorithm.

For Machine Learning, my textbook was Marsland's "Machine Learning: An Algorithmic Perspective", and while the math is pretty high-level, he provides python code for almost everything he does, especially the complicated stuff. For this class, we built a Connect-4 learner which used reinforcement learning, as well as a handful of other ML concepts like TD-learning, cross-validation, historical discounting, etc. We also did a handful of other interesting exercises with neural nets (google "PIMA dataset") and with clustering (SPAM classification)

If you understand the concepts, just try some simple applications. A simple 3x3 tic-tac-toe game can be tackled with a neural net, GA, expert system, or with machine learning approaches. There are lots of little puzzles which can be implemented with an AI or ML paradigm that can be really interesting for how simple they are.

edit: here's another links: http://archive.ics.uci.edu/ml/

share|improve this answer

Paradigms of Artificial Intelligence Programming works through several case studies in common lisp, including some programs like the chatbot eliza.

share|improve this answer

Check out AI Space, they have a handful of simple Java based apps for trying out AI algorithms/concepts (including the three you mention: Bayesian networks, machine learning, and neural networks).

They are good for testing a particular problem and showing you what happens at each step.

You were looking for coding resources, so this would be my suggestion: AI Space has a collection of exercises (and solutions). Try writing code to solve these problems. You can verify against their solutions, and use their tools to verify your algorithm is doing the right thing.

share|improve this answer

What kind of books have you tried so far? Most textbooks include some sort of introduction to the mathematical concepts they use, either before they use them or in an appendix. With that in mind, I suggest you give this list of AI books a good look. Try and read some samples so you can see what foundations each of them requires and with that information you can find an area and book to start with.

Additionally, the writers of the book AI: A Modern Approach have created a code repository that contains the implementation of various AI concepts and algorithms. Maybe looking both at theory and corresponding code will help you understand "how you would go about 'programming' such a system".

share|improve this answer

One of the best books that is a great intro but also deals with very real topics is: Programming Game AI By Example by Mat Buckland. It covers lots of ground, has great examples, has complete code, and is written very well. Best book I ever read.

Now, Mat is a great writer so if you're more interested in Neural Nets and Genetic Algorithms like you noted, his other book is just as good (but not as broad): AI Techniques for Game Programming

Aside from that, the AI Wisdom series is more white-papery, but also not too math-oriented in some places. There isn't, however a whole lot of code for most of the articles.

Aside from that, there are good articles/videos on AIGameDev that you could check out.

share|improve this answer

You're right to point out how most books on AI topics sadly skim over implementation details, I also had tough time trying to figure out some concepts on my own. I resorted to several online tutorials, out of which I would wholeheartedly recommend ai-junkie - which apparently is the website of Mat Buckland, the author of the books SnOrfus recommends. Haven't had a chance to read his books, but judging from the articles available on the website, I can concur that his writing is great and tightly coupled with the exemplatory code.

Another possibility is looking at the code itself - AForge.NET is an open-source C# framework, covering several machine learning and image processing topics. The code itself is well commented and there are some practical articles on their website.

share|improve this answer

It may be very educational and inspiring to look into the details of IBM Watson project, which succeeded in creation of one of the most advanced AI systems to date.

share|improve this answer