Geoffrey J. Gordon

[mug shot] I'm an associate research professor in the Machine Learning Department (which used to be the Center for Automated Learning and Discovery) at Carnegie Mellon.  I am also affiliated with the Robotics Institute.  I'm interested in multi-agent planning, reinforcement learning, decision-theoretic planning, statistical models of difficult data (e.g. maps, video, text), computational learning theory, and game theory.  Here is the page for the SELECT Lab, which Carlos Guestrin and I run together (as well as its mailing list).

I spent AY 2003-4 as a visiting professor at the Stanford Robotics Lab.  Before joining CMU I used to work for Burning Glass Technologies, a company that provided intelligent searching and matching software for resumes and job postings.  The company was headquartered in San Diego, but I worked at their Pittsburgh office.

Before that, I was a postdoctoral researcher at the AUTON lab in the Robotics Institute.  Before that, I was a Computer Science PhD student, with advisor Tom Mitchell.  For my RI page, click here.  Here are the CMU machine learning lunch page, CS local page, facilities help page, budgeting system, and facilities costing system.  Here is CMU's finger gateway.

Have a look at some family pictures!


Teaching

Fall 2009 I am teaching 10-601, the masters-level machine learning course, with Miro Dudík.

Spring 2009 I taught 15-780, the graduate AI Star course, with Tuomas Sandholm.  I also taught this course in fall 2007 and Fall 2006 with Ziv Bar-Joseph.

Spring 2008 I taught 10-725, Optimization, with Carlos Guestrin.

Spring 2004 I taught CS23N, Robotics and Machine Learning, with Andrew Ng at Stanford.

Summer 2003 I organized the CALD summer school with Tom Mitchell.

Fall 2002 I taught 16-899C, Statistical Techniques in Robotics, with Sebastian Thrun.


Students

Here is a current list of the students I am supervising.


Notes, examples, and tutorials

These are informal notes rather than polished presentations, so let me know if you find any errors.

Playing games

  • Play some one-card poker.
  • Compute some correlated equilibria.
  • Some slides on what it means to be a reasonable learning algorithm in a repeated game.  I presented these as an invited talk at the AAAI workshop on multiagent learning in 2005.

Algorithms for statistical inference

  • Some code for generalized linear PCA using a Poisson error model (and its matching exponential link function)
  • Some lecture notes on Monte Carlo algorithms, including Matlab demos.
  • Some lecture notes on support vector machines, including a simple Java applet.
  • Some lecture notes on variational algorithms, including k-means clustering and mean-field image segmentation.
  • Notes on Gaussian distributions as they are used in the Kalman filter.
  • An example of how to fit a logistic model using iteratively-reweighted least squares.
  • An example of using gradient descent to fit a discrete exponential family.  Matlab code, 2k.
  • Notes on the concave-convex procedure (CCCP) and its relationship to variational bounding algorithms, in PostScript (44k, 20 slides).
  • Notes on Fisher scoring, in PostScript (42k, 8 slides).
  • Notes on boosting, in PostScript (90k, 20 slides).

Linear programming and optimization

  • A very simple implementation of an infeasible interior-point method for linear and convex quadratic programs, as a Matlab M-file, and an example of its use.  I also have a slightly more sophisticated implementation (also in Matlab).  If you have access to Matlab's quadprog, I'd recommend using that instead; when I wrote this, I did not have access to quadprog.
  • A tutorial on some geometry behind linear programming, in PostScript (780k, 30 slides).
  • For comparison, here's another short interior point linear programming solver.  This one is due to Yin Zhang and was presented at SIAM 2000; I have basically only reformatted the code so that it's slightly easier to use and read.
  • Support vector machines are an interesting use of optimization, and there is some interior point code for learning SVMs on my SVM page.

Reinforcement learning

  • A (very partial) annotated bibliography on robot learning via MDPs and related methods.  I made this as an initial cut at readings our multirobot planning group might want to go over.
  • Notes on conditioning (the dogs and bells kind), in PostScript (50k, 20 slides) or PDF (80k).
  • Lecture notes for an intro to reinforcement learning, in PostScript or PDF (215k, 43 slides).

Others

  • Code for path planning via Dijkstra's algorithm and A* search, in Java with a Matlab interface.
  • A tutorial on synthetic division and partial fraction expansion, which are useful in working with the rational functions which arise when analyzing a linear, time-invariant system of differential equations.
  • Software for tracking dots in images.  This is a useful primitive for some types of computational biology experiments: fluorescently tag something, take pictures of it, and track how it moves.  This software isn't very polished, but we couldn't find anything out there for the purpose; so we wrote this, and some friends of mine used it to help with the data for one of the papers below.
  • Notes on edge and corner detectors.
  • The iterated prisoner's dilemma (text, 10k).
  • Slides on rank-based nonparametric statistical tests, as PostScript (115k).
  • Matlab code for computing log(exp(a)+exp(b)).
  • A simple tutorial on the Common LISP language, written as class material for the AI core course at CMU.

Some publications

This list is approximately in reverse chronological order.  Some of my publications are also available from the CMU SCS tech reports archive.


Office: GHC 8105, x8-7399
Lab: GHC 8208, x8-3837
Assistant: Michelle Martin, GHC 8001, x8-5527, userid michelle324
Fax: x8-3431

Shipping address:
6105 Gates Hillman Complex
Machine Learning Department
Carnegie Mellon University
5000 Forbes Avenue
Pittsburgh, PA 15213

To reach the above numbers from outside CMU, first dial 1-412-26.  You can email any CMU SCS member with firstname.lastname@cs.cmu.edu or userid+@cs.cmu.edu.  (My userid is part of the URL for this page.)