Daniel Johnson's personal fragment of the web

Moving Onward (and Northeastward)

I’m excited to announce that I’m going to be a Google AI Resident for the next year! Specifically, I’ll be joining the Google Brain team in Montreal, Canada. I’ve been itching to get back into more fundamental research, and I’m looking forward to seeing what this new chapter brings.

I’m not sure exactly what I’ll be working on, but I’ve been thinking about a few questions recently that I’m hoping to explore:

  • How can we express and learn probability distributions over complex structured objects, like trees, sets, and graphs?
  • How can we design programming languages to make it easier to build new models and explain them to others?

I’m also hoping to write more on this blog. I’ve been pretty busy with non-research things over the last couple of years and I haven’t had much to talk about. If things go as planned, though, hopefully I’ll have more to write about soon. Fingers crossed!

View comments

Update: San Francisco, Cruise, and NeurIPS 2018

It’s been a while since I’ve posted here, so I figured I’d make a post giving a bit of an update on what I’ve been up to.

To start off, I graduated from Harvey Mudd College and am now living in San Francisco! Right now I’m working at Cruise Automation, a self-driving car company, developing machine-learning models for predicting what people will do next.

Also, a paper that I worked on with other students at HMC has been accepted to NeurIPS 2018! The project was based on a collaboration between HMC and Intel Corporation, with the goal being to design a method for separating and locating sound events in a large, noisy outdoor space. We ended up building a probabilistic model of sound propagation and inter-microphone phase differences, and performed separation and localization using approximate Bayesian maximum a posteriori inference under that model.

The basic idea that makes this work is that, when two microphones are placed very close to one another, sounds arrive at one microphone slightly before the other, with a delay that is dependent on the angle the source makes with the microphones. Since the microphones are close, this time delay turns into a phase change in the audio signal, which can be detected using the short-time Fourier transform. If you have multiple microphone pairs, you can figure out what combination of phase changes you might see based on each possible source location (the probabilistic model). You can then “work backwards” (Bayesian inference) to figure out what sources and locations are most likely (maximum a posteriori) to have produced the inputs you recorded, using some assumptions about source and location smoothness to ensure you get a good separation. If that sounds interesting to you, you can find more information here (which should have the paper and poster available in the next few weeks).

I’ll be presenting this paper as a poster at NeurIPS 2018 in Montreal in December. Looking forward to meeting people there and talking about my work in more detail!

View comments

Exciting news: Papers accepted!

Earlier this year, I submitted two papers for publication at different conferences: I submitted “Generating Polyphonic Music Using Tied Parallel Networks”, a paper based on my work with polyphonic music, to the EvoMusArt 2017 conference, and I submitted “Learning Graphical State Transitions”, a paper describing the Gated Graph Transformer Neural Network model, to ICLR 2017. Recently, I found out that my papers for both conferences have been accepted!

This means that in late April, I’m going to be flying to Europe and giving oral presentations on each of my papers, in Amsterdam for EvoMusArt, and in Toulon, France for ICLR. I’m looking forward to visiting Europe for the first time, meeting a lot of new people, and talking about my work!

If you would like to read the final versions of each of my papers, you can do so here.

View comments

Introducing the GGT-NN

Recently, I submitted a paper titled “Learning Graphical State Transitions” to the ICLR conference. (Update: My paper was accepted! I will be giving an oral presentation at ICLR 2017 in Toulon, France. See here for more details.) In it, I describe a new type of neural network architecture, called a Gated Graph Transformer Neural Network, that is designed to use graphs as an internal state. I demonstrate its performance on the bAbI tasks as well as on some other tasks with complex rules. While the main technical details are provided in the paper, I figured it would be worthwhile to describe the motivation and basic ideas here.

Note: Before I get too far into this post, if you have read my paper and are interested in replicating or extending my experiments, the code for my model is available on GitHub.

Another thing that I’ve noticed is that almost all of the papers on machine learning are about successes. This is an example of an overall trend in science to focus on the positive results, since they are the most interesting. But it can also be very useful to discuss the negative results as well. Learning what doesn’t work is in some ways just as important as learning what does, and can save others from repeating the same mistakes. During my development of the GGT-NN, I had multiple iterations of the model, which all failed to learn anything interesting. The version of the model that worked was thus a product of an extended cycle of trial and error. In this post I will try to describe the failed models as well, and give my speculative theories for why they may not have been as successful.


Spiral Clock for Pebble

I had some free time recently, and felt like making a new watchface for my Pebble Time. The basic idea is that the outer spiral makes one revolution every hour, but the previous path of the spiral remains. Over time, the whole watchface fills up with the growing spiral.

Spiral Clock

As with my previous watchface, the code is available on GitHub. You can also download it from the Pebble App Store if you have a Pebble (it should work on the original Pebble, the Pebble Time, and the Pebble Time Round).


Summer Research on the HMC Intelligent Music Software Team

This summer, I had the chance to do research at Mudd as part of the Intelligent Music Software team. Every year, under the advisement of Prof. Robert Keller, members of the Intelligent Music Software team work on computational jazz improvisation, usually in connection with the Impro-Visor software tool. Currently, Impro-Visor uses a grammar-based generation approach for most of its generation ability. The goal this summer was to try to integrate neural networks into the generation process.


© . All rights reserved. | Top