Monthly Archives: January 2014

Stop programming !

Why am I asking to stop programming when I am advocating the experimentation of large systems by AI researchers? In fact, I recommend using a computer, but without programming it.
Indeed, programming is a complex task, and man is not very good at doing it, as we can see from the number of our bugs, and the delays, mistakes, and costs that they entail. When a computer works on an AI problem, it needs a huge amount of knowledge, but we must not give it inside programs. This knowledge is often unknown in the beginning, we have to experiment the system so that we can improve and complete it. Unfortunately, it is very difficult to modify a program, and we add a lot of new bugs doing it. To lessen this difficulty, it is better to separate knowledge from the way to use it, we must not give it in a procedural form as it is in a computer program: we give knowledge in a declarative form, which does not include how to use it. The drawback is that we need a general program that can use declarative knowledge.
Let us first examine what is declarative knowledge; the following sentence, taken from a French grammar, is declarative:
Articles agree in gender and number with the noun they determine.
This does not indicate whether one must verify this agreement when one finds an article, or a name, or at the end of the processing of a sentence, etc. It does not tell what one does when there is a disagreement, or if it is used when one processes a text in order to understand it, or when one writes a text, or in both cases. One could even decide not to use this rule in some situations, for instance, when parsing a text. An advantage of using declarative knowledge is that it is easy to modify it: if one wants the analogous rule for English, it is enough to remove the gender agreement, for Greek, to add “case”, and for Latin, where there are no articles, to remove it.
Some could say that the problem is not solved, we create a new problem, more difficult than the initial one: writing a program that can use declarative knowledge. However, we win because only one program is needed, it will be able to use declarative knowledge in any domain. Moreover, this reflectivity leads to another advantage: one can bootstrap the use of declarative knowledge, the knowledge necessary for using declarative knowledge must also be given in a declarative form.
One factor makes easier this bootstrap: knowledge may be more or less declarative, there is a large gap between purely procedural knowledge (such as it is in computer programs) and purely declarative knowledge (such as in the preceding grammar rule). When knowledge is more declarative, it is easier to create and modify it. The bootstrap progresses in increasing the declarativity of the pieces of knowledge used for solving our problem, and also the declarativity of the pieces that are necessary for using declarative knowledge. Let us give a less declarative example of the preceding grammar rule:
When one parses a text, and one finds a noun, one looks for its article, and one checks that both genders and numbers are the same.
We have mixed grammatical knowledge with indications on how to use it. This rule is less general than the initial one: it will not be used for generating a text.
For bootstrapping the use of declarative knowledge, I began with a program that could manage to use rather procedural knowledge, with only a few declarative aspects. This program was simple: it is easy to use knowledge, when it is given in a form similar to a programming language. With this program, the initial knowledge was transformed into a program. Since that time, I only had to increase the declarativity of knowledge, the old program creates a new program, which can use this new version. In that way, it is easier to give knowledge: using it, the system can accept knowledge more and more declarative. CAIA has written the 470,000 lines of C that make up CAIA for the present time, none has been written by myself. On the other hand, every bit of knowledge is now given in a formalism much more convenient that 25 years ago.
In that way, besides the main bootstrap where I am realizing an artificial AI researcher that will help me to advance AI, a “small” bootstrap makes easier the realization of this artificial researcher: its knowledge is given in a more and more declarative formalism.

Naturally, we must have programs, but they have to be written by the AI system itself. During the development of the AI bootstrap, each of the participants, myself and CAIA, has to do the tasks that he does the best. Artificial beings are much better than ourselves for programming: they are faster, and they are making less bugs. Contracting out the programming activities gives us more time for doing what we are still doing better than artificial beings: finding new knowledge in order to improve them.

Adolphe Pégoud, a model for AI researchers

We have just celebrated the centenary of two achievements of the aviator Adolphe Pégoud: the first parachute jump from a plane, and the invention of aerobatics. Curiously enough, both are strongly connected; it is interesting to understand how the first achievement led to the second one.
Parachute jumps were already made from balloons, but never from a plane. Pégoud thought that it could be useful for leaving a broken-down plane. The other pilots thought that he was crazy to try such a dangerous and pointless experiment. Moreover, as most planes had room for only the pilot, the plane would be lost after the pilot left the plane. Everybody, including Pégoud, did not think much about the future of the plane, but  they believed that it would immediately crash when the pilot would have jumped. Pégoud had chosen an old plane which was expendable. While he was coming down under his parachute, Pégoud looked at his plane, and he was very surprised by its behavior. Instead of immediately crashing, it made many curious maneuvers, for instance, flying upside down, or looping the loop, and this did not lead to a disaster: it carried on with another aerobatics. Pégoud immediately understood the interest of this experience: if the plane could do these figures without a pilot, it could do them with a pilot. Therefore, after being solidly tied up to his plane, he imitated his preceding plane, and he was the first human to fly upside down; a little later, he was looping the loop.

Pégoud realized that a plane could “discover” new maneuvers when it was left autonomous, and he was able to take advantage of this capacity. We, AI researchers, must also imitate Pégoud, leaving our systems free to make choices, to fly around, in situations where we have not given them specific directives. Then, we analyze what it has done, and we possibly find new ideas that we will include in our future systems.

