El intérprete aprende de cada palabra. Está en la sala de reuniones e interpreta. Pero en lugar de simplemente traducir, recuerda qué frases causaron malentendidos y las cambia. Después de una hora, su interpretación es más precisa. Aquí ocurre lo mismo: un intérprete de Scheme, compilado una vez, puede ejecutar cualquier programa que se le pase como datos y, además, calcular gradientes para mejorar esos programas.
Antes, cada modelo científico tenía que reescribirse manualmente en forma diferenciable para poder aplicar optimización por gradientes. Es como si para cada texto nuevo hubiera que contratar a un intérprete nuevo. Ahora, el propio intérprete se vuelve entrenable: no solo traduce, sino que entiende cómo modificar el texto para mejorarlo. Los autores del trabajo han creado un compilador que traduce el código fuente en Scheme a una representación intermedia llamada ComputeGraph, y luego a módulos de PyTorch o JAX. La característica clave es que lo que se vuelve diferenciable es el propio intérprete, no los programas individuales.
El intérprete ya no solo traduce, sino que aprende de cada palabra. Puede calibrar automáticamente los parámetros de modelos generados por modelos de lenguaje en tareas científicas y de ingeniería. Es como si el intérprete, al recibir un borrador del escritor, lo puliera él mismo hasta dejarlo perfecto, sin necesidad de reescribirlo desde cero.
El intérprete de Scheme, escrito en el propio Scheme, ocupa solo 288 líneas de código. Además, soporta cierres, recursión, listas y llamadas de cola, lo suficiente para ser autoaplicable.
La idea de un programa que puede modificarse y mejorarse a sí mismo mediante gradientes resuena con el concepto de máquinas de Gödel de Jürgen Schmidhuber, descrito en sus trabajos sobre automejora universal.