In this detailed video I explain how to get started in building not just good AI, but, above all, the kind that avoids the risks of artificial stupidity, by combining several powerful approaches: machine learning, programming in logic, and modern data.
It is important to understand the differences between the closely related domains of: Artificial Intelligence, Machine Learning, Data Science, and Advanced Analytics. At the heart of all of those, we work with patterns, also called models. In this video you will see a visualisation of one of the most popular types of a pattern, known as a decision tree, shown both using R in Microsoft ML Server and in Azure ML.
Patterns have two different uses: the explorative, which lets you gain knowledge from your data, and the predictive, which leads to building autonomous decision making systems, which are, nowadays, the foundation of artificial intelligence. However, this was not always the case in AI. Its history was based on a different paradigm than machine learning. It used to be based on logic programming, with languages such as LISP and PROLOG leading the way. This had some profound benefits in terms of system quality, correctness, overall reliability, not to mention its explicability, something greatly missing from today’s deep-learning based AI.
The key focus of today’s AI is recognition (image, sound, voice) that is generally as a modern form of computer input, making systems easier to use by humans. However, there is much more to AI than recognition: reasoning and judgement are much harder to build using ML. As I have explained in the previous video on Artificial Stupidity, applying ML, especially DL, to those harder problems is risky and ethically questionable as it leads to the construction of so-called blackboxes: systems that make autonomous decisions that we cannot (easily) explain in human terms, and which, occasionally, make incredibly wrong, even dangerous, life-threatening choices. Since a heavy price is likely to be paid because this approach is relatively inexpensive—cheaper than paying qualified programmers to code safer, rule-based systems—it is important to look for ways to avoid this form of artificial stupidity, as I do not believe we should accept the current state of affairs.
The solution seems simple to me: combining the best of the past of AI with the best of the present. Logic programming can be used to frame the machine learning part of the system, and to help keep it in check. Modern, inexpensive data allows us to test ideas faster, but it does not absolve us from aiming for correctness. Indeed, it is quite incorrect to assume that volume of data helps find better correlations and models—often, the opposite is the case, subject to basic laws of statistics and information science that tell us how much information can be gained from any data.
There are others who think this way. One of the major proponents of the Lisp programming language, Paul Graham, says that choosing a combination of technologies and IT tools that are good for the job and that are not necessarily the most popular at the moment gives you a very powerful, unique advantage over your competition who is doing, well, what everyone else is doing. Graham has proven his wisdom by creating a lot this way: Y Combinator fund, ITA Matrix—read the story why Lisp was used for this project which is now part of google.com/flights—and even Reddit, which was originally written in Lisp, and rewritten in Python in 2005. Lisp is the 2nd oldest programming language (after Fortran), and it was invented by John McCarthy, the father of AI. Today you can choose any of its variants, such as Clojure, F#, Haskell, even R or Python if used in the functional, logic-programming style.
Above all, make sure to get started well in AI. Ensure the validity of your models on a continuing basis. If you are new to ML, start with easy projects first, see my essay on that. Avoid artificial stupidity at all costs, especially as it is so cheap—good AI will cost us, I am afraid, a little more than it seems today.