I like the definition of and expert system found in Wikipedia. Paraphrasing, they define an expert system as software that attempts to reproduce the performance of one or more human experts in a specific problem domain, and that they are an example of a traditional application artificial intelligence.
Traditional computer programs are programmed to explicitly solve a specific problem or perform a specific task. They have the end in sight before they begin. Expert systems, on the other hand, don’t have a specific end in sight. They process data based upon an experts rules and experiences and then draw a conclusion through a generalized process. In other words, they don’t know what the answer is going to be because they don’t know what the data is they are going to be presented with and how it will vary from one question to the next.
A wide variety of methods can be used to simulate the performance of the expert however common elements include 1) the creation of a so-called "knowledgebase" that captures in some form or another the Human Experts knowledge and 2) a process of gathering that knowledge from human experts and codifying within the knowledgebase and 3) an inference engine to analyze a set of conditions and then draw conclusions based upon the expert knowledge contained in the knowledgebase, and 4) the ability to explain the reasoning that went into a decision, conclusion or recommendation.
To be an aid to humans’ expert systems need to be able to process incomplete and even inconsistent information, in other words, expert systems have to be able to reason in the face of uncertainty.
Expert systems may or may not have learning components but this is certainly an interest we have here at KnowledgeScape. Sometime in the future I’ll write about our approach to adapting an expert system once it has be designed and put into practice.