All assignments must be handed in on paper in class or to the Philosophy Department office in HH 365. They are due by the beginning of class on the date indicated, and there will be a penalty for late assignments of 10% per day late, up to a maximum of 30%. The assignment descriptions for Winter, 2005 are marked "2005". The other assignments are from 2003 and may be revised.
Write a LISP program that implements a semantic network. See
week 2 for the basic structures and algorithms.
Create your own semantic network with at least 20 nodes and 30 links, including
a kind hierarchy. A link to a list of 2 elements is only one link. Using DO
loops, implement spreading activation and a procedure that can collect kinds.
E.g. a spaniel is a kind of dog which is a kind of animal, so (find-kinds 'spaniel)
--> (DOG ANIMAL). Your spreading activation function need only spread from
once concept to all the concepts linked to it. (Optional: write a function that
keeps on spreading activation.) Also, write a DO function that answers queries.
(query thing property) will initially just check for the value of the property
of the thing using (get thing property), but if no answer is found it will climb
the hierarchy to see if an answer is available higher up. Hand in a printout
of your code and some test runs that show that your program works. In addition,
write a paragraph of about 200 words discussing either (a) how psychologically
realistic your program is with respect to phenomena such as priming or (b) how
inference in your semantic network differs from philosophical theories of inference
based on deductive rules. In addition, answer the following question: What processes
discussed by Kintsch (in Polk & Seifert) are beyond the scope of your program?
Write a LISP program that implements a simple forward-chaining rule-based system that performs some inferential task that interests you.
First write a MAKE-RULE procedure that creates rules and puts them on a list of *RULES*. Your system should have at least 10 rules in it. Use data abstraction by writing procedures such as GET-ANTECEDENTS to extract the antecedents from the rules.
In order to avoid having to write complicated matching and binding procedures, represent assertions as symbols, so that HAPPY is used in place of (X IS HAPPY). Then a rule can be something like (IF (rich healthy) THEN (happy)).
Your main procedure will be a DO loop that repeatedly evaluates all the *RULES* you have created to see if the antecedents match working memory. If there is a match, then the consequents are added to working memory.
To see if the antecedents of the rule match working memory, all you have to do is to check whether the antecedents are a subset of working memory using the Common Lisp predicate SUBSETP. Firing a rule is then just a matter of appending the consequents of the rule to working memory.
Hand in a listing of your program as well as a program run that shows that your system is capable of chaining inferences, i.e. going from A and IF A THEN B and IF B THEN C to C.
Also hand in a page of about 300 words discussing the psychological or philosophical power and plausibility of your program. Compare your program to the ACT model described in Polk & Seifert ch. 2. You can also address such questions as:
Write a LISP program that implements a simple frame system. Write a function MAKE-FRAME that constructs frames in whatever LISP structure you prefer. Include at least 10 frames in your system. The frames should all be relevant to solving problems or generating explanations in a particular domain. Then write LISP functions to do all of the following:
1. Inference by inheritance. Given a query about an object represented by an instance frame, this program should climb the ISA/AKO hierarchy until it finds a class frame that can answer the query. Make sure that your program can climb more than one step up the hierarchy. When it finds the answer, the program should modify the instance frame to include the new information. Show that your program works on at least 2 examples. This is very similar to the semantic network query function.
2. Classification by matching. Given an object represented by an instance frame, this program should classify the object by matching the instance frame against a data base of class frames. The program should compute which of the class frames best matches the instance frame, and then modify the instance frame to include the information that the object ISA member of the class found. Show that your program works on at least 2 examples.
3. Explanation or problem solving (choose one). Given a frame that represents a problem, find a solution using classification by matching followed by inference by inheritance. Show that your program works by first finding a frame that is a good match to the given frame and by second inheriting an answer.
Also hand in a page of about 300 words discussing the psychological or philosophical power and plausibility of your program. Could your program be expanded to do the knd of feature-based induction discussed by Sloman (Polk & Seifert, ch. 31). You can also address such questions as:
Don't forget that the Project Plan is due March 3.
Write a LISP program to model a neural network that performs constraint satisfaction. The model should use local representations in which each artificial neuron has an interpretation. The links between the neurons represent constraints between what the neurons represent. The neural network will perform constraint satisfaction by spreading activation between neurons until the network has settled.
For details on how to do this, see the lecture notes for Week 7.
Create a network with at least 10 units and at least 20 symmetric links.
To keep updating simple, just loop through the list of units and don't worry about synchronous or randomly asynchronous updating.
Another simplification: instead of running the network till it has settled, simply run it for a given number of cycles.
Produce output that shows that the network has accepted some units (high activation) and rejected others (low activation).
Also hand in a page of about 300 words discussing the psychological or philosophical power and plausibility of your program. Explain how your model differs from those discussed by Hinton (Polk & Seifert, ch. 6). You can also address such questions as:
Implement synchronous or randomly synchronous updating, and stop updating when the network has settled (i.e. all activations have reached asymptote).
Implement Hebbian learning in which the weight between two units is increased if the two units are simultaneously active.
This will be part of your project.
For this assignment, hand in (on paper):
Computational Epistemology Laboratory.
This page updated Feb. 14, 2005