L'interprète apprend de chaque mot. Il est assis dans la salle de réunion et traduit. Mais au lieu de simplement traduire, il mémorise les phrases qui ont causé des malentendus et les modifie. Au bout d'une heure, sa traduction est plus précise. C'est pareil ici : l'interpréteur Scheme, compilé une seule fois, peut exécuter n'importe quel programme qui lui est fourni comme donnée, tout en calculant des gradients pour améliorer ces programmes.
Auparavant, chaque modèle scientifique devait être réécrit manuellement sous une forme différenciable pour appliquer l'optimisation par gradient. C'est comme si l'on devait engager un nouveau traducteur pour chaque nouveau texte. Maintenant, le traducteur lui-même devient capable d'apprendre : il ne se contente pas de traduire, il comprend aussi comment modifier le texte pour le rendre meilleur. Les auteurs ont créé un compilateur qui traduit le code source Scheme en une représentation intermédiaire ComputeGraph, puis en modules PyTorch ou JAX. La particularité essentielle est que c'est l'interpréteur lui-même qui devient différenciable, et non des programmes individuels.
Le traducteur ne se contente plus de traduire, il apprend de chaque mot. Il peut automatiquement calibrer les paramètres de modèles générés par des modèles de langage dans des tâches scientifiques et d'ingénierie. C'est comme si le traducteur, recevant un brouillon de l'écrivain, le perfectionnait lui-même sans exiger une réécriture complète.
L'interpréteur Scheme, écrit en Scheme lui-même, ne compte que 288 lignes de code. Il prend en charge les fermetures, la récursion, les listes et les appels terminaux, suffisamment pour être auto-applicable.
L'idée d'un programme qui peut se modifier et s'améliorer lui-même par des gradients fait écho au concept des machines gödeliennes de Jürgen Schmidhuber, décrit dans ses travaux sur l'auto-amélioration universelle.