



 |
Most of the topics found under the banner of Artificial Intelligence
still fall solely in the realm of academic research. Neural networks, genetic
algorithms and fuzzy logic all show "potential" in solving real-world
problems, but there are scant examples of these advanced topics in computer
science actually being used in production environments.
The reasons for this lack of real-world development have been around since
the advent of the term Artificial Intelligence. AI solutions are complicated and
expensive, often requiring either human experts in a problem domain or very
sophisticated programmers, in the case of neural nets and genetic algorithms.
Furthermore, there's no guarantee that an approach will always give
"good-enough" answers for all input sets, since not all possible
inputs can be tested. Would you trust a "black box" neural net to
provide the correct safeguards for a nuclear power plant in all cases? Most
people would sound a resounding no to such a question.
Classical AI, also commonly referred to as expert systems, have some famous
disastrous examples from industry. I recall a story from VMS, in which they had
a very sophisticated AI program for putting together hardware/software platforms
for clients. This program grew so unwieldy and unmaintainable that VMS was
actually shipping out completely unusable configurations that could easily be
identified through a simple checklist. Horror stories like these have set back
commercial applications of AI many years, I'm sure!
Still, newer topics in AI, like neural networks and genetic algorithms, show
promise in industry applications. Neural nets do not specify a precise output
for each input set at development time. Rather, they try to "learn"
mappings from inputs to outputs explicitly via a set of training inputs/outputs.
Then, they use these mappings to extrapolate outputs for inputs not yet
encountered. In many cases, the mappings learned by the neural nets provide
reasonable outputs for "new" inputs. Note, however, that I didn't say
all cases, which is one of the inherent problems with neural nets. Even if they
perform flawlessly for 99.9% of the input domain, there's still that 0.1% of
inputs that could cause problems.
Genetic algorithms (GA's) attempt to simulate natural selection in improving
the mappings from inputs to outputs. Generally, the programmer defines a
"performance function" that takes a set of inputs and a set of
internal parameters. For example, the internal parameters could represent the
learned mappings of a neural net. Then, the internal parameters are used to map
the inputs to a set of outputs. This is done with several instances of internal
parameters. The outputs are then compared to identify "better" output
sets. The internal parameter sets that produced the highest-rated output sets
are selected by the genetic algorithm, and the parameters are mutated, switched
and changed according to a series of genetic "rules." A new population
of internal parameters arise, and these are retested in the performance
function. Thus, over time, the internal parameter sets will improve to produce
better output sets. Of course, the problem with this approach is that the
internal parameter sets are limited by the performance function: if the
performance function is deficient or incomplete, so too will the parameter sets
be limited.
The interesting detail in genetic algorithms and neural nets is that the
transformation function from inputs to outputs is never explicitly declared.
Rather, the neural net or GA implicitly defines an internal mapping by altering
its own internal parameters. This is very similar to how a human brain works:
individual neurons fire in response to stimuli, and suddenly a series of
individual retinal inputs are transformed into the visual perception of a ball,
for example.
Despite the lack of real-world AI applications, the entire field of AI is
gaining credibility. I expect more and more commercial applications to use AI,
especially the machine learning algorithms, in the coming years.
|