This is the list of final project topics.
Projects can be done individually, in groups of 2, or (with
permission) in groups of 3.
You can propose your own project topic, subject to approval by the instructor.
You must send a .tar or .tgz file to the TA with your code and a PDF file
describing your project and the results you obtained.
Implement Standard Learning Algorithms with Eblearn |
Eblearn is a C++ library that implements
classes and functionalities similar to Lush's gblearn2 package for gradient-based
and energy-based learning.
This series of projects consists in implementing a number of standard algorithms
and applications using eblearn. Suggested algorithms include Adaboost, PCA,
K-Means, Mixtures of Gaussians.
Analyzing Trajectory Data from Surgeons |
We have a dataset of collected from a surgical telemanipulator
(surgical robot) composed of trajectories from highly-skilled
surgeons, as well as from rookie surgeons.
The project consists in assessing the "quality" of a trajectory
by comparing it with the model trajectory from expert surgeons.
Methods such as elastic matching, metric learning, or
hidden markov models can be used
Contact the instructor to obtain the dataset.
Predicting Financial Data |
We have a dataset consisting of description vectors of various
companies, together with a variable that indicated whether the company
defaulted on their loans.
The project consists in predicting whether the company will default
using various methods, including neural nets, logistic regression,
SVM, and perhaps other methods (each project team should pick a good
subset).
The complication resides in the fact that some variables are missing,
hence a latent variable inference model should be used.
Contact the instructor to obtain the dataset.
Implementing Convolutional Nets on NVidia GPUs with CUDA |
The main module of a convolutional network computes multiple convolutions
on image planes (or feature maps) using small convolution kernels.
The project consists in implementing the convolutional module (c-layer class
in Lush's gblearn2 or c_layer class in the Eblearn C++ library) using the CUDA
language running on NVidia graphical processing units.
People at Microsoft and other institutions have reported speedups of
100 or more over software implementations on Intel CPUs.
You need to have access to a 9xxx class NVidia graphic card for this.
Learning Sparse and Overcomplete Representations for Music and Speech |
Learning algorithms to produce sparse and overcomplete representations have been
popular for image recognition, image denoising, and other visual tasks.
The project consists in applying these methods to musical signal analysis
and speech.
The method can be used as a first step in a "blind source separation" system
that could separate instrument tracks from a monophonic recording.
This would consist in adapting existing code (in Lush and/or C++)
and run it on audio datasets.
Some information on this class of algorithms is available here.
Belief Propagation for Music Composition |
The purpose of the project is to build a factor graph model
that implements the rules of simple counterpoint.
Given a few notes, the model can be used to "fill in the blanks"
by finding melodies that satisfy all the rules.
Each rule can be seen as a factor in a factor graph.
The best note sequence will be obtained with Belief Propagation
or some other efficient inference procedure.
Implement the so-called "Field of Experts model" in Lush (see
reference below).
Reference: Stefan Roth and Michael J. Black: Fields of Experts: A
Framework for Learning Image Priors. In Proc. of the IEEE Conference
on Computer Vision and Pattern Recognition (CVPR), vol. 2,
pp. 860-867, June
2005. Link
to paper.
This model can be used for image restoration, denoising etc.
Text/Image Segmenter for DjVuLibre |
Implement a foreground/background segmenter for DjVuLibre.
DjVuLibre is the open source version of the DjVu system.
It currently lacks a good segmenter that can separate
the text and drawings from the backgrounds and continous-tone
images in a scanned document.
The project will consist in building a foreground/background segmenter
by using various clustering methods.
Train the convolutional net implementated in Lush on snippet of images
extracted from scanned pages. The snippets should include neighboring
characters, so that the network output will be robust to "distracting"
characters on each side of the character to be recognized.
The purpose is to demonstrate a segmentation-free "brute force" OCR by
sweeping the convolutional network over an entire page of text.
Students can use the convolutional network implementations from the gblearn2
library in Lush (in lush/packages/gblearn2) or from the eblearn C++ library
Eblearn.
Learning with Conjugate Gradient in Eblearn |
Implement and test Polak-Ribiere and Fletcher-Reeves Conjugate
Gradient optimizations within
the Eblearn C++ library.
Compare it with stochastic gradient on regression problems.
This comes down to implementing a new subclass of the "parameter"
class in which the "update" method will be redefined.
Optional: implement quasi-Newton methods such as limited-memory BFGS.
References:
- Y. LeCun, L. Bottou, G. Orr, and K. Muller,
"Efficient BackProp,"
in Neural Networks: Tricks of the trade, 1994.
- Martin F. Møller,
A Scaled
Conjugate Gradient Algorithm for Fast Supervised Learning, 1993.
- J. Nocedal, D. C. Liu,
"On the Limited Memory Method for Large Scale Optimization ,"
Mathematical Programming B, 45, 3, pp. 503-528, 1989.
|