Recently, an ex-colleague posted an interesting question: “Isn’t AI just software?” I thought this was worthy of a bit of discussion and exposition. So here it is:
The thing that makes computers very exciting and powerful is that they are soft machines. That means that whereas most other machines (like sewing machines, bicycles, machines that make coins and banknotes etc.) are largely fixed in what they do, computers can do many, many different things. For example, for most of us, a tablet computer acts as a movie and music player, an email reader and writer, a word processor, a task manager, a camera, a video games player and many other things.
This is because the function of a computer is split up between the fixed bit made of physical stuff (the hardware) and the very flexible bit made up of instructions and data (the software). software is a lot easier to change than hardware.
For example, an air conditioning system typically needs a program that senses the current temperature, and if it is higher than the user-requested level, kick in a cooling system, or if it is lower than the user-requested level, kick in the heating system. Similarly, a program to calculate your taxes has to ask you how much you earned last year, your marital status, and a bunch of other things, then uses a series of formulas to work out your tax, then share the result with you. Etc. Etc.
Although there is no simple, clearly agreed on definition of artificial intelligence, there is probably no-one who would call either of the above pieces of software (air conditioning and tax calculation) artificial intelligence. Artificial intelligence is typically reserved for things that are either computers doing things considered super-clever and human-like, or computers learning to do things themselves, i.e. learning to do things that the human programmers did not explicitly, specifically tell them to do.
A lot of the current work on artificial intelligence falls into this latter category – also known as machine learning. Let’s take an example in financial services. Imagine you are trying to create a piece of software that predicted rises and falls in the price of IBM’s shares. Say you were sure that IBM’s share price will go up tomorrow if and only if Alibaba’s share price went up today, and it will go up by twice as much.
You could relatively easily make a program that checked if Alibaba’s share price went up today. If it didn’t, the program would close down. If it did it would check by how much, and then double it, and spit out a prediction for IBM’s share price by doubling it. Here the program is not doing anything intelligent. It is simply implementing your investment hunch. If that hunch is right, you make a bunch of money, if it is wrong you lose.
With a modern, neural network-based approach to the same problem, you gather a large amount of data of different indicators – stock prices, forex and interest rates, weather patterns, social media trends etc., pump them into a neural network training algorithm that tries to find a complex function based on hundreds or thousands of data points that seems to work well predicting IBMs stock price movements.
Once it has found the best function, you test it on unseen data to check it performs well, then hey presto, you have a soft machine that predicts IBM share prices. (You also have a complex function that you can pore over to try to learn how the computer is doing the prediction.) The program may have taught itself to ignore things you thought were important, like forex rates, but heavily weight social media trends, for example. This is a very different scenario.
So, the bottom line is that, yes, AI is implemented using software, but often the big difference is that AI writes its own algorithms for doing this, based on being supplied with training data. This is sometimes described as ‘AI eating software’ because in the domains where it works, the need for humans to work out the algorithms may go away – the AI works that out iteratively based on a large set of test data.
I hope that is a helpful perspective.