Definition: The Field of Artificial Intelligence
By ai-depot | June 30, 2002
Representation
Most problems in Artificial Intelligence are solved by algorithms, which need to be given information in a way they understand. This information represents the problem, whatever it may be: a simple virtual world, a collection of pictures, a list of paths between cities. Much of the performance of the algorithm, and therefore the quality of the results, depends directly on the representation chosen and how this information is passed to it. A lot of researchers have worked on such issues, and are still thinking about new potential solutions.
Symbolic
A symbolic representation means that each item or concept of the problem is represented as a symbol. For example, if my problem contained an animal, he might be represented as the symbol cat, snake or hippopotamus. You can also declare simple truths about these symbols, using first order predicate logic (i.e. statements that give information about symbols).
mammal(cat).
reptile(snake).
legs(cat,4).
legs(snake,0).
The statements mentioned are assumed to be true, and using a closed world assumption (i.e. the problem is finite and we know about it all), the statements not mentioned are assumed to be false.
The main advantage of this scheme is simplicity, since the algorithms work with straightforward symbols, of which there aren’t usually very many. Also note that the numbers in the predicates are symbols too. In fact it can be surprisingly tedious to solve simple arithmetic problems with such statements. This type of programming is known as declarative programming, and specifically Prolog in the examples above.
More complex predicates exist, namely statements that give information about statements. These are called high-order functions, and can be defined as part applications of other functions. It all gets very tricky, although it generally remains very effortless: very complex programs can take about 10 lines in languages such as Haskell. This is known as functional programming.
In the early days, A.I. started with such symbolic representations of problems. Languages such as LISP were created specially for this. At the time, the precious memory meant that such simple representations were needed for programs to work at all. Today, research in this area continues, notably in attempts to merge functional programming and declarative programming in an elegant fashion. This is something to lookout for, as it will hopefully revive interest in this field, and increase its potential.
Fuzzy
By definition, fuzzy representations are not very clear! Unlike with symbols, the information is vague and imprecise. This usually means that probabilities are used to express truths, and simple operators are needed to combine them:
“80% of the people who read this page and the introduction will read the next page”
The field dealing with such statements is called Fuzzy Logic. It is understandably slightly more challenging to extract meaningful information from such statements, and more elaborate techniques are required (see Dempster-Shafer Theory and Bayesian Networks).
Another type of fuzzy information is stored in the famous Neural Networks. This is known as a neuro-fuzziness. The information inside an artificial neural network is usually imprecise, due to the weighted connection between neurons (called synapses).
Fuzzy representations have increased in popularity, due to the increased capabilities of computers: more processing power is usually required to create such rules, and interpreting them generally also requires a bit more time. The preferred languages for this type of representation are usually procedural like C, C++ or Pascal.
Implicit
Implicit representations do not store the information directly. You need a simple algorithm to extract the information from the representation. This implies that very big chunks of information can be stored in a very compact fashion. Think of humans for example, given the DNA or a single person, you can build an entire body: a complex process called growth. In practice, you can for example build a full-size neural network based on simple rules.
The process is important enough to warrant its own new terminology, but the following definitions can also be used in other cases. The encoded representation of the information is called genotype, and once decoded this forms a phenotype. The structure (i.e. not the information, just the outline) of the representation is called the genome - like for human DNA, and the structure of the decoded information is called phenome.
Ways of decoding the information include cellular automata (a very simple process is applied repeatedly to a short binary string - lots of 0’s and 1’s), grammar based (a set of rules is applied to existing symbols) or procedural (where the decoding method is also partly encoded in the representation!). Generally, the algorithms do not know what the information is when they create the representation: i.e. the genotypes are created and optimised blindly, the phenotypes are only used to evaluate the quality of the solution. This is partly due to the fact that mappings from complex phenotypes to implicit genotypes are fairly rare.
As you can understand, it takes a bit of effort to extract the information from the representation, which is why this technique has started to grow in popularity: the processing power is available for such costly operations. It also takes time to optimise the genotype, using techniques such as genetic algorithms.
Tags: none
Category: essay |