Posts Tagged ‘Artificial Intelligence’

Self improving AI software

Sunday, February 21st, 2010

In 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

AI Forward chaining

Tuesday, February 9th, 2010

In the last post I described a little about the backward chaining approach used in EarnestAI.  Today I wanted to say a bit about Forward Chaining.  Forward chaining is basically a lazy approach to finding an answer.  The system starts with a question to a known answer such as “Who created you?”

The system then presents a series of preset questions, for example “Do you mean who is my creator?”

The user answers Yes, and the system then moves onto the next question.  When all the questions are complete, the system then compares the answers against a set of stored solutions and decides which solution is best defined by the answers given.

Its a very accurate process in reality, but can also be confusing and irritating for the user.  The best example I have seen to demonstrate this is “Are you male?” Yes,  “Are you pregnant?”, No, “Are you female?”

You get the picture, the system has little or no understanding of the questions it poses, and the onus is on the knowledge engineer to devise the question structure so as to be as unconfusing as possible.

The forward chaining method in its simplest for is both highly accurate, highly irritating and also unable to branch to different lines of questionsing.

It is my hope to refine this approach in EarnestAI to allow a sort of hybrid FWD Chaining.  Basically, I am testing the concept of using a BAckward chaining algorithm that is executed after every answer.  The results will look forward to possibly proved solutions and then switch the path of questioning to a more realistic route.  For instance, if Earnest asks, “does it have 4 legs”, he will look forward to all solutions proved true by this question and then remove questions in the current question path that no longer relate to 4 legged animals.

Initial tests are good, but there are ome risks involved because once again, we are leaving it to the “heuristic reasoning” capability of the backward chaining engine to not ommit important questions.

Oh well, hope that you enjoyed the post.

by for now

Scot