It seems the general opinion (especially of sci-fi writers and doomsday predictors) is that eventually computer programs will become complex enough to be intelligent. In reality, there is nothing intelligent about most computer programs. Nothing. Making the programs more complicated just makes them more complicated, not more intelligent. That’s not to say there is no intelligence is computer programming, most programmers are very clever and creative, but this intelligence is applied to the creation of the program, not in its execution. Computers are closer to microwaves than autonomous beings – you get out exactly what you put in, nothing more or less.
That said, there have been efforts to specifically create intelligent programs. Alan Turing hypothesized about intelligent machines long before they were a realistic possibility. The “Turing test” has been an industry standard, and the Loebner prize competition is held yearly to test the latest creations of AI researchers for intelligence. In this test a human judge converses with a human and with a computer and attempts to determine which is which. If the judge cannot reliably identify the computer, the computer passes the Turing test. In my first considerations of AI, all I could think about was language, about beating the Turing test. Language is certainly an intelligent behavior, but it’s not the only such. And it’s probably one of the most complicated. Not a good candidate for the first truly intelligent algorithm. Consider a plant growing toward the sun, a bird building a nest, a human infant recognizing and reaching for her mother. There are intelligent behaviors that do not require language. So what exactly is intelligence?
Intelligence requires two associated abilities:
1- Store input data in a hierarchical model of the outside world (memory)
2- Use this model to make decisions based on projections of the result of those decisions (prediction).
This is an idea proposed by Jeff Hawkins in the book On Intelligence
Intelligence is the ability to represent past input in a manner that allows you to make useful predictions based on new input as it is received. You have been widely exposed to computers, so you have a very strong internal model of their various interactions. You are very confident in what will happen if you move the mouse left or right, or if you click one of the mouse buttons on an underlined word or button, or if you press the down arrow on your keyboard. These sub-conscious realizations are projections you make based on past interactions with computers. When learning a new skill, you don’t have many projections available, this is another way of saying you don’t know what will happen. As you practice the new skill, you see a wide range of inputs based on your actions, this allows you to build a model of behavior and consequences that you can use going forward.
When you learn to cook, you must start with easy recipes with few, obvious steps. You learn to make spaghetti, toast, maybe macaroni and cheese out of a box. The first time you make spaghetti, you have to read the instructions on the box, it isn’t clear to you what will happen, you set a timer. The second time, you probably don’t read the box as many times, the fifth, you don’t need the instructions at all. You’ve created an internal model for how spaghetti noodles cook, you can reliably project that boiling water for 7-9 minutes will properly soften the noodles.
Then you can apply this model to other contexts. When you want to make lasagna, you can use your “pasta” model to make the noodles here as well. When you want to make rice a few days later, you can reuse a bit of the spaghetti noodle model. You can make basic projections about what will happen when you put dry rice into the hot water for a period of time. This is due to the hierarchical nature of intelligence. By storing data hierarchically, we can make projections for situations we have never been in before. We can make complicated calculations similar to “when I put the spaghetti in boiling water it turned al dente, these penne noodles are very similar to spaghetti, I can be reasonably certain what will happen when I put the penne noodles in boiling water”. This ability is the core of intelligence.