Personally, I have had such an experiment, and it gave me the idea about the importance of a direction of research that I am trying to develop since I am working in AI. In 1960, I began working on a thesis in AI. My goal was to realize a program that had some of the capacities of a mathematician: it received the formulation of a theory (axioms and derivation rules), and it had to find and prove theorems in this theory. Although it could try to prove a conjecture that I gave it, it usually started its work without knowing any theorem of this theory. As Pégoud’s plane, it had no master, it was free to choose which deductions it would try: I had no idea of the directions that it would take.

One day, as I was analyzing the results found by the second version of this system, I was surprised to see that it had found a proof of a theorem different from the proof that I knew, which was given in the logic manuals. It happened that, for proving theorem TA, it did not use another theorem TB, whereas TB was essential for the usual proof; the new proof was shorter and simpler. I tried to understand the reasons behind this success; I discovered that the system, left to itself, had behaved as if it had proven and used a meta-theorem (or theorem on the theory) that allowed to find the proof without using theorem TB: the system bypassed it. After this experiment, as Pégoud, I took over the controls, and I realized a third version of my system, which systematically imitated what I had observed: the system was now able to prove meta-theorems in addition to theorems. It could study the formulation of the theory, and not only using the derivation rules with the already found theorems. This new version had much better results: it proved more theorems, the demonstrations were more elegant, and they were found more quickly.

Since that experiment “à la Pégoud”, I am convinced that an AI system must be able to work at the meta-level if we want it to be both effective and general. In doing so, it can fly over the problems, and discover shortcuts or new methods: it is easier to find the exit of a labyrinth when one is above it.

Such discoveries are possible only when we let our systems free to choose what they will do. If we want to bootstrap AI, we have to be helped by new ideas coming from observations on their behavior, while we are parachuting down after leaving them alone.

A new science: Artificial Cognition

Many scientists in Cognitive Science study the cognition of living beings, human or animal ones. However, some capacities of artificial beings are completely different from those of the living ones. Therefore, a new science, Artificial Cognition, will have the task to examine the behavior of artificial beings.

For Cognitive Science, living beings exist; we want to understand the reasons behind their behavior, and their capacities in various situations. We want to know how they memorize, remember, solve problems, take decisions, and so on. We observe them, we use medical imaging to detect what parts of a brain are active when the subject perform a task. One also devises ingenuous experiments that will show how the subject manages to solve a problem cleverly chosen. Naturally, we only study behaviors that exist for at least one kind of living beings.

The situation is different for Artificial Cognition: the goal is to build artificial beings rather than to observe them. Normally, we write computer programs, or we give knowledge to existing systems, and we try to obtain an interesting behavior. For that we usually utilize ordinary computers, but we can also build specialized machines, and this will be probably more frequently the case in the future. Living beings depend on mechanisms created by evolution, which uses mainly a remarkable element, the neuron. They may have extraordinary capacities for adaptation: we can learn to build houses, to write books, to grow plants, etc. Unfortunately, we have also limitations: we cannot increase the size of our working memory to more than about 7 elements; we can only use auxiliary memories such that a paper sheet. They are useful, but not as efficient as our internal memory. We can no more increase the possibilities of our consciousness, many mechanisms of our brain will always be hidden when we are thinking. This is a very serious restriction: consciousness is essential for learning, for monitoring our actions, for finding the reason of our mistakes, and so on.

On the contrary, in Artificial Cognition, we are not restricted to the neuron, we can build the mechanisms that we have defined. This possibility does not exist in the usual Cognitive Science: nature has built the beings that we want to study. In Artificial Cognition, we put ourselves in the place of evolution, which worked during billions of years on zillions of subjects. It succeeded in creating living beings, often remarkably adapted to their background. However, nobody is particularly well adapted to the artificial environments that man created, such as solving mathematical problems, playing chess, managing a large company, etc. As we have invented many of these activities, we have chosen them so that we can have reasonable performance in these domains, using capacities that evolution gave us for different goals such as hunting game for food. At the start, when on tries to build a new system, we are inspired by our methods, such as they have been discovered by Cognitive Science scientists. In doing so, we are using only a small part of the possibilities of Artificial Cognition, we must also utilize all the possibilities of computers, even those that we cannot have. Artificial beings will have much better performances than us when they use not only all of our methods, but also many other methods that we cannot use. We are unable to use many useful methods because we have not enough neurons, because they are not wired in the necessary way; it may be also simply because our neurons have intrinsic limitations, for instance, they do not allow to load new knowledge in our brain easily. Perhaps, there are capacities that evolution did not give us either because they were not useful for our ancestors, or because there are jumps that evolution cannot make.

The methodology and the potentiality of the usual Cognitive Science and of Artificial Cognition are very different. We are not limited to the existing beings, but it is very difficult to build new beings. However, there is a strong tie between these two sciences: building an artificial being is defining a model. If it behaves as living beings do, this model will give an excellent description of the mechanisms that Cognitive Science wants to find. On the other hand, when we want to build an artificial being, the first thing to do is always to start with the implementation of the methods that are used by living beings. Nevertheless, we have to progress from this starting point, and we will arrive perhaps some day to build artificial beings that will be able to achieve tasks extremely difficult for us. For instance, we will see artificial beings capable of building other artificial beings more effective than themselves.