Artificial intelligence and its sub-domains look set to be the next major growth area for software developers, programmers, hackers and just about anyone who has anything to do with software.
There doesn't appear to be an area of life that it doesn't touch – self-driving cars, tagging porn stars on Pornhub, healthcare, security and so on.
The sad truth, though, is that most of us don't understand the field. For the most part, it's not like "normal" programming where an algorithm is developed, tested and released as a product.
Machine learning, for example, relies on selecting a model, developing it, training the model, testing and then releasing. These are particular skills that need to be nurtured in order to be an AI developer, but the question is, do you actually need all these skills to work with AI and machine learning?
One route, arguably the safest, is to take a university course, supposedly delivered by experts – although you may find the module is buried inside an analytics or data science programme.
There is no doubt that through uni you will gain a deep understanding of the state AI and ML, learn to develop your own models and tweak existing models to get the best performance out of them. This will need you to understand some advanced maths and you will be exposed to it in spades.
Lectures will often start with a complex equation that is manipulated into either a simplified form (unlikely in most cases) or something even more out there.
But does it need to be this way? Take Bayesian statistics, the heart of many (not all of course) machine-learning models. This can be represented by the following equation:
P(A|B) = P(B|A)P(A)/P(B)
- Where P(A|B) is the likelihood of A given that B is true
- P(B|A) is the likelihood pf B given that A is true
- P(A) and P(B) are probabilities of A and B if they are independent.
Easy to understand! But it doesn't need to be this complex, James Stone argues in his book Bayes' Rule: A Tutorial Introduction to Bayesian Analysis, which uses the wonderful example of The Two Ronnies' "Four candles" sketch.
Ronnie Barker asks hardware store owner Ronnie Corbett for something that can be interpreted as either "four candles" or "fork handles".
Traditional statistics would put the probability of either request as 50/50. But we may know that the shop sells more candles than handles and so the chances of the customer asking for "four candles" is higher than "fork handles".
And that's the essence of Bayes.
The same is true for many other ML techniques – they are mired in some very complex maths, but can be explained to most people fairly easily if the teacher truly understands them.
But here's the rub. University courses are often designed to produce graduates that are ready to take up research work, perhaps go on to a PhD programme. Lecturers will often themselves be researchers in the field and as such their interest is often in improving the state of the art.
This is no doubt a noble calling, but is it what industry actually needs?
There are two points here: industry does need people who understand ML and can implement new and useful models. But it's imperative that these folk can explain what's going on inside the model, in a simple way that can be understood by management.
I recently heard of a high-flying team of data scientists who developed a great model and started to explain it to their customers using a board of equations. Of course, what the customers wanted was simply how much money the system would make/save.
ML has moved on a lot in recent times: off-the-shelf models are everywhere and all the big cloud providers offer models that are relatively easy to use and need only be tuned.
Even if you don't want to turn to move into the cloud there are plenty of useful machine learning models: my recent articles on Tensorflow and word2vec both used two such examples. I don't understand what's going on inside the model, but I can use it quite easily.
These pre-rolled models still need to be trained on a set of data, but there is another way to use machine learning without even that. As we've seen, both Apple and Google provide simple ways to include pre-trained models in mobile phone applications. If you are a competent phone app developer, including machine learning is a simple matter of setting up the correct dependencies and loading in the trained model. The model is truly a black box.
So where does this leave education? There are plenty of online courses out there but similarly to university courses these can be very math-heavy. All the major players in the game have training courses available. Microsoft, for instance, offers AI training on a number of levels but of course you should be aware that these tend to be vendor specific, which can be somewhat limiting.
Universities need to wise up to the fact that AI is no longer just an academic exercise.
The university that I work for in 1996 dropped Computer Science in favour of Applied Computing, realising that industry doesn't need someone who can build a linked list library from scratch but rather knows how and when to use an existing library.
I'm not saying good courses that take this approach don't exist: what I believe is that for the sake of wider uptake of AI, and for the sake of industry, we need a lot more of them. ®