An Expert System is a class of computer program that can advise, analyse, categorise, communicate, consult, design, diagnose, explain, explore, forecast, form concepts, identify, interpret, justify, learn, manage, monitor, plan, present, retrieve, schedule, test or tutor.
They address problems normally thought to require human specialist for their solution. - Edward Feigenbaum
Expert systems, like human experts, are experts only in their field and as such are highly domain specific. Unlike human experts, once set up they need not be expensive, they can be easily and cheaply replicated and they do not grow old and start making errors
We shall examine production rule based expert systems. In addition to the production rule base, the expert system must give a helpful user interface, a facility for the user to question the program, a technique of learning from experience and an ability to give a reasoned explanation for conclusions that have been reached.
The main block difference from the production system is the introduction of the user interface which is some graphical or text based system that allows communication between the user and the system. The interface should allow the system to question the user in a easy to understand fashion and allow the user to enter responses in a similarly simple fashion. At any point, the user should be able to query the system as to why it is asking a particular question and the system respond with a reasoned account of its actions.
Once the system has concluded its enquiries, it should be able to present its results in a meaningful way. If the information it is dealing with is not certain but probabilistic it should present a range of possible answers with the likelihood of each alongside.
With the answers before them, the user should be allowed to query the system as to how it came to the conclusions it reached and the system reply with an account of the steps taken to reach the results.
On the technical side, there is the problem of the size of the database and using it efficiently. If the system consists of several thousand rules, it takes a very powerful control program to produce any conclusions in a reasonable amount of time. If the system also has a large quantity of information in the working memory, this will also slow things down unless you have a very good indexing and search system.
A second problem that comes from a large database is that as the number of rules increases the conflict set also becomes large so a good conflict resolving algorithm is needed if the system is to be usable.
Another problem that appears is that of responsibility. Take, for example, a system used by a doctor that is designed to administer drugs to patients according to their needs and that it must first determine what is wrong with them, very much like the prescribing work of a GP. If the system causes someone to take the wrong medicine and the person is harmed, who is legally responsible? Some would say the health authority who allowed the doctor to use the system, others would say the doctor, others the suppliers of the Expert System. A problem is produced that is not at all a trivial one. Think about the implications of using Expert Systems in other scenarios.
A more obvious problem is that of gathering the rules. Human experts are expensive and are not extremely likely to want to sit down and write out a large number of rules as to how they come to their conclusions. More to the point, they may not be able to. Although they will usually follow a logical path to their conclusions, putting these into a set of IF ... THEN rules may actually be very difficult and maybe impossible.
It is quite possible that many human experts, though starting off in their professions with a set of rules, learn to do their job through experiential knowledge and 'just know' what the correct solution is. Again they may have followed a logical path, but mentally they may have 'skipped some steps' along the way to get there. An Expert System cannot do this and needs to know the rules very clearly.
What may be a way round this problem is to enable Expert Systems to learn as they go, starting off with a smaller number of rules but given the ability to deduce new rules from what they know and what they 'experience'. This leads us very nicely into the field of Computer Learning.