FREE online courses on Expert Systems - Expert Systems
Expert systems are computer applications, which embody some
non-algorithmic expertise for solving certain types of problems. For example,
expert systems are used in diagnostic applications servicing both people and
machinery. They also play chess, make financial planning decisions, configure
computers, monitor real time systems, underwrite insurance policies, and perform
many other services, which previously required human expertise.
Figure 1.1:
Expert system components and human interfaces
Expert systems have a number of major system components and
interface with individuals in various roles. These are illustrated in figure
1.1. The major components are:
Knowledge base - a declarative representation of the
expertise, often in IF THEN rules;
Working storage - the data which is specific to a problem
being solved;
Inference engine - the code at the core of the system which
derives recommendations from the knowledge base and problem-specific data in
working storage;
User interface - the code that controls the dialog between
the user and the system.
To understand expert system design, it is also necessary to
understand the major roles of individuals who interact with the system. These
are:
Domain expert - the individual or individuals who currently
are experts solving the problems the system is intended to solve;
Knowledge engineer - the individual who encodes the expert's
knowledge in a declarative form that can be used by the expert system;
User - the individual who will be consulting with the system
to get advice which would have been provided by the expert.
Many expert systems are built with products called expert
system shells. The shell is a piece of software which contains the user
interface, a format for declarative knowledge in the knowledge base, and an
inference engine. The knowledge engineer uses the shell to build a system for a
particular problem domain.
Expert systems are also built with shells that are custom
developed for particular applications. In this case there is another key
individual:
System engineer - the individual who builds the user
interface, designs the declarative format of the knowledge base, and implements
the inference engine.
Depending on the size of the project, the knowledge engineer
and the system engineer might be the same person. For a custom built system, the
design of the format of the knowledge base, and the coding of the domain
knowledge are closely related. The format has a significant effect on the coding
of the knowledge.
One of the major bottlenecks in building expert systems is
the knowledge engineering process. The coding of the expertise into the
declarative rule format can be a difficult and tedious task. One major advantage
of a customized shell is that the format of the knowledge base can be designed
to facilitate the knowledge engineering process.
The objective of this design process is to reduce the
semantic gap. Semantic gap refers to the difference between the natural
representation of some knowledge and the programmatic representation of that
knowledge. For example, compare the semantic gap between a mathematical formula
and its representation in both assembler and FORTRAN. FORTRAN code (for
formulas) has a smaller semantic gap and is therefore easier to work with.
Since the major bottleneck in expert system development is
the building of the knowledge base, it stands to reason that the semantic gap
between the expert's representation of the knowledge and the representation in
the knowledge base should be minimized. With a customized system, the system
engineer can implement a knowledge base whose structures are as close as
possible to those used by the domain expert.
This course concentrates primarily on the techniques used by
the system engineer and knowledge engineer to design customized systems. It
explains the various types of inference engines and knowledge bases that can be
designed, and how to build and use them. It tells how they can be mixed together
for some problems, and customized to meet the needs of a given application.