La revanche du calcul analogique

L'ELWAT, un calculateur analogique polonais fabriqué entre 1967 et 1969 ; les éléments visibles sont, de gauche à droite, un voltmètre, un téléscripteur, un oscilloscope et l'ordinateur à proprement parler. ELWAT/wikipedia

Olivier Bournez, François Fages, Guillaume Le Guludec et Amaury Pouly ont reçu, pour cette publication, le Prix La Recherche 2019, option Sciences de l'information. « Les informaticiens ont montré que les réactions chimiques, telles celles qui se produisent dans une cellule, peuvent simuler une machine de Turing. Autrement dit, les réactions chimiques sont des ordinateurs universels. Les informaticiens ont aussi mis au point un compilateur permettant de transformer n'importe quelle fonction mathématique en réactions chimiques élémentaires. » Bravo ! C'est tout sauf simple. Qui mieux qu'Olivier pour nous expliquer qu'il n'est pas nécessaire de calculer en binaire pour réaliser des calculs ?

Cet article est publié en collaboration avec le blog Binaire.

Les ordinateurs actuels fonctionnent dans une logique binaire, c'est-à-dire basée sur de la logique digitale sur des 0 et des 1, et avec un temps discret : une horloge, dont la fréquence est souvent exprimée en giga hertz. Cette horloge séquence les instructions une à une, et les valeurs 0 et 1 correspondent par exemple à +5 ou -5 volts.

Dans le but de construire des modèles alternatifs aux ordinateurs actuels, il est possible de considérer des modèles qui travaillent dans une logique continue : on utilise par exemple des tensions qui peuvent prendre des valeurs réelles, qui ne sont pas seulement binaires. Les composants électroniques ont par défaut un comportement continu.

Des modèles à logique et temps continus

Les modèles de l'intelligence artificielle comme ceux de l'apprentissage profond (deep learning) sont de ce type, car ils travaillent sur des quantités continues. Pour réaliser physiquement ces algorithmes, on le fait souvent avec des ordinateurs digitaux, mais on peut aussi le faire avec de l'électronique analogique. Il n'y a a priori pas besoin pour réaliser ces calculs de les rendre discrets alors qu'ils sont intrinsèquement continus.

Mais de tels modèles restent à temps discret, avec une horloge. On peut aussi considérer des modèles analogiques où à la fois la logique et le temps sont continus.

En fait, les tous premiers ordinateurs étaient de ce type. Par exemple les analyseurs différentiels construits dans les années 1930 au MIT étaient des machines purement mécaniques qui codaient les quantités par des angles, et qui réalisaient des opérations sur celles-ci comme des additions, multiplication, intégration à l'aide d'engrenages et de dispositifs mécaniques ingénieux. Claude Shannon, qui a été opérateur sur ces machines pour payer ses études, a proposé dans les années 1940 un modèle mathématique, appelé “General Purpose Analog Computer (GPAC)” de ces machines. Il a montré que ce qui était programmable sur ces machines correspond à ce qui peut s'écrire par un type d'équations (les équations différentielles ordinaires vectorielles dont le membre droit est polynomial).

En 2019, réaliser avec de l'électronique analogique un GPAC est facile, et certaines sociétés comme Analog Paradigm vendent des composants ou des ordinateurs analogiques basés sur le modèle de Shannon. Les amateurs de musique analogique connaissent aussi de nombreux vendeurs de composants qui permettent d'effectuer des traitements sur des signaux qui permettent de construire soi-même une telle machine si on le souhaite.

Jusqu'en 2007, on pensait ces machines moins puissantes que les ordinateurs digitaux actuels. En fait, il n'en est rien : tout ce qui peut se calculer avec une machine de Turing, c'est-à-dire le modèle mathématique actuel de l'informatique digitale moderne, peut se programmer avec une machine analogique à temps continu. On code pour cela le calcul dans des quantités continues et on laisse la machine évoluer pour produire le résultat.

L'ordinateur « Analog Paradigm Model 1 » Auteur, Author provided

Ce qui est encore plus surprenant, c'est que lorsqu'on programme des fonctions sur des machines (comme celle ci-contre), il suffit de tourner certains potentiomètres pour accélérer les calculs : il est en fait possible de calculer les fonctions aussi vite que l'on souhaite, et donc beaucoup plus vite qu'avec les ordinateurs actuels (au moins si l'on reste sur le modèle mathématique réalisé par la machine).

Depuis 2017, on sait expliquer quelle est la puissance de ces machines : il faut en réalité mesurer le temps de calcul par la longueur de la solution des équations différentielles. La question de savoir si l'on peut calculer plus vite revient ainsi à discuter la longueur des solutions d'une équation différentielle. Ce résultat est surprenant et inattendu, car il relie un concept purement mathématique à un concept informatique : le temps de calcul. Il permet par ailleurs de poser des questions philosophiques très profondes sur certaines notions comme le temps, sur ce que l'on peut prouver avec des modèles mathématiques ou de la physique ou sur ce que l'on peut modéliser par des équations différentielles.

Mais est-il vraiment raisonnable et intéressant de revenir à des machines analogiques ? Une des raisons de l'abandon de ces machines a été historiquement le fait qu'il semblait que la logique analogique ne passait pas aussi bien à l'échelle que la logique digitale.

Programmer des protéines

Le prix du magazine La Recherche 2019 pour la mention « sciences de l'information » a été attribué à une publication qui démontre que l'on peut réaliser ces machines par des réactions biochimiques : les quantités continues sont codées par des concentrations de protéines, qui interagissent par des réactions biochimiques bien choisies. En faisant ainsi, on peut programmer ces protéines pour effectuer tout calcul faisable par une machine de Turing, c'est-à-dire par un ordinateur digital actuel.

Un ouvrage de référence.

Cela ouvre la voie à la réalisation d'ordinateurs alternatifs, et résoudre ce problème du passage à l'échelle, mais aussi à d'autres questions encore plus fascinantes : la nature a, via l'évolution, conçu certains mécanismes cinétiques pour réaliser (c'est-à-dire calculer) certaines opérations, par exemple le maximum de certaines quantités. Pourrait-on les réaliser d'une façon alternative plus efficace ? Les solutions proposées par l'évolution sont-elles les meilleures ? Peut-on concevoir de programmer la biologie d'une façon encore plus efficace ?