Expert Systems: Principles and Programming, Fourth Edition Chapter 1 Introduction to Expert Systems At a Glance Table of Contents Overview Objectives Instructor Notes Quick Quizzes Discussion Questions Key Terms 1-1 Expert Systems: Principles and Programming, Fourth Edition 1-2 Lecture Notes Overview During the 20th Century, various definitions of artificial intelligence were proposed, including “making computers think like people.” A special type of artificial intelligence called expert systems, developed in the 1960s, dealt with complex problems in a narrow domain, such as, for example, medical disease diagnosis. Today, expert systems are used in business, science, engineering, manufacturing, and many other fields. The problems expert systems are used to solve are generally those for which there are no known or efficient algorithms. Expert systems are knowledge-based and hence are very effective for solving real-world problems. The advantages and disadvantages of expert systems are discussed within the context of selecting an appropriate problem domain. Expert systems are suitable for some but not all applications. Future advances in artificial intelligence will hinge on the use of new quantum computers as well as those with massive computational abilities in conjunction with other computers on the Internet. Chapter Objectives After completing this chapter, students will be able to answer the following: What is the meaning of an expert system? What is meant by the problem domain and knowledge domain? What are the advantages of an expert system? What are the general stages in the development of an expert system? What are the general characteristics of an expert system? What earlier expert systems have given rise to today’s knowledge-based systems? What are some applications of expert systems in use today? What is the structure of a rule-based expert system? What is the difference between procedural and nonprocedural paradigms? What are the characteristics of artificial neural systems? Instructor Notes What is an Expert System? Many definitions of artificial intelligence (AI) have been proposed. The most popular is still: “making computers think like people.” No one particular technique of AI can deal successfully with all problems; rather, a combination of methods works best. In order for an expert system to effectively address any problem, there must be a welldefined problem domain. Expert systems is a very successful application of artificial intelligence technology. The first step in solving any problem is defining the problem area or domain to be solved. It is worthwhile to examine how AI fits into the scheme of life itself. From a computer perspective, life is synonymous with software, but we also can view life from a biological perspective, including artificial life made possible through cloning. The notion of artificial life gives rise to artificial intelligence, intelligence being the capacity to learn, acquire, adapt, modify, and extend knowledge to solve problems. Hence we consider the desire to Expert Systems: Principles and Programming, Fourth Edition 1-3 build intelligent machines that can react with the real-world, be endowed with consciousness, solve problems and communicate those solutions. One of the goals of expert systems technology, as defined by Professor Edward Feigenbaum of Stanford University, is the development of a computer system that emulates, or acts in all respects, with the decision-making capability of a human expert. Although we are nowhere close to creating a general-purpose problem-solver, expert systems can function very well within the confines of restricted domains. Expert system technology may include special expert system languages, programs, and hardware designed to facilitate the implementation of those systems. The knowledge in expert systems may come from expertise, or knowledge obtainable from various forms of media, including books, magazines, or even knowledgeable persons. In an expert system, or knowledge-based system, the user supplies facts or other information to the system and receives expert advice or expertise in response. The system itself consists of two components the knowledge-base and the inference engine, which draws conclusions from it. An expert’s knowledge is specific to one problem domain a special problem area such as medicine, finance, science, or engineering. The expert’s knowledge about solving specific problems is called the knowledge domain of the expert. The problem domain is always a superset of the knowledge domain. In the knowledge domain that it knows about, the expert system reasons, or makes inferences about the solution of a problem. Advantages of Expert Systems Advantage Increased availability Reduced cost Reduced danger Performance Multiple expertise Increased reliability Explanation Fast response Steady, unemotional, and complete responses at all times Intelligent tutor Intelligent database Description Expertise is available on any suitable computer hardware and is the manifestation of mass produced expertise. The cost of providing expertise is usually lower. Expertise systems can function in environments potentially hazardous to humans. Expertise is permanent the system’s knowledge will last indefinitely. Multiple experts can work simultaneously and continuously. The combined efforts may exceed those of the individuals systems working separately. Confidence levels may be increased by providing a second opinion to that of a human or in tie-breaking situations. Expert systems can readily verify and support conclusions, thus increasing confidence. Real-time response is readily available and is a function of the software/hardware used far surpassing the response of a human. This may compensate in stressful or fatigue situations which may affect a human expert. Students may interact with the system which serves as a tutor – affords practice / scenarios along with explanations Access of databases in an intelligent manner e.g., data mining Expert Systems: Principles and Programming, Fourth Edition 1-4 General Concepts of Expert Systems The knowledge of an expert system can be represented in a number of ways, including IF-THEN type rules: IF you are hungry THEN eat Some systems such as CLIPS allow object as well as rules, where knowledge is encapsulated in the rules and objects. The process of building an expert system is called knowledge engineering and refers to the acquisition of knowledge from the human (or other) source and its coding in the expert system. The general stages of development of an expert system include the following iterative process: 1. 2. 3. The knowledge engineer establishes a dialog with the human expert to elicit his/her knowledge. The knowledge engineer codes the knowledge explicitly in the knowledge base. The expert then evaluates the expert system and gives a critique to the knowledge engineer. Why is AI used? An algorithm is an ideal solution to a problem because it is guaranteed to yield a solution in a finite amount of time. When an algorithm is not available, or is not efficient, we rely on AI. The expert system relies on inference a reasonable solution is about all we can expect. An explanation facility allows the user to explore multiple lines of “What if” type questions this is called hypothetical reasoning. When an expert system learns new rules by example, we call this rule induction. Both human experts and expert systems must be able to deal with uncertainty when a problem reaches their limits of ignorance to qualify their levels of confidence. It is much easier to program expert systems with shallow knowledge based on empirical and heuristic knowledge, than deep knowledge based on the basic structure, function, and behavior of objects. Typical expert systems cannot generalize through analogy to reason about new situations in the way people can. The knowledge acquisition bottleneck results from the time-consuming and labor intensive task of building an expert system. Characteristics of an Expert System High performance the system’s performance must exceed that of an expert in the field. Adequate response time the expert system must respond in a reasonable amount of time. Good reliability the system must be reliable and not prone to crashes. Understandable the system should be capable of verifying / explaining its reasoning The Development of Expert Systems Technology The roots of expert systems lie largely in the area of cognitive science the study of how humans know or process information. AI machines must have the ability to recognize signs semiotics the whole concept of signs in general. In the late 1950s and 1960s, the General Problem Solver, created by Newell and Simon, resulted in fears that people would lose their jobs replaced by computers. One of the most significant results of Newell and Simon was the notion that human understanding could be expressed by IF-THEN production rules. Long-term memory consists of many such rules having the simple IF THEN structure. This contrasts with short-term memory which is used for temporary storage of knowledge during problem solving. Another element necessary for human problem solving is a cognitive processor which tries to find the rules that will be activated by appropriate stimuli. Conflict resolution refers to deciding which rule has the highest priority. The Newell / Simon model of human problem solving combines long-term memory (rules) short-term memory (working memory), and a cognitive processor (inference engine) this is the basis for all modern rule-based expert systems. Rules like these are a type of production system. By the early 1970s, it became apparent that domain knowledge was key to building machine problem solvers that could function similarly to human experts. Today’s expert systems are known as knowledge-based expert systems Expert Systems: Principles and Programming, Fourth Edition 1-5 rather than general problem solvers. These systems are considered an alternative programming model, or paradigm, to traditional algorithmic programming. Which the acceptance of the knowledge-based paradigm, a number of expert systems were created: DENDRAL used in chemical mass spectroscopy to identify chemical constituents MYCIN medical diagnosis of illness DIPMETER geological data analysis for oil PROSPECTOR geological data analysis for minerals XCON/R1 configuring computer systems Expert Systems Applications and Domains Conventional computer programs are generally used to solve problems that have algorithmic solutions. Examples of programming languages used to solve algorithmic problems include C, Java, and C#. Classic AI languages include LISP and PROLOG, both used for symbolic manipulation. Before building an expert system, it is essential to decide if an expert system is the appropriate paradigm. The appropriate domain for an expert system depends on a number of factors: Can the problem be solved effectively by conventional programming? Is there a need and a desire for an expert system? Is there at least one human expert who is willing to cooperate? Can the expert explain the knowledge so that it is understandable by the knowledge engineer? Is the problem-solving knowledge mainly heuristic and uncertain? Languages, Shells, and Tools Defining a problem begins with deciding how to model it choosing the best paradigm. If a problem can be solved by conventional programming, it is usually best to do so; otherwise, one can turn to non-conventional paradigms such as AI. An expert system language is a higher-order language than third-generation languages it is easier to do certain things, but there is a smaller range of problems that can be solved. Procedural languages (e.g., C) focus on providing flexibility and robust techniques to represent data. Modern languages (e.g., Java and C#) focus on data abstraction by providing structures such as objects, methods, and packages. Expert systems, on the other hand, focus on ways to represent knowledge data abstraction and knowledge abstraction e.g. CLIPS. When we refer to a language, we think of a translator of commands written in a specific syntax. A tool refers to a language plus associated utility programs to facilitate the development, debugging, and delivery of application programs. A shell is a special-purpose tool designed for certain types of applications where the user must supply only the knowledge base. Elements of an Expert System An expert system consists of the following components: user interface mechanism by which the user and the expert system communicate explanation facility explains the reasoning of the system to a user working memory a global database of facts used by the rules Expert Systems: Principles and Programming, Fourth Edition 1-6 inference engine makes inferences by deciding which rules are satisfied and executes the rule with highest priority agenda a prioritized list of rules created by the inference engine, whose patterns are satisfied by facts or objects in working memory knowledge acquisition facility an automatic way for the user to enter knowledge in the system rather than by having the knowledge engineer explicitly code the knowledge The knowledge base is also called the production memory. The production rules can be expressed in pseudocode IF-THEN format. In a rule-based system, the inference engine determines which rule antecedents are satisfied by the facts. There are two general methods of this type of inferencing: 1. Forward chaining reasoning from facts to the conclusions resulting from those facts best for prognosis, monitoring, and control. 2. Backward chaining reasoning in reverse from a hypothesis, a potential conclusion to be proved to the facts that support the hypothesis best for diagnosis problems. A rule whose patterns are all satisfied is said to be activated or instantiated. Rule-based systems are built on the concept of refraction to prevent trivial loops. Following the THEN part of a rule is a list of actions to be executed when the rule fires this right-hand side is known as the consequent. Production Systems The most popular type of expert system today is the rule-based system knowledge is represented in terms of multiple rules that specify what should or should not be concluded in different situations. In a forward-chaining expert system, we start with the known initial facts and keep using the rules to draw new conclusions or take certain actions. In a backward-chaining system, we start with a hypothesis (what you are trying to prove) and keep looking for rules that would allow the hypothesis to be proven true. Forward-chaining are primarily data-driven; whereas, backward-chaining systems are goal-driven. Post Production Systems The basic idea of Post is that any mathematical or logic system is simply a set of rules specifying how to change one string of symbols into another set of symbols. The basic limitation of Post production rules is a lack of a control strategy to guide the application of the rules. A Markov algorithm is an ordered group of productions that are applied in order or priority to an input string. If the highest priority rule is not applicable, we apply the next, and so on. This is an inefficient algorithm for systems with many rules. A Rete algorithm functions like a net holding a lot of information so that much faster response times and rule firings can occur compared to a large group of IF-THEN rules which would have to be checked on-by-one in a conventional program. Its drawback is the high memory space requirements. The Rete algorithm takes advantage of temporal redundancy and structural similarity. Procedural Paradigms Programming paradigms can be classified as procedural and nonprocedural. An algorithm is a method of solving a problem in a finite number of steps. A procedural program is often called a sequential program. The distinguishing feature of a procedural program is that the programmer must specify exactly how a problem solution must be coded. Expert Systems: Principles and Programming, Fourth Edition 1-7 Imperative programming focuses on the concept of a modifiable store variables and assignments (e.g., C and Fortran). During execution such programs make a transition from the initial state to a final state by passing through a sequence of intermediate states. Imperative languages provide for top-down design. Because of their sequential nature, imperative languages are not very efficient for directly implementing expert systems. The fundamental idea of functional programming is to combine simple functions to produce more powerful functions a bottom-up design (opposite from imperative languages (e.g., LISP). Functional programming languages were designed to be referentially transparent. NonProcedural Paradigms Nonprocedural paradigms do not depend on the programmer giving exact details on how the program is to be solved opposite of the procedural paradigms. In declarative programming, there is a separation of the goal from the methods used to achieve the goal. The user specifies the goal while the underlying mechanism of the implementation tries to satisfy the goal. Object-oriented programming is a type of paradigm that can be considered partly imperative and partly declarative (e.g., C++, Java, and C#). In OOP, we consider the data used by the program as objects and then implement operations on those objects. Related to OOP is the concept of inheritance where subclasses can be derived from parent classes (superclasses). Expert systems can be considered declarative programming the programmer does not specify how to achieve his goal at the level of an algorithm. An application of AI, called induction-based programming, involves the program learning by generalizing from a sample applied to database access. Artificial Neural Systems In the 1980s, a new development in programming paradigms appeared called artificial neural systems (ANS). Based on the way the brain processes information, this paradigm models solutions to problems by training simulated neurons connected in a network. ANS are found in applications such as face recognition, medical diagnosis, games, speech recognition, etc. One useful way to classify types of ANS is whether a training set of input and output data is provided or not. The former is called a supervised model e.g., face recognition; the latter is called an unsupervised model. ANS has provided solutions to some complex pattern recognition problems such as the Traveling Salesman problem, which involves computing the shortest route through a given list of cities. An ANS is similar to an analog computer that uses simple processing elements connected in a highly parallel manner. The processing elements perform simple Boolean or arithmetic functions on their inputs. The key to the ANS is associating weights with each element information is represented by weights. ANS offers several advantages to the storage of conventional computers: Storage is fault tolerant. The quality of the stored image degrades gracefully in proportion to the amount of net removed. Data is stored naturally in the form of associative memory. Nets can extrapolate and interpolate from their stored information. Nets have plasticity. ANS are excellent when functionality is needed for a long time without repair in a hostile environment. ANS offers low maintenance costs. ANS are not well suited for number crunching or problems requiring optimum solution. Expert Systems: Principles and Programming, Fourth Edition 1-8 Connectionist Expert Systems and Inductive Learning An inference engine called MACIE (Matrix Controlled Inference Engine) was designed using ANS knowledge base and was designed to classify a disease from its symptoms into one of the known diseases that the system has been trained on. This system uses forward chaining to make inferences and backward chaining to query the user for additional data to come to a conclusion. The State of the Art in Artificial Intelligence Many advances in AI were made during the 1990s and continuing on to the present. The most successful AI-based systems have relied on biologically-based systems. The broad spectrum of potential applications of AI are limited only by one’s imagination. They range from quantum mechanics, evolution, bioinformatics, defense, video games and movies the list goes on and on. Quick Quiz 1. The most popular definition of artificial intelligence is making _____ think like _____. Answer: computers / people 2. The term ____ means that the expert system is intended in act like a human expert. Answer: emulate 3. An expert’s knowledge is specific to one _____ domain and knowledge about solving specific problems is called the _____ domain. Answer: problem / knowledge 4. The process of building an expert system is called _____ engineering. Answer: knowledge 5. Humans must know the extent of their knowledge and qualify their advice as a problem reaches their _____. Answer: limits of ignorance 6. Heuristic knowledge is a type of (causal, shallow, deep) knowledge. Answer: shallow 7. A knowledge acquisition bottleneck occurs when transferring _____ knowledge to an expert system. Answer: human 8. A _____ is a goal which is to be proven. Answer: hypothesis 9. The ability of AI machines to recognize signs forms the basis of a field named _____. Answer: semiotics Expert Systems: Principles and Programming, Fourth Edition 1-9 10. A significant result by Newell and Simon was that much of human understanding could be expressed by IF-THEN ________. Answer: production rules 11. _____-term memory is used for temporary storage of knowledge during problem solving. Answer: Short 12. The classic expert system called MYCIN was used to _____. Answer: diagnose illness 13. A(n) _____ is a language plus associated utility programs to facilitate the development, debugging, and delivery of application programs. Answer: tool 14. A knowledge base is also called the _____ in a rule-based system. Answer: production memory 15. _____ chaining is reasoning from facts to the conclusions resulting from those facts. Answer: forward 16. After an individual neuron emits an electrical signal when stimulated, no amount of further stimulation can cause the neuron to fire again for a short time period. This phenomenon is called _____. Answer: refraction 17. A(n) _____ algorithm is an ordered group of productions applied in order or priority to an input string. Answer: Markov 18. A(n) _____ algorithm functions like a net, holding a lot of information, so that much faster response times and rule firings can occur. Answer: Rete 19. A(n) _____ is a method of solving a problem in a finite number of steps. Answer: algorithm 20. Java is an example of a(n) _____ procedural language; whereas, LISP is an example of a _____ procedural language. Answer: imperative, functional 21. An empty list, containing no elements is called _____. Answer: nil 22. C++, Java, and C# are examples of _____ languages. Answer: object-oriented Expert Systems: Principles and Programming, Fourth Edition 1-10 23. An ANS is based on the way the _____ processes information. Answer: brain 24. The key to functioning of an ANS is the _____ associated with each element. Answer: weights 25. The term _____ means that a neuron emits an electrochemical impulse. Answer: firing Discussion Questions 1. What are some areas related to artificial intelligence that you have encountered in your dayto-day lives? 2. What is the role of an inference engine? 3. What are the parallels between a human expert and a computer expert system? 4. What are production rules? 5. Characterize domains in the context of expert systems. 6. What is the difference between forward and backward chaining? 7. What is the difference between procedural languages and nonprocedural languages? 8. What advances do you foresee in artificial neural systems? Are there any limitations? Key Terms Artificial Neural Systems: Are based on the way the human brain processes information. Artificial intelligence: Making computers think like people. Expert system: An intelligent computer program that uses knowledge and inference procedures to solve problems difficult enough to require significant human expertise for their solution. Nonprocedural paradigms: Do not depend on the programmer giving exact details on how the program is to be solved. Procedural paradigms: Depend on the programmer giving exact details on how the program is to be solved.