Research

Lazy Researchers

From left to right: Leha, Gina, Lynn

My fellow student, Gina Castano, Dr. Lynn Stauffer, and I are the proud recipients of the 1998 grant from Collaborative Research Experience for Women in Undergraduate Computer Science and Engineering (CREW). The year we had to do our work under the grant has now passed, and we have accomplished much, but we are not finished yet. To fill you in on the project, I am including here the original proposal, and then our final paper that we submitted to CREW. The small expert system we created can also be made available.

Before you look at the our work, I'd just like to say that this has not been, for me, just a chance to practice doing research (although such an opportunity in itself would be very appealing), but rather, it has been an affirmation of the relevance of work that I truly believe is important. Lazy Evaluation is an area that has not been sufficiently explored in the practical application of Expert Systems, and I am hopeful that the model we are approaching will indeed improve the usefulness of these systems. Expert systems are extremely well utilized, as far as Artificial Intelligence applications go, so much is known about their performance, and their failings. This makes them both a good target for undergraduate research and a good candidate for improvement, with the potential for real, tangible results.

My own interest in expert systems came partly from course work, and partly from my goal of helping to preserve biodiversity and the environment. For a class in database management, I was creating a database that I hoped would have the power to aid environmentalist workers in identifying immature birds, and realized that this was an appropriate application for expert systems. I hope to create the expert system to do this job in the future.

My interest in lazy evaluation is purely from a research perspective. I believe lazy evaluation is a versatile and potentially powerful tool that needs to be explored thoroughly, especially for its possible use as a tool in logic programming.

Below is the project description:


Experts Can Finally Be Lazy: Lazy Approximation in Expert Systems

Problem Statement: Some relational programming languages employ, or can employ, the use of lazy evaluation--traditionally a functional programming mechanism--to delay evaluation of parameters and structured data elements until they are needed in computation. Some of these same languages are used in the development of expert systems, programs that emulate the reasoning ability and wisdom of a human expert. We intend to explore the use of lazy evaluation as a tool for the faster and more economical implementation of expert systems.

Background: Lazy evaluation is a strategy that employs the use of normal order (call by name) evaluation, in combination with updating. Here, an expression is evaluated only when it is needed, or, if it is needed more than once, the result of the first evaluation can be saved (by a process called "memoization") to be recalled again. An unevaluated expression is represented as a "closure," a structure which can potentially generate all values for the given expression. Closures may be infinite sets, as only the needed values from these sets will be evaluated. Infinite sets can be represented as "lazy lists," lists for which the tail may be an unevaluated closure.

Traditional expert systems attempt to reason with uncertain and imprecise information, using techniques such as certainty factors, most significant results, and probabilistic inference networks to reason broadly about a set of given production rules. Recent expert systems have employed fuzzy logic to address many of the problems associated with this type of reasoning. Fuzzy Prolog systems, fuzzy Prolog interpreters, and a commercially available language, Fril (a superset of Prolog with fuzzy sets and "semantic unification") exist and are available.

Problems with Expert Systems: Expert systems tend to have large underlying databases consisting of many thousands of production rules. Controls in a program that polls these rules must be powerful and streamlined. This large number of rules also increases the likelihood of conflicting results in the system, and so, a strong method of conflict resolution is needed. Perhaps the most daunting problem with expert systems, though, is their creation from the knowledge of human experts. Here, the issue is that human experts, though they may be quite qualified in their given fields, often have great difficulty expressing their knowledge in a production rule-like form, or even at all. Logical steps that they take unconsciously or automatically to arrive at conclusions may be elusive to them when they attempt to describe them, and this problem is exacerbated by the sheer numbers of rules needed to form the database. One solution to this problem has been to create smaller databases of human-defined rules that are fundamental in nature, then use fuzzy logic and neural networks, to deduce additional rules. These methods have shown favorable results, but even better results may be possible by use of additional tools in combination with fuzzy neural technology.

Our Model: In his book, Programming Language Concepts and Paradigms, David A. Watt discusses the usefulness of lazy lists to separate control from calculation. Here, iterative and recursive algorithms are broken into two parts, a calculation part that builds a composite (a lazy list), and a traversal mechanism that acts as the control structure. Watt gives an example of two functions in lazy ML, one that computes an infinite list of square root approximations, and another that defines a suitable convergence between any two members of the first. This splitting of control from computation can greatly simplify the expression of each, can increase the modularity and reusability of code, and points to an important use of lazy lists as stateless data structures, or mock databases. Because only the needed portion of a lazy list is ever evaluated, it can act as an economical reservoir of potentially endless information. Approximation lists such as Watt illustrates could potentially act as seed values for fuzzy inference, or house refinements of rules that may or may not be needed for conflict resolution; while control structures that are free of computational parts could act as rule-builders, decision-makers, and conflict resolution engines.

We intend to explore the use of these approximation lists in the implementation of expert systems. To meet this objective we plan to complete three phases: research existing tools and methodologies, contacting key researchers in the field; explore and apply the Watt model of separation of calculation and control to solve the problems inherent in existing expert systems; and analyze our findings and their usefulness in the field of artificial intelligence, presenting the results.

Potential Directions: Use of lazy lists could potentially lead to a decrease in the needed rule bases for expert systems, by affording a mechanism for building rules dynamically, on an as-needed basis. Lazy composites can also act as feeder lists for expert system "fuzzifiers," or for supplemental certainty factors that may be used to double-check results. Lazy control structures can be used as rule-builders, making the number of rules needed to formulate a result variable and minimal. They may be used to calculate most significant results, or to "de-fuzzify" outputs where a precise control action is needed.


The CREW paper, after one year of work

Essential Reading Lists for:

Functional Programming

Prolog and Expert Systems

I am also compiling a database of the resources we have referred to in the course of our work. The database will be online shortly, so check back. Thank you for reviewing our work.