Projects for CSE 415 (Spring 2017).
CSE 415: Introduction to Artificial Intelligence
The University of Washington, Seattle, Spring 2017
Due Dates: Questionnaire on Tuesday, May 23 at 23:59, code on Tuesday, May 30 at 23:59, and reports on Friday at 23:59 Friday, June 2, via Catalyst CollectIt.
 
Group Work.

This assignment should be done in teams of 2 or 3. However, teams of 1 are also permitted.

Purpose.

The project is an opportunity to explore an AI topic in greater depth than in a normal assignment. It is also a chance to work on something of personal or team interest, distinct from what others are doing in the class. Finally, it involves a more independent style of study than the regular assignments.

What to Do.

Choose one of the options. Then follow the guidelines for the option you choose.
 

Options.

  1. Joint probability distribution expert: For this option, design and implement a conversational agent that has the ability to talk about any given joint probability distribution. If you are working alone on this option, you should support at least items 1, 2, 3, 4, 5, and 8. If you are working in a partnership, you should support all 8 items. Finally, if you are working in a team of 3, you should not only support all 8 items, but (a) enhance item 7 to follow up the suggested answer with a demonstration of the arithmetic relevant to the problem, (b) implement a feature similar to item 6, but involving conditional independence, and (c) provide two additional example distribution files for demonstrating the conditional independence feature.
    1. "Read the file MyDistribution.txt." The agent should read in the requested file (whatever name the user gives), parse it, and store it in some kind of table -- perhaps a list of lists, or perhaps using the NumPy package. The file should be in csv format (as is common for Excel files), and there should be a header row giving the names for each column. Most columns will have attribute names, such as True and False, and the last column should have probability values.
    2. "Show the table." The agent should just print out the table in a readable, formatted manner.
    3. "What's the probability that Weather is sunny and temperature is cold." The agents should respond with a sentence that includes the query information and the answer. For example: "The probability that Weather is sunny and temperature is cold is 0.26." Of course, this just illustrates that the agent can access a single probability value from the table and present it to the user in English.
    4. "What's the marginal probability of Weather being sunny?" Here Weather would be one of the column names, and sunny would be a possible value in that column.
    5. "What's the probability of Weather being rainy given that temperature is moderate?" Here a conditional probability value is being requested. The agent should compute it and return it. For example, "The conditional probability of Weather being rainy given that temperature is moderate is 0.21."
    6. "Are Weather and temperature independent?" Here the agent should determine the marginal probabilities for each of the mentioned random variables and its complement, and multiply the marginals to get probabilities for each combination of values. Then it should compare those with the corresponding probabilities in the table. If they are within a small tolerance (e.g., 0.001), then the agent would answer "Yes."
    7. "Show me how to apply Bayes' rule to compute the probability that Weather is sunny given temperature is warm." The agent would answer with something like "You will need to multiply the probability of temperature being warm given Weather is sunny by the marginal of Weather being sunny, and then divide that by the marginal of temperature being warm."
    8. "What can you do?" This way, the user can ask the agent what kinds of questions is can handle. It should print a list of typical commands and questions it can handle, including any that you make up.
    Ideally, your agent will be able to handle tables of almost any number of random variables (and at least 5), and any number of attributes per random variable (again, at least 5). Part of this project will be to put together at least one simple example table and one more complex example table, so that you can first demonstrate something simple, and then you can demonstrate how your agent can handle a more impressive example.
  2. Reinforcement Learning in Problem Solving: Explore the use of Q-Learning in solving a combinatorially challenging problem such as Rubik's Cube. You may adopt the approach suggested in Assignment 6, Part 2, extra credit (Towers of Humptulips). If you focus on Rubik's cube, consider a variety of simplifications including 180-degree moves only, 2x2x2 size, fewer than 6 distinct colors, combinations of heuristics and Q-Learning, where heuristics may be based on the use of "pattern databases".
  3. Classifier Inference: Using Python and Numpy/SciPy implement two different kinds of classifiers. Then compare their performance on multiple criteria (accuracy, training time, etc). Finally, implement either bagging or boosting to combine them. Demonstrate quantitatively what advantages you get from bagging or boosting. The choice of datasets is up to you. Ideally there will be at least one standard dataset commonly used in classifier design, plus at least one original dataset that you either create or find online that has not already been used in this kind of experiment. Suggested standard datasets are: MNIST (handwritten numerals), CIFAR10 (small color images), and the Fisher Iris dataset (measurements for 150 flowers).
Criteria.

Each project should address the following criteria.

  1. Originality. The project must not be an edited version of something developed elsewhere.
  2. Demonstration of an appropriate artificial intelligence technique. Most AI topics will be appropriate, but each student or team should meet with the instructor and get approval for their topic.
  3. Transparency. The implementation should take specific steps or incorporate explicit features to help the user understand how the program works, typically showing in some form, key intermediate results, status of longer computations, and relationships among key data structures, rules, states, or constraints.
  4. Interactivity. The program should allow the user to control the computation through interaction. There can be default parameter settings, but it must be possible for the user to easily override many of the defaults.
Demonstrations.

Project presentations are currently scheduled to take place during class on May 31 and June 2. Each project should be shown on both these days. During the demonstration periods, each student should complete two peer evaluations on each day. Printed copies of the forms will be available in class. Each team should bring a laptop to class that day in order to demo your project to small groups. We will spend part of each period having a few volunteer teams present to the whole class, but most of the time will be spent with multiple presentations to small groups happening simultaneously.

What to Turn In.

Turn in the following files (zipped up or tarred) by the project turn-in deadline. Report.pdf; code files; data files; an optional Presentation.pptx (or other standard format);

Reports

The report should be an electronic document in the form of a PDF file. The key elements of your report include:

  1. title of project;
  2. names and roles of each teammate;
  3. what the program is supposed to do;
  4. technique used and brief description (half a page) of how that technique works. If you use multiple AI techniques then describe each one but with somewhat less detail for each one;
  5. either a screen shot or a transcript of an interesting sample session;
  6. brief demo instructions;
  7. code excerpt showing some interesting part(s) of your Python code and some explanation of it;
  8. brief description of what each team member learned in this project;
  9. what you would like to add to your program if you had more time;
  10. citations for any references you used in the project. This should include the names and URLs of any websites that you used and whose ideas or other resources were incorporated into your project. In each case, describe in a sentence what role that website played in your project and what you incorporated from it.
Project Plans Due May 22

Fill out the online project planning questionnaire by Monday, May 22 at 6:00 PM.

Peer Evaluations:

Peer evaluations will take place in class during the last week of classes. Each project team should bring a laptop computer on which to demonstrate their program. If you cannot bring your own laptop, please arrange with a classmate to use his or hers. If you cannot locate a suitable classmate, then at least do bring your necessary files on a USB drive in a folder set up in such a way that it will be very easy to start a demonstration on another computer.

Updates and Corrections:

If necessary, updates and corrections will be posted here and/or mentioned in class, in GoPost, or via the mailing list.