Symbolic Concept Acquisition Version 2
SCA is a Soar program for inductive learning that Craig Miller developed
a year or two ago. I've used his ideas in my research and ended up extending
SCA so now I've decided to release my changes as a new version, which I'm calling
SCA2.
What is SCA?
SCA learns to assoiciate a class label with a set of features.
For example, that round, heavy objects are balls; while round,
light objects are balloons.
It does this by having rules which predict certain classes :
If the object has
^color red
^size small
^weight low
then guess
^class balloon
SCA uses a search to find the rule which is most specific and returns that
as its guess. The method it uses is :
- Check if any rules match all the object's features.
- If yes, then guess that value.
If no, then remove (or abstract) one of the features and
go back to step 1.
SCA learns new rules when it's given a training instance, e.g.
^color green ^size small ^weight low => ^class balloon
It searches for the most specific rule it currently has that matches
this and then learns a new rule with one more feature in it. That's
the inductive step and leads it to eventually learn the class correctly.
It turns out that this method models human behavior well.
What's new in SCA2?
The main changes in SCA2 are :
- Removal of the abstraction order.
The abstraction order is the sequence in which SCA removes features
when looking for a match. This order dictates the order in which
features are learned. As it's best to learn about the most relevant
features first, SCA2 removes this ordering and makes it possible to
learn about any abstracted feature.
- Support for objects with relations.
SCA2 extends the representation of features so you can learn
about relations such as ^next-to or ^under which have values that
are other objects.
- Support for negative class values.
SCA is limited to learning positive class labels (e.g. X is a balloon).
SCA2 is extended to allow learning of negative class labels (e.g. X is not a balloon).
- Support for operators as the class value.
SCA2 specifically supports structures (rather than just constants) as the
category value being learned. This makes it easier to use SCA in applications
where you're learning the mapping of state->operator.
- Designed as a plug-in subgoal.
Finally, SCA2 was developed as code which is intended to be plugged into
other Soar programs. This means it has some slightly different chunking
conventions than SCA uses, so the results of its predictions can be safely
used elsewhere within a Soar program.
In addition, SCA2 comes with a complete Tcl/Tk interface which allows you to
- Easily run SCA2 multiple times and graph its learning accuracy.
The idea here is that you can use the interface to experiment
with your own changes to SCA's reasoning and see how well they work.
- Graphically view SCA2's chunks as they are learned.
SCA2 includes a tool which displays the network of rules that are being learned.
This is to give the user some idea of how the learning is progressing within Soar.
Where do I get SCA/SCA2?
Click here for a compressed tar file that contains
all 3 systems, or here for a 500K uncompressed tar file
or click on the individual names to get just those :
- sca/version1 (About 40 productions)
Craig's original version of SCA, updated for Soar7.0.0.
- sca/version2-simpler (About 80 produtions + Tcl/Tk interface)
A beginner version of SCA2 with a simple demonstration task.
It includes all the SCA2 code but doesn't use it all.
- sca/version2-full (About 130 productions + Tcl/Tk interface)
A complete demonstration of SCA2 with all its bells and whistles.
What should it look like when it's working?
These are some screen shots if you want to
see what it's meant to look like.
I'm keeping a count of people who come looking for SCA2.
Counting you, the total is
Douglas Pearson
[2007]