Breathe intelligence into Java
Making AI work in your Java programs is easier than you think
By Lane W. Sharman, JavaWorld.com, 04/06/01
- Digg
- Reddit
- SlashDot
- Stumble
- del.icio.us
- Technorati
- dzone
Evolutionary computation is crucial for the next generation of applications. Evolutionary computation is software that adds
and removes methods, parameters, and iterators, as well as generally modifies the elements of an algorithm in response to
a fitness test: Did algorithm i yield a better fitness result than algorithm j, where fitness is time, distance, or some other
value measure? The field of evolutionary computation, while shrouded in academia, provides the gateway for writing smart,
adaptive, and self-evolving Java applications. Sadly, Sun Microsystems has invested thousands of man-hours in APIs related
to dashboard technology and has yet to show a serious initiative for bringing artificial intelligence (AI) into the Java mainstream.
Support for such an effort would make for a tremendous step in the advancement of Java computing.
For now, I will examine the basic concepts, look at the wealth of resources, and show how I am developing a Java component
in the area of security and authentication using AI technology. Making AI work in your Java programs is easier than you think.
Terminology and concepts
The framework for developing an intelligent Java component requires the application of key concepts and discerning the branches
of AI:
Statement of problem
Most important, an evolved component does something intelligently. The statement of what it does, not how it does it, is the
important part. In 1959 Arthur Samuel asked, "How can computers be made to do what needs to be done, without being told exactly
how to do it." Establishing the tableau, "what needs to be done" is shared between the domain expert and the engineer; for
example, "find all schedules that get the project done in less than n months without exceeding cost X using human resources
Y and machines Z." Another example, germane to the subject of this article, "find all users who have stolen the credential
of a valid user within an error rate of 10 percent."
Fitness
You will require a fitness measure for your intelligent component. There must be some standard; for example, your component
must have authentication errors fewer than 0.1 percent, mean time between failure (MTBF) greater than 90 days, least amount
of time, lowest cost, shortest distance, and so forth.
Training set
You should employ a training set with known values to test the fitness of your Java component. Training sets are data sets
that measure known fitness against a specific instance of an algorithm undergoing evolution. The program evolves against the
fitness tests where each generation of solutions improves over time (milliseconds not eons).
The training set then provides the right answers for a given individual Java instance. If the instance is wrong for many of
the training set elements, it is less likely to be combined with other instances into the next generation.
A training set is sometimes provided as part of the fitness test but not always. For example, for an algorithm to evolve,
it may need an external training set to check its results. For classification components, the training set tells the fitness
evaluator if the classification was right or wrong.
- Digg
- Reddit
- SlashDot
- Stumble
- del.icio.us
- Technorati
- dzone
Resources
- Technical Resources and FAQs:
- Genetic Programming IIIDarwinian Invention and Problem Solving, John R. Koza, Forrest H. Bennett III, Forrest H. Bennett, Martin Keane, David Andre (Morgan Kaufmann Publishers, March 15,
1999; ISBN1558605436)
http://www.amazon.com/exec/obidos/ASIN/1558605436/javaworld
- Practical Genetic Algorithms, Randy L. Haupt, Sue Ellen Haupt (John Wiley & Sons, January 1998; ISBN0471188735)
http://www.amazon.com/exec/obidos/ASIN/0471188735/javaworld
- Genetic ProgrammingAn IntroductionOn the Automatic Evolution of Computer Programs and Its Applications, Wolfgang Banzhaf, Peter Nordin, Robert E. Keller, Frank D. Francone (Morgan Kaufmann Publishers, January 1998; ISBN155860510X)
http://www.amazon.com/exec/obidos/ASIN/155860510X/javaworld
- Java Algorithms, Scott Robert Ladd (McGraw-Hill Professional Publishing, December 22, 1997; ISBN0079136966) contains an excellent treatment
of finite state machine evolution in Chapter 7
http://www.amazon.com/exec/obidos/ASIN/0079136966/javaworld
- Neural NetworksA Comprehensive Foundation, Simon S. Haykin (Prentice Hall, July 1998; ISBN0139083855) Neural networks presume that the problem is solvable by a neural
net; if this is true, then this book is an excellent primer on how to code one up
http://www.amazon.com/exec/obidos/ASIN/0139083855/javaworld
- Data MiningPractical Machine Learning Tools and Techniques with Java Implementations, Ian H. Witten, Eibe Frank (Morgan Kaufmann Publishers, October 13, 1999; ISBN1558605525) -- from the folks who brought you
the Weka project
http://www.amazon.com/exec/obidos/ASIN/1558605525/javaworld