User Tools

Site Tools


cs501r_f2016:fp

This is an old revision of the document!


Objective:

To creatively apply knowledge gained through the course of the semester to a substantial learning problem of your own choosing.


Deliverable:

For your final project, you should execute a substantial project of your own choosing. Many different kinds of final projects are possible. A few examples include:

  • Learning how to render a scene based on examples of position and lighting
  • Learning which way is “up” in a photo (useful for drone odometry)
  • Training an HTTP server to predict which web pages a user will likely visit next
  • Training an earthquake predictor
  • Using GANs to turn rendered faces into something more realistic (avoiding the “uncanny valley”)
  • Transforming Minecraft into a more realistic looking game with DNN post-processing
  • Using style transfer on a network trained for facial recognition (to identify and accentuate facial characteristics)
  • Using RGB+Depth datasets to improve geometric plausibility of GANs

The project can involve any application area, but the core challenge must be tackled using some sort of deep learning.

Your project will be graded more on effort than results. As I have stated in class, I would rather have you swing for the fences and miss, than take on a simple, safe project.

The best projects involve a new, substantive idea and novel dataset. It may also be acceptable to use vanilla DNN techniques on a novel dataset, as long as you demonstrate significant effort in the “science” of the project – evaluating results, exploring topologies, thinking hard about how to train, and careful test/training evaluation. It may also be acceptable to simply implement a state-of-the-art method from the literature, but clear such projects with me first.


Grading standards:

Your entry will be graded on the following elements:

  • 5% Clearly motivated problem
  • 10% Exploratory data analysis
  • 35% Description of technical approach
    • 15% How did you prepare and analyze your data? How did you establish baselines, and test/train splits?
    • 15% Describe how DNNs fit into your solution method. Discuss whether this is a supervised, unsupervised, or RL problem.
    • 5% Is there anything unique about your problem, or about the way you applied DNNs? How will you know if you succeed? Are there quantitative metrics for success (such as a classification error rate), or will success be judged qualitatively (such as the image quality of GAN-generated images)?
  • 45% Analysis of results
    • 25% Present your final results, including comparison to baselines, in whatever format is most appropriate to your problem
    • 20% Describe the process of getting to your final result. What did you tweak? Did you iterate on your topology? How did you debug your model? Include anything relevant to support your discussion, such as tensorboard screenshots, graphs of cost decreasing over time, charts comparing different topologies, etc.
  • 5% Tidy and legible final writeup

Description:

The final project is designed to give you a chance to explore a data science project end-to-end, with minimal restrictions.

For this project, you must:

  • Select a dataset to analyze (perhaps one from Kaggle?)
  • Define a question or task to be performed
    • What is your goal in analyzing this dataset? Is it a prediction problem? Or are you searching for patterns?
    • If appropriate, define a cost function to be optimized
  • Choose an analysis strategy
  • If appropriate, define a model
  • If appropriate, choose an inference algorithm to answer your question, given a model

You are welcome to use any publicly available code on the internet to help you. For example, you may wish to use the Stan language to help you construct an HMC sampler. Other possibilities include PyMC, the Venture probabilistic programming language, BayesDB, etc.

Your writeup should be a serious report on the dataset you chose, the problem you set out to solve, the technical approach you took (and your rationale for it), the results of any exploratory data analysis, and the results of your final model / inference / optimization algorithm.

Your writeup should discuss questions similar to your recommender engine report: This writeup must include five main sections:

  1. A discussion of the dataset
    1. Where did it come from? Who published it?
    2. Who cares about this data?
  2. A discussion of the problem to be solved
    1. Is this a classification problem? A regression problem?
    2. Is it supervised? Unsupervised?
    3. What sort of background knowledge do you have that you could bring to bear on this problem?
    4. What other approaches have been tried? How did they fare?
  3. A discussion of your exploration of the dataset.
    1. Before you start coding, you should look at the data. What does it include? What patterns do you see?
    2. Any visualizations about the data you deem relevant
  4. A clear, technical description of your approach. This section should include:
    1. Background on the approach
    2. Description of the model you use
    3. Description of the inference / training algorithm you use
    4. Description of how you partitioned your data into a test/training split
  5. An analysis of how your approach worked on the dataset
    1. What was your final RMSE on your private test/training split?
    2. Did you overfit? How do you know?
    3. Was your first algorithm the one you ultimately used for your submission? Why did you (or didn't you) iterate your design?
    4. Did you solve (or make any progress on) the problem you set out to solve?

Possible sources of interesting datasets

Croudflower

KDD cup

UCI repository

Kaggle (current and past)

Data.gov

AWS

World bank

BYU CS478 datasets

data.utah.gov

Google research

BYU DSC competition

cs501r_f2016/fp.1479829838.txt.gz · Last modified: 2021/06/30 23:40 (external edit)