<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Daniel D. Johnson (Posts about math)</title><link>https://www.danieldjohnson.com/</link><description></description><atom:link href="https://www.danieldjohnson.com/categories/math.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2025 &lt;a href="mailto:daniel.dw.johnson@gmail.com"&gt;Daniel D. Johnson&lt;/a&gt; </copyright><lastBuildDate>Mon, 01 Sep 2025 09:09:05 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Introducing the GGT-NN</title><link>https://www.danieldjohnson.com/2016/11/06/introducing-the-ggt-nn/</link><dc:creator>Daniel D. Johnson</dc:creator><description>&lt;div&gt;&lt;p&gt;&lt;em&gt;Note to present-day readers: The use of the word "transformer" in this post, and in the corresponding ICLR paper, is unrelated to the now-popular Transformer architecture introduced in the paper "Attention is all you need", which was released shortly after this post.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Recently, I submitted a paper titled &lt;a href="https://www.danieldjohnson.com/files/2017learninggraphical.pdf"&gt;"Learning Graphical State Transitions"&lt;/a&gt; to the &lt;a href="http://www.iclr.cc/doku.php?id=ICLR2017:main"&gt;ICLR&lt;/a&gt; conference. &lt;em&gt;(Update: My paper was accepted! I will be giving an oral presentation at ICLR 2017 in Toulon, France. See &lt;a href="https://www.danieldjohnson.com/2017/02/23/exciting-news-papers-accepted/"&gt;here&lt;/a&gt; for more details.)&lt;/em&gt; 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 &lt;a href="https://arxiv.org/abs/1502.05698"&gt;bAbI tasks&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;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 &lt;a href="https://github.com/danieldjohnson/gated-graph-transformer-network"&gt;GitHub&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;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 &lt;a href="https://en.wikipedia.org/wiki/Publication_bias"&gt;focus on the positive results&lt;/a&gt;, 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.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.danieldjohnson.com/2016/11/06/introducing-the-ggt-nn/"&gt;Read more…&lt;/a&gt; (17 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>graph</category><category>Harvey Mudd College</category><category>math</category><category>neural network</category><category>project writeup</category><category>python</category><category>research</category><category>Theano</category><guid>https://www.danieldjohnson.com/2016/11/06/introducing-the-ggt-nn/</guid><pubDate>Sun, 06 Nov 2016 00:00:00 GMT</pubDate></item><item><title>Summer Research on the HMC Intelligent Music Software Team</title><link>https://www.danieldjohnson.com/2016/08/08/summer-research-on-the-hmc-intelligent-music-software-team/</link><dc:creator>Daniel D. Johnson</dc:creator><description>&lt;div&gt;&lt;p&gt;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 &lt;a href="https://www.cs.hmc.edu/~keller/jazz/improvisor/"&gt;Impro-Visor&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.danieldjohnson.com/2016/08/08/summer-research-on-the-hmc-intelligent-music-software-team/"&gt;Read more…&lt;/a&gt; (15 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>Harvey Mudd College</category><category>math</category><category>music</category><category>neural network</category><category>project writeup</category><category>python</category><category>research</category><category>Theano</category><guid>https://www.danieldjohnson.com/2016/08/08/summer-research-on-the-hmc-intelligent-music-software-team/</guid><pubDate>Mon, 08 Aug 2016 00:00:00 GMT</pubDate></item><item><title>Discrete and Computational Geometry Projects</title><link>https://www.danieldjohnson.com/2016/04/21/dcg-projects/</link><dc:creator>Daniel D. Johnson</dc:creator><description>&lt;div&gt;&lt;p&gt;At Harvey Mudd, I'm taking a cool class called "Discrete and Computational Geometry", a special topics course taught by &lt;a href="http://satyandevadoss.org/"&gt;Professor Satyan Devadoss&lt;/a&gt;. It's a very interesting class. In lieu of normal problem sets, we instead do a bunch of group projects, each one very freeform. The basic instructions are "go make something related to this class". Here are a couple of the projects my group made:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.danieldjohnson.com/2016/04/21/dcg-projects/"&gt;Read more…&lt;/a&gt; (2 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>algorithm</category><category>geometry</category><category>Harvey Mudd College</category><category>javascript</category><category>math</category><category>Uncategorized</category><category>visualization</category><guid>https://www.danieldjohnson.com/2016/04/21/dcg-projects/</guid><pubDate>Thu, 21 Apr 2016 12:32:31 GMT</pubDate></item><item><title>Augmented Shanahan: Extrapolation</title><link>https://www.danieldjohnson.com/2015/01/23/augmented-shanahan-extrapolation/</link><dc:creator>Daniel D. Johnson</dc:creator><description>&lt;div&gt;&lt;p&gt;&lt;em&gt;This is the second part of a three-part writeup on my augmented Shanahan project. You may want to start with &lt;a href="https://www.danieldjohnson.com/2015/01/23/augmented-shanahan-detection/"&gt;part one&lt;/a&gt;. For some background math, you may also want to read the post about my &lt;a href="https://www.danieldjohnson.com/2014/11/18/a-tale-of-two-hackathons-part-2-augmented-reality-snake/"&gt;5C Hackathon entry&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;From the detection and tracking algorithms, I was able to generate a 2D perspective transformation matrix that mapped coordinates on the wall to pixels in the image. In order to do 3D rendering, however, I needed a 3D transformation matrix. The algorithm I ended up using is based on &lt;a href="http://dsp.stackexchange.com/questions/2736/step-by-step-camera-pose-estimation-for-visual-tracking-and-planar-markers"&gt;this post&lt;/a&gt; on Stack Exchange, &lt;a href="https://gist.github.com/740979/97f54a63eb5f61f8f2eb578d60eb44839556ff3f"&gt;this gist&lt;/a&gt; on GitHub, and &lt;a href="https://en.wikipedia.org/wiki/Camera_resectioning"&gt;this Wikipedia page&lt;/a&gt;. I will attempt to describe how the algorithm works in the rest of this post.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.danieldjohnson.com/2015/01/23/augmented-shanahan-extrapolation/"&gt;Read more…&lt;/a&gt; (6 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>computer vision</category><category>glsl</category><category>math</category><category>project writeup</category><category>three.js</category><category>Uncategorized</category><guid>https://www.danieldjohnson.com/2015/01/23/augmented-shanahan-extrapolation/</guid><pubDate>Fri, 23 Jan 2015 15:29:01 GMT</pubDate></item><item><title>Whiteboard Drawing Bot - Part 2: Algorithms</title><link>https://www.danieldjohnson.com/2014/08/04/whiteboard-drawing-bot-part-2-algorithms/</link><dc:creator>Daniel D. Johnson</dc:creator><description>&lt;div&gt;&lt;p&gt; In order to actually use my whiteboard drawing bot, I needed a way to generate the commands to be run by the Raspberry Pi. Essentially, this came down to figuring out how to translate a shape into a series of increases and decreases in the positions of the two stepper motors.&lt;/p&gt;

