TL;DR: We generalize Turing machines to the continuous setting by storing memory on manifolds and moving around the head using Lie group actions; they are able to learn interesting algorithms.

External neural memory structures have recently become a popular tool for algorithmic deep learning (Graves et al. 2014, Weston et al. 2014). These models generally utilize differentiable versions of traditional discrete memory-access structures (random access, stacks, tapes) to provide the storage necessary for computational tasks. In this work, we argue that these neural memory systems lack specific structure important for relative indexing, and propose an alternative model, Lie-access memory, that is explicitly designed for the neural setting. In this paradigm, memory is accessed using a continuous head in a key-space manifold. The head is moved via Lie group actions, such as shifts or rotations, generated by a controller, and memory access is performed by linear smoothing in key space. We argue that Lie groups provide a natural generalization of discrete memory structures, such as Turing machines, as they provide inverse and identity operators while maintaining differentiability. To experiment with this approach, we implement a simplified Lie-access neural Turing machine (LANTM) with different Lie groups. We find that this approach is able to perform well on a range of algorithmic tasks.

Please let us know what you think by commenting below or contacting @harvardnlp on twitter.

R2 (Euclidean Plane) LANTM on the Odd First task.

Example input: a1a2a3a4...a2k-1a2k

Example output: a1a3...a2k-1a2a4...a2k

Spherical LANTM on the Repeat Copy task.

Example input: @@...@a1...a20 (N copies of special symbol @)

Example output: a1...a20a1...a20...a1...a20 (repeated N times)


Above, we exhibit several animations showing the evolution of the memory access patterns of Lie-access models on a single fixed problem as training progresses. They show that Lie-access models learn very interesting geometric data structures.

Here red indicates write; blue indicates read.