# IA neuro-symbolique

L'IA neuro-symbolique (Neuro-symbolic AI en anglais) est un type d'intelligence artificielle qui combine des architectures d'IA neuronales et symboliques, pour remédier aux faiblesses de chacune et ainsi fournir une IA robuste capable de raisonnement, d'apprentissage et de modélisation cognitive.

## Histoire

L'intelligence artificielle (IA) s'est au XXe siècle divisée en deux courants théoriques, basés sur des hypothèses opposées, de modélisation de l'intelligence humaine :
* l'intelligence artificielle symbolique, qui cherche à représenter et reproduire le raisonnement cognitif humain au moyen d'un système de représentation logique des connaissances et postulant que des symboles sont absolument nécessaires pour cela ;
* l'intelligence artificielle statistique (et surtout l'Intelligence artificielle connexionniste dont les modèles, au contraire, se passent du langage logique, en fonctionnant avec des réseaux de neurones), avec comme inconvénient d'être moins « explicable ».
Au XXIe siècle, les experts du domaine de l'IA cherchent à réconcilier et réunir ces deux approches pour bénéficier des avantages de chacune, tout en réduisant les inconvénients de chacune.
Ainsi, selon Leslie Valiant et ses collègues$^,$, pour obtenir un bon modèle cognitif informatique et riche d'IA, il faut combiner un raisonnement symbolique et un apprentissage automatique efficace.
Pour Gary Marcus : « Nous ne pouvons pas construire de modèles cognitifs riches de manière adéquate et automatisée sans le triumvirat d'une architecture hybride, de riches connaissances préalables et de techniques de raisonnement sophistiquées ». Et « pour construire une approche robuste et axée sur la connaissance de l'IA, nous devons disposer de la machinerie de manipulation des symboles dans notre boîte à outils. Trop de connaissances utiles sont abstraites pour procéder sans outils qui représentent et manipulent l'abstraction, et à ce jour, le seul mécanisme connu capable de manipuler de telles connaissances abstraites de manière fiable est l’appareil de manipulation de symboles ».
Henry Kautz, Francesca Rossi et Bart Selman ont aussi plaidé pour une telle synthèse. Leurs arguments tentent d'aborder les deux types de pensée, comme indiqué dans le livre de Daniel Kahneman, Système 1 / Système 2 : Les deux vitesses de la pensée, qui décrit la cognition comme englobant deux composantes :
* le système 1, qui est rapide, réflexif, intuitif et inconscient ; c'est celui qui reconnaît les formes ;
* le système 2 qui est plus lent, travaille étape par étape et qui est plus explicite. C'est lui qui gère la planification, la déduction et la pensée délibérative.
De ce point de vue, l'apprentissage profond gère mieux le premier type de cognition, tandis que le raisonnement symbolique gère mieux le second type.
Les deux sont nécessaires pour une IA robuste et fiable, capable d'apprendre, de raisonner et d'interagir avec les humains pour accepter des conseils et répondre à des questions.
De tels modèles (à double processus, avec des références explicites aux deux systèmes contrastés) sont explorés depuis les années 1990$^,$, à la fois en IA et en sciences cognitives, par de nombreux chercheurs. Le bond en avant de l'IA générative (IAg) au tout début des années 2020 a mis en exergue des difficultés de biais, d'explicabilité et d'interprétabilité ou encore de robustesse de l'IAg, liées aux limites des approches d'apprentissage profond ; un nombre croissant de chercheurs en IA ont alors appelé à combiner le meilleur des deux approches (symboliques et des réseaux neuronaux)$^,$, et à aborder de front les situations où les deux approches ont des difficultés (ex. : sens commun, raisonnement de bon sens).

## Approches intégratives