&lt;p&gt;The mechanical design of the contraption can be abstracted as simply two lines: one bound to the origin point and one attached to the end of the first. The position of the pen is then the endpoint of the second arm:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.danieldjohnson.com/media/uploads/2014/08/download.png"&gt;&lt;img src="https://www.danieldjohnson.com/media/uploads/2014/08/download.png" alt="download" width="312" data-imported-height="148" class="aligncenter size-large wp-image-126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The arms cannot move freely, however. The first arm can only be at discreet intervals, dividing the circle into the same number of steps as the stepper motor has. The second arm can actually only be in half that many positions: it has the same interval between steps, but can only sweep out half a circle. Furthermore, the second arm's angle is relative to the first's: if each step is 5 degrees and the first arm is on the third step, then the second arm's step zero follows the first arm's angle and continues at 15 degrees. &lt;/p&gt;&lt;p&gt;&lt;a href="https://www.danieldjohnson.com/2014/08/04/whiteboard-drawing-bot-part-2-algorithms/"&gt;Read more…&lt;/a&gt; (14 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>algorithm</category><category>javascript</category><category>math</category><category>project writeup</category><category>Uncategorized</category><guid>https://www.danieldjohnson.com/2014/08/04/whiteboard-drawing-bot-part-2-algorithms/</guid><pubDate>Mon, 04 Aug 2014 00:47:06 GMT</pubDate></item></channel></rss>