John Schulman

Welcome to my stodgy academic homepage!

I'm a research scientist at OpenAI, where I work on reinforcement learning (RL), especially related to transfer learning and meta-learning.
I lead the Games Team, where we (mostly) use games as a testbed for reinforcement learning, and we've developed the Gym Retro dataset based on classic video games.

Previously, I received my PhD in Computer Science from UC Berkeley, where I had the good fortune of being advised by Pieter Abbeel. Prior to my recent work in RL, I spent some time working on robotics, enabling robots to tie knots and stitches and plan movement using trajectory optimization.

Generalization in Robotic Manipulation Through the Use of Non-Rigid RegistrationJohn Schulman, Jonathan Ho, Cameron Lee, and Pieter Abbeel
International Symposium on Robotics Research (ISRR), 2013Paper / Videos

Computation Graph Toolkit (2015):
GitHub /
Documentation. Computation Graph Toolkit (CGT) is an automatic differentiation library, intended to be "Theano reloaded" with fast compilation, multithreading, improved compile-time inference, and a simpler codebase. I stopped developing it after Tensorflow came out and turned out to be excellent.

TrajOpt (developed 2012-2013) is a software framework for generating robot trajectories by local optimization. The following core capabilities are included: a solver for generic nonlinear optimization problems by sequential quadratic programming, cost and constraint functions for kinematics and collision avoidance, and a JSON-based problem specification format for trajectory optimization problems. The core libraries are implemented in C++, and a Python API using Boost.Python is provided.

Caton (developed 2009-2010) is a software package that automates the process of spike sorting, a common task in the analysis of neural data. spikedetekt, developed in the Cortical Processing Lab at University College London, is somewhat based on this code.