In addition, many of the debugging tools that simplify
rule level debug are already in the inference engine where traditional
programming environments assist with code level, not rule level debug.
Attempting to build a robust knowledge automation system by traditional
programming techniques is typically much more expensive and far less
likely to succeed or be maintainable.
Forward Chaining
As mentioned earlier, many inference engines use
Forward Chaining. Some expert systems support hybrid approaches where
the basic system uses forward chaining, but allows backward chaining
to derive needed values. This combination provides the best of both
approaches and is often very effective.
Conceptually, forward chaining is much simpler than
backward chaining. The system simply tests the rules in the order
that they occur, so rule order is crucial. If the system needs a variable
to determine if a rule is true or false, and the value of that variable
is unknown, the system immediately asks the user for the value without
any attempt to derive its value. If it is determined that a rule is
true, the assignments in the rules THEN part add data to what
the system knows and can use in subsequent rules. If a rule is determined
to be false, the system discards that rule.
Forward chaining systems are data driven since the
system simply processes a set of data by the rules with no specific
defined Goal. Forward chaining is often faster than backward chaining
since it does not have the overhead of dynamically determining which
rule to activate, but it does not exclude blocks of rules and logic
that are not actually needed. Forward chaining asks less focused questions
and is not as good an emulation of a human interaction with an expert.
Unlike backward chaining systems, the order
of questions in a forward chaining system is very dependent on rule
order.
Programmers often take a data driven approach
to
systems, such as monitoring systems, where a set of data is available
at the start of a session. The system applies the rule
|
|
logic to the data to produce results, but the order
in which the system uses the data does not matter. While forward
chaining can be used for these types of systems, backward chaining
is sometimes a better choice for problems that benefit by being
modularized or handled from top-level logic down.
Backward chaining systems are often easier to develop
than forward chaining systems. A human expert intuitively thinks:
"The cause could be X. To determine that, I need to know the
value of Y, but to find Y, I first need to know Z". This type
of logic chain is similar to one that a backward chaining system produces
from its rules.
Summary
Backward chining is an effective method for building
many types of system from knowledge management, to help desk, to diagnostic,
to decision support. With a clear understanding of how backward chaining
operates, systems can be modularized and rapidly constructed. These
systems can easily combine the expert knowledge of multiple individuals
into a single coherent system. Separating domain-knowledge (rules)
from the program (inference engine) greatly reduces the amount of
work required to create an effective program. Using an existing inference
engine eliminates the need to develop a major part of the program
from scratch.
Dustin Huntington, president of EXSYS
Inc. has been an integral part of the expert system industry for 20
years. He can be reached at www.exsys.com
or dhuntington@exsys.com.
|