Computational Intelligence or Soft Computing is a field of computer science that deals with making computers process information in a way as similar as possible to this of humans. The human brain, being one of the most powerful information processors for its size, inspires research towards mimicking the way it works. Researchers in the field of computational intelligence try to understand the way the human brain processes information and produce software that uses such concepts.
The goal is to build machines that can acquire knowledge, build expertise, draw conclusions and make decisions without being preprogrammed to do so. The job of the programmer is to teach the computer a way to go about solving problems like humans do, and not to provide the necessary steps to solve a specific problem. The advantages of such an approach are numerous. Imagine a machine with the analytical skills of a human being, but with the accuracy and the number crunching speed and power of a machine. The answer to the question “Is it better to teach how to solve a problem or to teach the way to think when having to solve a problem?” is obvious.
An ideal “intelligent” machine may solve a variety of problems without having to be preprogrammed for these specific tasks. It may learn how to do something that it has not encountered before and it may store experience in a knowledge base for possible reuse. With the increasing accuracy and speed of today’s technology, the goals of computational intelligence continue to grow more optimistic and its applications also grow in number and complexity, though still very challenging. We are still very far away from emulating every part of the human brain and behavior with a machine, but the process is very intriguing and we benefit a lot in the way. The basic tools used in computational intelligence may be summarized in simple terms as follows:
- Expert Systems: Computer Software that emulates the process a human expert follows to solve a problem. For example, an expert system could be used for medical diagnosis. To build an expert system, one needs to represent the human expert's knowledge in software, and then provide a rule base that extracts conclusions based on the knowledge base and some specific input. The rule base usually consists of if-then rules.
- Fuzzy Logic: Fuzzy logic makes use of fuzzy set theory to represent concepts as sets with fuzzy boundaries. Instead of an element belonging or not belonging to a set, fuzzy set theory proposes a membership value of the element to the set. For example a specific element may belong 30% to one set, and 40% to a different set. The temperature of 70 degrees, for instance, may belong by 80% to the set of hot temperatures and by 20% to the set of mild temperatures, instead of being explicitly characterized as "hot" or "cold". This way we may express notions such as "The weather is very cold today" in terms that a computer program may process. We may also overcome problems such as defining what "hot" means, for example. If we say that all temperatures above 70 degrees are considered hot, then does this mean that a temperature of 69.999 is not hot, but 70 is? Crisp definitions like this are expressed more accurately in fuzzy logic terms. The concept of fuzzy logic makes it easier to represent real life expressions and human processing in computer software.
- Genetic Algorithms and Evolutionary Computation: These algorithms simulate the processes of evolution and natural selection. A problem is represented as a chromosome. This simply means that we provide some rules to encode the variables of a problem into artificial genes and some rules to decode a specific combination of genes into variables of the problem. Each different combination of genes in the chromosome, if interpreted using the rules we have set, results in a specific solution to our problem. Then, we create a pool of chromosomes that represent random solutions to our problem (these may be good or bad). These chromosomes are allowed to be combined in much the same way that chromosomes in humans get combined during mating. The algorithm evaluates the offspring, and the best offspring are kept in the next generation, while the suboptimal offspring die. This simulates the process of natural selection. The population of solutions to the problem keeps getting better, therefore reaching an optimum point in the problem’s search space. Evolutionary computation provides a convenient method of solving problems with chaotic search spaces, that the human brain simply cannot process. The beauty of evolutionary computation lies in that the machine, without human intervention or guidance and without specifying a solution process, will figure out a good solution to a problem, provided that one exists and that we have a way of encoding our problem in chromosome form and a way to evaluate candidate solutions.
- Artificial Neural Networks: As the name suggests, these are networks of artificial neurons, which simulate the processes observed in the neurons of a human brain. Artificial network nodes or neurons are programmed in software and the software simulates electronically the chemical reactions that occur in the brain during the thought process. A problem’s variables are fed into the network, which adjusts the values of the neurons continuously to reach an optimum point in the problem’s search space. Methods borrowed from psychology, like reward and punishment may be used to assist in the task of training a neural network to produce desirable solutions.