[disclaimer: I'm an optimist.]

I personally think that ML is on the verge of some major breakthroughs.

In particular, I think that results in "deep learning" are very promising. I've written about this approach in earlier HN comments.

"Deep learning" is the new big trend in Machine Learning. It promises general, powerful, and fast machine learning, moving us one step closer to AI. Deep learning has already made important advances in achieving state-of-the-art accuracy in vision and language, but with much less manual engineering that competing methods.

In fact, I think the major success of the deep learning movement has been to get the community to start focusing on figuring out how to get powerful learning algorithms actually to work. A lot of people used to (but many still do, sadly) work on making incremental improvements on learning algorithms that are implausibly simple. "Sure, we know this model can't achieve human level performance on vision or language or control (robotics) or planning, but with this neat refinement I can get a paper out of it." Deep learning begins its endeavor with the goal of AI, and rejects techniques whose upper bound isn't high enough. Simply the fact that the community is setting its sights high---not in terms of over-promising to the outside world, but merely in terms of the learning machinery being explored---and is actually trying to achieve AI is a step forward.

An algorithm is deep if the input is passed through several non-linearities before being output. Most modern learning algorithms (including decision trees and SVMs and naive bayes) are "shallow".

For intuition, imagine if I told you that your main routine can call subroutines, and your subroutines could call subsubroutines, but you couldn't have any more abstraction than that. You can't have subsubsubroutines in your "shallow" program. You could compute whatever you wanted in a "shallow" program, but your code would involve a lot of duplicated code and would not be as compact as it should be. Similarly, a shallow machine learning architecture would involve a lot of duplication of effort to express things that a deep architecture could more compactly. The point being, a deep architecture can more gracefully reuse previous computations.

Deep learning is motivated by intuition, theoretical arguments from circuit theory, empirical results, and current knowledge of neuroscience. Here is a video where I give a high-level talk on deep learning, and describe this intuition: http://bilconference.com/videos/deep-learning-artificial-int....

Here is more detailed information about deep learning: http://deeplearning.net/tutorial/

Another aside: My colleague Hoifung Poon published exciting work in semantic parsing. It received best paper award at ACL 2009, the most prestigious NLP conference.
(http://www.cs.washington.edu/homes/hoifung/papers/poon09.pdf)
You read it and you're like: "Really? You're doing that? You're actually trying to solve NLP using purely automatic techniques. Whoa. I forget that was the goal, I was too busy doing feature engineering!"

He achieves impressive results on question-answering, and beats other systems in recall, giving answers to many more questions, at the same level of accuracy at the competing methods.

The source code for his semantic parser is available (http://alchemy.cs.washington.edu/papers/poon09/) and you can use it to build a Q+A system. You can try a demo of it here, which I put up: http://bravura.webfactional.com/
He is about to talk about an updated version of this work, in which he induces ontologies purely automatically.