Expert System

What is an Expert System?
ESs are computer programs that emulate the reasoning process of a human expert or perform in an expert manner in a domain for which no human expert exists. Typically they reason with uncertain and imprecise information. Knowledge they embody is often not exact, in the same way that a human's knowledge is imperfect. The facts - or user supplied information - are also uncertain.
ESs have modeled uncertainty and imprecision in various ways: certainty factors (that MYCIN associates to rules and user input), most significant results of tests (CASENET), probabilistic inference networks (which have a rigorous underlying theory; in this case knowledge is represented in a network where the nodes are states in the domain's universe of discourse and the links are conditional probabilities), belief intervals etc.

A close examination of the trends in ESs development shows that ESs have evolved mainly into fuzzy ESs and hybrid systems. As opposed to the probabilistic approaches fuzzy mathematics offer a more intuitive mapping to real world problems, to daily concepts; for example stating that X is tall is easily represented in fuzzy set theory by denoting a set `tall' and associating with it a membership function; in a probabilistic approach one should assign a probability distribution function for the feature of `height', which is a rather out of hand approach. However use of fuzzy theory does not eliminate the other possibilities: we could, for example have a fuzzy rule-based ES, with certainty factors attached to each rule (factors obtained using statistical data, for example)
The most successful examples of dealing with imprecision come from the field of fuzzy control. The next diagram illustrates the core of a fuzzy expert system:

The system's inputs go through a fuzzifier. The inference engine works with attribute values, which have fuzzy memberships attached. They may be created from real-valued attributes which have been partitioned into individual fuzzy sets. The inference engine provides a fuzzy output which may need to be defuzzified. Certainly, in control domain the output must be defuzzified so that there is a single, well defined control action taken.