In artificial intelligence, an expert system is a computer system emulating the decision-making ability of a human expert. Expert systems are designed to solve complex problems by reasoning through bodies of knowledge, represented mainly as if–then rules rather than procedural code.
The first expert systems were created in the 1970s and then proliferated in the 1980s.
Expert systems were among the first truly successful forms of artificial intelligence (AI) software. An expert system is divided into two subsystems: the inference engine and the knowledge base. The knowledge base represents facts and rules. The inference engine applies the rules to the known facts to deduce new facts. Inference engines can also include explanation and debugging abilities.
The goal of knowledge-based systems is to make the critical information required for the system to work explicit rather than implicit. In a traditional computer program the logic is embedded in code that can typically only be reviewed by an IT specialist. With an expert system the goal was to specify the rules in a format that was intuitive and easily understood, reviewed, and even edited by domain experts rather than IT experts. The benefits of this explicit knowledge representation were rapid development and ease of maintenance.
Although great strides have been made in expediting the process of developing an expert system, it often remains an extremely time-consuming task. It may be possible for one or two people to develop a small expert system in a few months; however, the development of a sophisticated system may require a team of several people working together for more than a year.
An expert system typically is developed and refined over a period of several years. We can divide the process of expert system development into five distinct stages. In practice, it may not be possible to break down the expert system development cycle precisely. However, an examination of these five stages may serve to provide us with some insight into the ways in which expert systems are developed.
Not only is each stage in the expert system development process circular, the relationships among the stages may be circular as well. Since each stage of the development process adds a level of detail to the previous stage, any stage may expose a weakness in a previous stage. A knowledge engineer is an AI specialist, who is skilled in the ‘Art’ of developing expert systems.
A domain expert is an individual who has significant expertise in the domain of the expert system being developed. It is not critical that the domain expert understand AI or expert systems; that is one of the functions of the knowledge engineer. The knowledge engineer and the domain expert usually work very closely together for long periods of time throughout the several stages of the development process.
Before we can begin to develop an expert system, it is important that we describe, with as much precision as possible, the problem that the system is intended to solve. It is not enough simply to feel that the system would be helpful in a certain situation, we must determine the exact nature of the problem and state the precise goals that indicate exactly how we expect the expert system to contribute to the solution.
To begin, the knowledge engineer, who may be unfamiliar with this particular domain, consults manuals and training guides to gain some familiarity with the subject. Then the domain expert describes several typical problem states. The knowledge engineer attempts to extract fundamental concepts from the similar cases in order to develop a more general idea of the purpose of the expert system.
After the domain expert describes several cases, the knowledge engineer develops a ‘first-pass’ problem description. Typically, the domain expert may feel that the description does not entirely represent the problem. The domain expert then suggests changes to the description and provides the knowledge engineer with additional examples to illustrate further the problem’s fine points.
Next, the knowledge engineer revises the description, and the domain expert suggests further changes. This process is repeated until the domain expert is satisfied that the knowledge engineer understands the problems and until both are satisfied that the description adequately portrays the problem which the expert system is expected to solve.
This ‘iterative’ procedure is typical of the entire expert-system development process. The results are evaluated at each stage of the process and compared to the expectations. If the results do not meet the expectations, adjustments are made to that stage of the process, and the new results are evaluated. The process continues until satisfactory results are achieved.
It is also important to identify our resources. Who is to participate in the development process? Does a single domain expert possess all the necessary expertise, or is the domain knowledge distributed over several people in an organisation? Can a single knowledge engineer develop the system in a timely fashion, or is it necessary to provide additional technical assistance?
Domain experts are not the only resources which must be identified. It is unusual for all domain knowledge to be embodied in human experts; therefore, more tangible sources of information, such as reference books and manuals, are usually identical and located.
Once we have formally identified the problem that an expert system is to solve, the next stage involves analysing the problem further to ensure that its specifics, as well as it generalities, are understood. In the conceptualisation stage, the knowledge engineer frequently creates a diagram of the problem to depict graphically the relationships between the objects and processes in the problem domain.
It is often helpful at this stage to divide the problem into a series of sub-problems and to diagram both the relationships among the pieces of each sub-problem and the relationships among the various sub-problems.
As in the identification stage, the conceptualisation stage involves a circular procedure of iteration and reiteration between the knowledge engineer and the domain expert. When both agree that the key concepts-and the relationships among them-have been adequately conceptualised, this stage is complete.
In the preceding stages, no effort has been made to relate the domain problem to the artificial intelligence technology that may solve it. During the identification and the conceptualization stages, the focus is entirely on understanding the problem.
Now, during the formalisation stage, the problem is connected to its proposed solution, an expert system, by analysing the relationships depicted in the conceptualization stage.
During formalisation, it is important that the knowledge engineer be familiar with the following:
Often it is desirable to select a single development technique or tool which can be used throughout all segments of the expert system. However, the knowledge engineer may determine that no particular technique is appropriate for the entire expert system, making it necessary to use different techniques for different sub-problems. Once it has been determined which technique(s) will be used the knowledge engineer starts to develop a formal specification which can used to develop a prototype expert system.
In the case of a rule-based system, for example, the knowledge engineer develops a set of rules designed to represent the knowledge communicated by the domain expert. This is a critical part of the development process, requiring, great skill on the part-of the knowledge engineer. Many domain experts can explain what they do but not why; therefore, one of the knowledge engineer’s primary responsibilities is to analyse example situations and filter in from those examples a set of rules which describe the domain expert’s knowledge.
The formalisation process is often the most interactive stage of expert system development, as well as the most time consuming. The knowledge engineer must develop a set of rules and ask the domain expert if those rules adequately represent the expert’s knowledge. The domain expert reviews the rules proposed by the knowledge engineer and suggests changes, which are then incorporated into the knowledge base by the knowledge engineer.
As in the other development stages, this process also is iterative: the rule review is repeated and the rules are refined continually until the results are satisfactory. It is not unusual for the formalisation process of a complex expert system to last for several years.
During the implementation stage, the formalised concepts are programmed onto the computer that has been chosen for system development, using the predetermined techniques and tools to implement a “first pass” prototype of the expert system.
Theoretically, if the methods of the previous stage have been followed with diligence and care, the implementation of the prototype should be as much an art as it is a science because following all rules does not guarantee that the system will work the first time it is implemented. In fact, experience suggests the opposite. Many scientists actually consider the prototype to be a ‘throw-away’ system, useful for evaluating progress but hardly a usable expert system.
If the prototype works at all, the knowledge engineer may be able to determine if the techniques chosen to implement the expert system were the appropriate ones. On the other hand, the knowledge engineer may discover that the chosen techniques simply cannot be implemented. It may not be possible, for example, to integrate the knowledge representation techniques selected for different sub-problems. At that point, the concepts may have to be re-formalised, or it even may be necessary to create new development tools to implement the system efficiently.
Once the prototype system has been refined sufficiently to allow it to be executed, the expert system is ready to be tested thoroughly to ensure that it expertise’s correctly.
Testing provides opportunities to identify the weakness in the structure and implementation of the system and to make the appropriate corrections.
The chance of prototype expert system executing flawlessly the first time it is tested are so slim as to be virtually non-existent. A knowledge engineer does not expect the testing process to verify that the system has been constructed entirely correctly. Rather, testing provides an opportunity to identify the weaknesses in the structure and implementation of the system and to make the appropriate corrections.
Depending on the types of problems encountered, the testing procedure may indicate that the system was implemented incorrectly, or perhaps that the rules were implemented correctly but were poorly or incompletely formulated. Results from the tests are used as ‘feedback’ to return to a previous stage and adjust the performance of the system.
Once the system has proven to be capable of correctly solving straight-forward problems, the domain expert suggests complex problems which typically would require a great deal of human expertise. These more demanding tests should uncover more serious flaws and provide ample opportunity to ‘fine tune’ the system even further.
Ultimately, an expert system is judged to be entirely successful only when it operates at the level of a human expert. The testing process is not complete until it indicates that the solutions suggested by the expert system are consistently as valid as those provided by a human domain expert.
The ultimate test of an expert system is how well it performs, not in a development laboratory, but in ‘real life’ situations. A completed system not only must demonstrate consistently that it can deliver the required expertise, but it also must be easy to use so that the embedded expertise can be extracted easily. Therefore, developers have gone to the extent that expert systems are among the easiest to use of all sophisticated computer programs.
Expert systems typically are interactive; that is, we use a question-and-answer technique to communicate with them. Generally, we access an expert system by sitting at a computer terminal. We type the description of our problem on the computer keyboard, and the expert system displays questions or selections lists on the screen to prompt us to enter additional information. The ‘give-and-take’ between us and the computer continues until the system is able to reach a conclusion which is displayed on the screen.