The interpreter learns from every word. It sits in the conference room and translates. But instead of just translating, it remembers which phrases caused confusion and changes them. An hour later, its translation is more accurate. The same idea applies here: a Scheme interpreter, compiled once, can execute any program passed to it as data, and simultaneously compute gradients to improve those programs.
Previously, every scientific model had to be manually rewritten in a differentiable form to apply gradient optimization. That's like needing to hire a new interpreter for every new text. Now, the interpreter itself becomes trainable: it doesn't just translate, but also understands how to change the text to make it better. The authors built a compiler that translates Scheme source code into an intermediate representation called ComputeGraph, and then into PyTorch or JAX modules. The key feature is that the interpreter itself becomes differentiable, not individual programs.
The interpreter now doesn't just translate; it learns from every word. It can automatically calibrate parameters of models generated by language models in scientific and engineering tasks. This is like having an interpreter who, given a draft from a writer, polishes it to perfection without requiring a rewrite from scratch.
The Scheme interpreter written in Scheme itself is only 288 lines of code. Yet it supports closures, recursion, lists, and tail calls, sufficient for self-application.
The idea of a program that can modify and improve itself through gradients echoes the concept of Gödel machines by Jürgen Schmidhuber, described in his work on universal self-improvement.