Ces approches sont diverses. Une taxonomie des architectures neuro-symboliques a été proposée par Henry Kautz, présentée ci-dessous, avec quelques exemples :
* Symbolique neuronale symbolique : c'est l'approche actuelle de nombreux modèles neuronaux dans le traitement du langage naturel, où les mots (ou des jetons de sous-mots) sont l'entrée et la sortie ultimes des grands modèles de langage. Les exemples incluent BERT, RoBERTa et GPT-3.
* Symbolique [neuronal] ; avec par exemple AlphaGo, où des techniques symboliques sont utilisées pour invoquer des techniques neuronales. Dans ce cas, l’approche symbolique est la recherche arborescente de Monte Carlo et les techniques neuronales apprennent à évaluer les positions du jeu.
* Neuronal | Symbolique : utilise une architecture neuronale pour interpréter les données perceptuelles comme des symboles et des relations raisonnées symboliquement. Neural-Concept Learner en est un exemple.
* Neural : Symbolique → Neural ; s'appuie sur un raisonnement symbolique pour générer ou étiqueter des données d'entraînement qui sont ensuite apprises par un modèle d'apprentissage en profondeur, par exemple pour entraîner un modèle neuronal pour le calcul symbolique en utilisant un système mathématique symbolique de type Macsyma pour créer ou étiqueter des exemples.
* Neural_{Symbolique} : utilise un réseau neuronal généré à partir de règles symboliques. Un exemple est le Neural Theorem Prover qui construit un réseau neuronal à partir d'un arbre de preuve AND-OR généré à partir de règles et de termes de la base de connaissances. Les réseaux de tenseurs logiques entrent également dans cette catégorie.
* Neural[Symbolique] — permet à un modèle neuronal d'appeler directement un moteur de raisonnement symbolique, par exemple pour effectuer une action ou évaluer un état. Un exemple serait ChatGPT utilisant un plugin pour interroger Wolfram Alpha.
Ces catégories ne sont pas exhaustives (elles n'incluent pas les systèmes multi-agents).
En 2005, Bader et Hitzler ont proposé une catégorisation affinée, étudiant par exemple des systèmes utilisant des symboles incluant la logique et si c'était le cas, si cette logique était propositionnelle ou du premier ordre.
La catégorisation de 2005 et la taxonomie de Kautz ci-dessus sont comparées et contrastées dans un article de 2021.
Récemment, Sepp Hochreiter a soutenu que les réseaux de neurones graphiques " ou "GNN" (une classe de réseaux de neurones artificiels conçus pour traiter des données représentées sous forme de graphes.)...sont les modèles prédominants de l'informatique neuro-symbolique " car "décrivant les propriétés des molécules, simulent les réseaux sociaux ou prédisent les états futurs en physique et dans les applications d'ingénierie. applications avec des interactions particule-particule.

## Intelligence générale artificielle

Marcus soutient que « ... des architectures hybrides combinant l'apprentissage et la manipulation de symboles sont nécessaires pour une intelligence robuste, mais pas suffisantes », et qu'il existe :
"... quatre prérequis cognitifs pour construire une intelligence artificielle robuste :
* "des architectures hybrides combinant l'apprentissage à grande échelle avec les pouvoirs de représentation et de calcul de la manipulation de symboles,
* "des bases de connaissances à grande échelle — exploitant probablement des cadres innés — qui intègrent des connaissances symboliques ainsi que d'autres formes de connaissances,
* "des mécanismes de raisonnement capables d'exploiter ces bases de connaissances de manière exploitable,
* « des modèles cognitifs riches fonctionnant avec ces mécanismes et bases de connaissances ».
Ceci fait écho aux appels antérieurs en faveur de modèles hybrides, émis dès les années 1990$^,$.

## Histoire

Garcez et Lamb ont décrit les recherches dans ce domaine comme étant en cours au moins depuis les années 1990.
Une série d'ateliers sur l'IA neuro-symbolique a lieu chaque année depuis 2005 sur l'intelligence artificielle neuro-symbolique. Au début des années 1990, une première série d’ateliers sur ce sujet a été organisée.

## Recherche

De nombreuses questions de recherche clés demeurent, dont :
* Quelle est le meilleur moyen d’intégrer les architectures neuronales et symboliques ?
* Comment les structures symboliques doivent-elles être représentées au sein des réseaux de neurones ; et comment les en extraire ?
* Comment apprendre et raisonner les connaissances du sens commun ?
* Comment gérer des connaissances abstraites difficiles à encoder logiquement ?

## Mise en œuvre

Les implémentations d’approches neuro-symboliques comprennent par exemple :
* Scallop : un langage basé sur Datalog qui prend en charge le raisonnement logique et relationnel différenciable. Scallop peut être intégré à Python et avec un module d'apprentissage PyTorch ;
* réseaux de tenseurs logiques : codez des formules logiques sous forme de réseaux de neurones et apprenez simultanément les codages de termes, les poids de termes et les poids de formule ;
* DeepProbLog : combine les réseaux de neurones avec le raisonnement probabiliste de ProbLog ;
* SymbolicAI : une bibliothèque de programmation compositionnelle différentiable ;
* réseaux de neurones explicables (XNN) : combinent des réseaux de neurones avec des hypergraphes symboliques et sont formés à l'aide d'un mélange de rétropropagation et d'apprentissage symbolique (appelé induction).