Ask HN: AI is going to be big. How should we learn?

43 points by truebosko ↗ HN
It's no doubt that understanding AI and the associated knowledge around it is going to be critical for many software developers to thrive in the next 1-2 decades.

What do you think are the ideal resources to learn today, as a beginner, and how to continue to grow that knowledge?

23 comments

[ 4.5 ms ] story [ 69.5 ms ] thread
I don't have any technical knowledge about AI specifically, but my general approach to research is to Google the key term, e.g. "AI for beginners" or "machine learning for beginners", read ~everything that comes up, and go from there. This is a good way to get the necessary base vocabulary in place for deeper searches.
Well, first, I would try to understand what "AI" you are talking about and why you have so much confidence it will be big.

It's a pretty broad category, and a lot of it is (still) very far from commercialization.

It's almost like asking about "the Internet" in 1992.

Here are some categories that may help to dive into...

-Computer Vision

-Natural Language Processing

AClustering vs classification in machine learning

-Neural nets (convolutional, recursive, hyerparameters and optimizTion techniques)

Read "how to create a Mind" by kurtzweil

Related (but distinct topics)

-Understand rise (and fall) of semantic web

-Open/Linked data

-Relational vs NoSql databases

-distributed/parallel processing (MapReduce ->hadoop-> spark)

*edit - typo

Was discussing AI with my wife last night and when she asked "What is it actually?" I did not have a clear answer. This helps, thank you!
The way to start is go to wikipedia and learn and understand all the algorithms that have been developed over the years in this field. You can get a list of all such algorithms on wikipedia. For each algorithm try some examples and see for what kind of problems they work and for what they don't and if possible try to think about why that is so. The goal of AI is to design "general purpose algorithms" that could be applicable to wide variety of tasks.

The other side of AI where people talk about AGI and ASI is nothing but intellectual masturbation at this point.

I would go for "Programming Game AI by example" by Matt Buckland. Also great resource is aigamedev.com.
In terms of gaining a solid understanding of the math and theory underlying most of modern machine learning/AI, the best resource is definitely the book "Information theory, inference and learning algorithms" by David MacKay.

The author is such a stand-up guy, he's made it available for free: http://www.inference.phy.cam.ac.uk/itprnn/book.pdf

From a personal point of view as someone also interested in learning a bit I think building something is often a good way to go. I kind of have a plan one day to hack together the neural network from

http://karpathy.github.io/2015/05/21/rnn-effectiveness/

with some personally selected stock market data to see if it can kick out profitable buy/sells.

(There is some how to stuff in the article under 'Source Code')

A "good" AI stock trader would in particular require some kind of real-world pseudo real-time data feed (pick your poison; Twitter, FB, news, even generic web crawling)

Anything based purely on the stock charts themselves becomes simply a sophisticated pattern matcher and can't possibly respond to the actual drivers of price movement.

It depends on what strategy you are trying to implement. I wasn't particularly thinking real time. I'm more of a value investor at heart and was thinking of something like it looking for stocks where the valuation is underpinned by assets and buying when they are near the bottom. So the inputs would be something like some numbers from the income and balance statements plus the price graph.
> where the valuation is underpinned by assets and buying when they are near the bottom

... is still using some data external to the stock charts, which should work great. :)

Learn math. To do any serious work in machine learning, you need to have a solid understanding of calculus, linear algebra, and probability theory.

Note that AI is bigger than machine learning, and there's a chance that the future AI will be heavily modeled after a human brain. So it might be a good idea to take a couple of foundational courses in neuroscience.

compete at www.kaggle.com defeat is the best teacher.
Assuming that you consider Machine Learning to be either a subset of AI (as I do) or a sibling field, and want to learn aspects of ML, then consider Andrew Ng's Machine Learning course on Coursera. It's a great introduction and doesn't require a ton in terms of prerequisites. You'll see some multi-variable calculus and linear algebra, but he does the calculus derivations for you, and there's a pretty adequate review of the relevant parts of Linear Algebra.

In addition, if you don't already have a background in Calculus and Linear Algebra, then supplement the Ng course with the Khan Academy stuff on Calculus and Linear Algebra, or other courses you can pick up on Coursera or Edx or whatever.

If you get really interested in neural networks (which are all the rage these days) after the Ng class, there's a freely available book on Neural Network design that you could look at. It doesn't cover all the very latest techniques, but it would help you build the foundation of understanding.

http://hagan.okstate.edu/nnd.html

There's also a MOOC around the Learning From Data book that you could check out.

http://amlbook.com/

https://work.caltech.edu/telecourse.html

OTOH, if you're making a sharp distinction between "Classic AI" and "Machine Learning" and you really care mainly about the classical stuff, then you might want to start with the Berkeley CS188 class. You can take it through EdX (https://www.edx.org/course/artificial-intelligence-uc-berkel...) or just watch the videos and download the notes and stuff from http://ai.berkeley.edu/home.html

And if you just want to dive into reading some classic papers and stuff, check out:

http://publications.csail.mit.edu/ai/pubs_browse.shtml

and/or

http://ijcai.org/past_proceedings

Another good resource is

http://aitopics.org/

Knowing AI will be useless, it'll be like knowing and programming assembly language, for high end specialists only.

You'll get a framework/app/api that will deliver you the info programmed by someone really into AI.

It'll be business as usual.

Know API's, frameworks, how to analyse data and tools around this, know people.

AKA Just be a good programmer.

Thank you for this very anti-intellectual answer, now I don't have to wonder anymore why programmers and engineers are getting commoditized.

Seriously, does for you being a good programmer only consist in calling some API or knowing some framework?

You react very negatively to an alternative opinion. I think it's a good and valid point considering the OP proposed the idea that knowing/learning/understanding AI will be critical.
Seems pretty intellectual to me. He just has a different priority on skill acquisition. Both types of people are required.
Part of being a good programmer is knowing, at least from a higher point of view, how the underlying systems work. OP doesn't seem interested in doing AI research, but learning the basics should help you stand out in the pool of other API-using programmers.
This is an interesting perspective. Often folks do just go around plugging in various libraries and such.

However, the author of this thread I don't think was asking how to go about implementing someone's API as much as how to be the one to create the AIs that the APIs in the future might attach to.

I've been thinking about this as well. Where my head's at right now:

- Conscious AGI is not even close. Many fundamental breakthroughs in philosophy/science required (binding problem, how sensations arise from physical processes, etc)

- Smart non-conscious AI approaching AGI requires getting the balance between many sub-modules correct (see openCog), and probably requires a lot of time and research to get right

- Non-conscious domain-specific supervised-learning has strong potential in the next 5-10 years (any problem a human can solve in a few milliseconds is a good candidate, but usually requires a lot of data to supervise the learning algorithm)