Breathe intelligence into Java

Making AI work in your Java programs is easier than you think

1 2 Page 2
Page 2 of 2

For the security training set, the classification consists of two states: valid user or a fraud. With respect to the training set there are four outcomes:

  • Positive: The credential owner presented the credentials and was validated positively
  • Negative: An imposter presented the credentials and was challenged to supply a second level of authentication
  • False negative: The credential owner presented the credentials but was also challenged to supply a second level of authentication
  • False positive: An imposter presented the credentials and was granted access unchallenged

Evolving imposters

In my application, I will use a large training set, some of it machine-generated, and I will retrain as the environment itself changes. Retraining means taking new training data, and rerunning the GA according to the psuedo code above.

I will define fitness as having zero occurrences of "false positive" and not more than 10 percent of "false negative." The initial training set will allow me to create an Evolved Authenticator (EA). My genetic algorithm will produce a Java instance of an EA that is serializable and embodies the evolution required to meet the fitness goals set out. The code to generate such an instance will follow the same pattern as the code shown above. The psuedo code for such an algorithm is under the subhead "Genetic Algorithms."

As time goes by, I expect to see EA fail as imposters themselves evolve. The forensic hypothesis is that an imposter is different than the credential owner. Therefore, a different digital fingerprint exists. Retraining EA requires it to evolve to discriminate new variables in the new environment. EA will never be perfect. But, it will be a far better approach than blindly admitting the imposter into the financial system, which more than 95 percent of all Web apps do today. It irks me that I can use my fiancé's credentials at any time, at any place, and on any device without being challenged.

Evolving the JDK

The JDK needs a robust and clean GP package implemented as a set of interfaces, allowing pluggable implementations of genetic programming. I would propose that Sun bring in Dr. Koza, or someone with his level of experience, as an expert technical adviser. Using existing Java introspection, it is clear how to implement the components of genetic programming. The components specified in

Genetic Programming III

are automatically defined iterations, loops, recursion, and storage coupled with architecture-altering operations on methods and program hierarchies.

Dr. Koza and his associates created the Genetic Progamming Problem Solver (GPPS), a software library that works to evolve parts of programs -- namely methods, instance variables, loops, and iterators. This is amply demonstrated in Genetic Programming, now in its second release. Sun would be wise to license GPPS and use it as the first implementation of the GP interface package. As it stands today, JDK is not the best of breed for genetic programming.

Lane Sharman has filed two software patents for finance and security, holds a degree in mathematics, and has been a practicing software engineer for 23 years. He is the CEO of Acctiva, creating a new Internet-based platform for business settlement, funds transfer, and financing.

Learn more about this topic

  • Technical Resources and FAQs:
  • Software Resources:
  • Related Books:
  • JavaWorld Resources:

1 2 Page 2
Page 2 of 2