Compilamos una vez, diferenciamos en todas partes ✛

Original: "Compile Once, Differentiate Everywhere: A Differentiable Meta-Circular Interpreter"
· Lucas Sheneman
arXiv:2606.09930 · 2026-06-07 · CC BY 4.0 · 1 min
Un intérprete de Scheme compilado en un grafo diferenciable permite optimizar cualquier programa como si fuera datos.

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 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.

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.

\frac{\|\nabla_{\theta} L_{\text{DMCI}} - \nabla_{\theta} L_{\text{direct}}\|_2}{\|\nabla_{\theta} L_{\text{direct}}\|_2} \approx 0
El error relativo del gradiente es cercano a cero, lo que confirma su corrección.
\text{throughput speedup} = \frac{\text{time sequential}}{\text{time batched}}
Cociente entre el tiempo de ejecución secuencial y el de ejecución por lotes.
L(\theta) = \ell(\pi(\text{eval}(P(\theta), x)))
La pérdida se calcula como una función diferenciable de la salida del intérprete.
Científicos
Niels BohrPascual JordanWerner HeisenbergJoseph Fourier
Conceptos
clasificador autoencoder decodificador reconstrucción de datos con redes neuronales autocorrección de IA análisis de componentes independientes IA explicable cálculo modelo generativo interfaz cerebro-computadora xgboost red neuronal profunda procesamiento paralelo forma diferencial reducción de dimensionalidad procesamiento del lenguaje natural