Self improving AI software
February 21st, 2010In this article, how Aritificial Intelligence or AI software might be developed so that it can self modify and improve.
Hi again,
It’s been a while since I blogged about EarnestAI. I have been fairly busy since the last V1.00.12 release mainly playing with making client applications that use Earnie to solve problems.
You may have noticed a new method of problem solving available in EarnestAI, that of ACI. One of the flaws currently with Earnies ACI (Advance Considerative Intelligence), it that it only goes to one level of regression. By this I mean that if ACI is enabled then sometimes there occurs a situation in which two solutions are 100% possible but the next question fails to clarify the answer. Henceforth, Earnies ACI then proceeds to once again go to the exhaustive approach to solve the problem conclusively.
Choosing a level of regression
It is important to consider the level of regression required to solve a problem in an Artificial Intelligent Software system as usually system resources are finite. There needs to be a method by which we decide that a question is “sufficiently” answered. However this is seldom down to one single factor. We can ask the program for a particular level of accuracy, or we can ask the program to a particular level of performance, “OR” we could let the software decide itself based upon its own intution. One thing is certain, deep levels of regression will reduce performance, but not always at to the benefit of the answer. This means roughly that there comes a time in the consultation that the system will not be able to predict the answer with any more accuracy regardless of the number questions asked. This cap is created by limited knowledge base.
How EarnestAI may address this problem
By enabling verbose output on the aci function I was able to see inside Earnies thinking process and begin to see the dilemma. It becomes clear that Ernie is indeed capable of making a very accurate descision based on the facts he has been given so far but is sometimes unable to solve the problem at this stage of execution. How can this be solved? Well, I think the answer is this: If a situation occurs where 2 solutions become true. We need to allow the software to perform a “negative” reasoning on what has been learned so far and decide what has not been learned. This translates to looking only for solutions that DO NOT rule out the answers given and only then going on to ask further questions. In fact, sometimes asking more questions will only serve to dilute the certaintity factor of a particular answer being true, even though it may indeed be 100% the correct answer. The key thing here is the “factor of 2″ . Such a situation in which only 2 answer can possibly be correct, we need only ask a question that will rule out one possibility and we have our best answer. At this point consultation can safely stop and the limit of knowlede in the subject has been reached.
In effect, by looking forward to the next question(s) or rule(s) in the non aci sense, and precomputing if this rule or rules(s) TRUE or FALSE will ever appear in a solution in which the current know facts appear, one can easily establish if there is a need for further questioning. Hence the software has decided the best algorithm possible (within its own ability) with which to solve the problem and may decide it has enough facts to venture a conclusion. Invariably this will be the correct answer as long as the data is accurate and available.
An interesting side effect of this is one that may be utilized later to good effect. Having a storage of all known inputs and knowing the number of steps required to solve the problem. The software can at a later stage “select” an algorithm based upon its efficiency. It may even be able to recurse its own solutions and re-compute previous solutions in order to find a faster method of solving the problem for a later stage. This form of synthesized “Self study” can be implemented during down time or low program usage to reduce the impact on overall performance. A form of “Cyber Sleep” :-).
Not sure whats next so until then thanks for reading
