.po 1i
.ll 6.5i
.nr ps 11
.nr pp 11
.ce 10
\fB\s16Homework 5: Explanation-Based Learning with EGGS\fP\s0
.sp
.sz 14
CS 395T: Machine Learning
.sp .5
Due: Tuesday, April 9
.sp
.ce 0
.pp
A simple version of the EGGS explanation-based generalization algorithm is in
the file EGGS.  It uses the PROLOG-like DEDUCE system to construct proofs
using backward chaining and then generalizes these proofs into operational
macro-rules to be used in future deductions.  For the most part you may treat
the DEDUCE system as a
.q "black box."
However, understanding EGGS requires that you read the comments at the
beginning of the file and look at the section of the code which deals with
unification.  The simple CUP, SAFE-TO-STACK, and SUICIDE examples presented in
class are in the files CUP-DOMAIN and TOY-DOMAIN and can be used to test the
system.  A set of logic theorem proving examples are in the file LOGIC-DOMAIN.
It contains a set of axioms used by the Logic Theorist (the first automated
theorem prover ever built) and a set of problems from the \fIPrincipia
Mathematica\fP (Whitehead and Russell's magnum opus) upon which this original
system was tested.  This set of problems will be used to test the effect of
learning on problem solving performance.
.uh "Effect of Learned Rule Use on Utility of EBL"
.pp
First use the function RUN-EGGS with learning turned off (*learn* = NIL) and a
depth bound of 3 to test the system on the set of logic problems called
lt-problems-depth3 (the subset of the original problems solvable by the system
within a depth bound of 3).  Record the amount of time taken to prove all of
the theorems (it may take a while).  Next turn learning on and run the system
again and record the time.  The system should actually take longer with
learning than without.  The problem is that the system gets lost in a larger
search space when it tries to combine its learned theorems (lemmas) with its
existing axioms. The time spent trying to combine learned rules with other
rules can be avoided by changing the way learned rules are used.  Change the
code so that learned theorems are kept separate from the rest of the rules and
only used to solve a problem if they match the problem directly without using
any other rules (i.e. learned theorems should not be used as lemmas in the
proof of other theorems).  Learned theorems should still be tried first,
resorting to arbirtary theorem proving with the original axioms only when no
learned theorem matches the problem.  Repeat the above run with this new
approach.  (Note: before each new call to RUN-EGGS be sure to clear the system
of previously learned theorems by reloading the orignal set of rules).  There
should be a modest improvement compared to no learning.  Hand in a summary of
your data, a discussion of the results, and a commented version of the code
you write.



