OMG! well not quite but last night saw the first real interesting breakthrough of EarnestAI as the latest version of lib_inference successfully deduced that an Ostrich lives in Austrailia!!! Whats so great you say? Well the great thing is that this is the beinings of Ernies heuristic reasoning capability actually working to produce an answer to something that he had not heard the question to before…..
Enter Deep Thinking, well OK its not deep blue in actual fact it is more BAckward Chaining but here is the idea:
Basic Expert System
An Expert System in its most basic form allows an expert in the chosen field to “teach” the system a series of leading questions that are carefully crafted to lead the user to a solution to their problem. Along the way the expert may add further detail to the question or consultation process and the Expert System will be able to add this new knowledge to its “Knowledgebase” to improve the accuracy of its results.
This is great, and over the coming weeks I will be breaking down Expert System design methods into their various pros and cons and explaining them in greater detail. I guess you can already see however that in order to arrive at a solution the questions must already have been answered and a solution related to the problem question in hand. This means that whilst a basic Expert System may find a solution and impress the end user, it will fail to impress the expert for it can not deduce anything more than they already have imparted to it.
However Earnest is a project to try and break these limits of Question and Answer consultation and try and derive a system capable of making deductions based on past consultations and expert knowledge.
Yesterday Ernie took the first steps to this. One of the first things I begn to teach Ernie was about animals. He would try happily to guess the animal that you are thinking of by asking key questions. The question process is long and sometimes laborious but for the animals he knows about, he usually finds the right answer. A fun game but soon lack lustre. The latest version of Ernies lib_inference has introduced “heuristic reasoning”.
Instant descisions
Heuristic reasoning allows Ernie to make instant descisions without asking you any questions at all. You ask him and he tells you the answer all on his own. Now in previous versions you had to begin the consultation by searching the problem database for problems for which there were known answers. Like “What animal am i thinking of?” etc. He would then ask “Does it have 2 legs?”, “Does it make a barking noise?”, “Does it have wings?” etc, a yes to Q1 and Q3 would probably lead to the answer “its a bird”.
What however if we want to ask him a question that he does not know the answer to? Well V1 allows you to teach him the problem and wha questions to ask. Is that enough? NO! That would mean that in order to find a solution to an unkown question the user would also have to be the expert. Useful but not much.
Heuristic reasoning within Ernies inference engine allows Ernie to consult himself. For example: “How many legs does a bird have?” This question is not recorded in Ernies knowledgebase but he can answer the question with accuracy. How? By looking to known solutions and backtracing to questions nd conditions that he knows to be true about the subject. In the bird case, he will look at the solution “Its a bird” and deduce that in order for this to be true the following conditions must be met: “Its has wings”, “It has 2 legs”.
Heuristics then allow Ernie to study the questons that make these qualifications thus breaking down the question : How many legs does a bird have? we see “Legs” “Bird”. The question “Does it have 2 legs” is a TRUE boolean condition of “Its a Bird” and thus Ernie is able to extract the question and reformat it to answer the question : “I believe a bird has 2 legs”….
Simple? Wel kind of, the V.03 of lib_inference is fairly rudimentary but I will keep refining it.
Well I have to go, hopefully more blogging tomorrow.