Scallop, un langage de programmation neuro-symbolique
(scallop-lang.org)- Scallop est un langage déclaratif conçu pour intégrer un raisonnement symbolique fondé sur des règles logiques dans des applications d’IA, basé sur Datalog, un langage de requête pour bases de données relationnelles
- Son solveur prend en charge le raisonnement discret, probabiliste et différentiable, ce qui permet de choisir l’approche la plus adaptée aux besoins de l’application
- Grâce à des liaisons Python, il est possible d’intégrer un module de raisonnement logique dans un programme et de l’associer aux pipelines de machine learning PyTorch existants
- L’approche consiste à combiner, dans des tâches de vision et de NLP, des composants neuronaux produits par un CNN ou un Transformer avec des composants de règles logiques
- Des exemples end-to-end sont fournis pour apprendre conjointement des composants neuronaux et des règles, comme le raisonnement visuel CLEVR, la détection de connectivité Pathfinder ou l’évaluation d’expressions manuscrites
Composants clés de Scallop
-
Language
- Scallop est un langage déclaratif destiné à traiter le raisonnement symbolique dans des applications d’IA
- Il repose sur Datalog, un langage de requête fondé sur des règles logiques pour les bases de données relationnelles
-
Solver
- Scallop est un solveur Datalog extensible
- Il prend en charge les modes de raisonnement discret, raisonnement probabiliste et raisonnement différentiable
- Chaque mode peut être configuré selon les exigences de différentes applications d’IA
-
Framework
- Il fournit des liaisons permettant d’utiliser des modules de raisonnement logique dans des programmes Python
- Il peut s’intégrer en profondeur à des pipelines de machine learning PyTorch existants
Exemples d’applications
- CLEVR est une tâche de raisonnement visuel qui répond à des questions sur de simples objets 3D dans une image, comme « combien y a-t-il d’objets bleus ? »
- Un composant neuronal génère un graphe de scène (scene graph) de l’image ainsi qu’une requête programmatique (programmatic query) représentant la question
- Le composant de raisonnement définit, via des règles logiques, des opérations de sélection, de comparaison et de comptage des objets selon les propriétés indiquées
- Scallop permet d’intégrer ces composants dans un cadre commun et d’effectuer un apprentissage end-to-end
- Pathfinder est une tâche de raisonnement de connectivité à longue portée consistant à déterminer, dans une image noir et blanc contenant deux points et une ligne en pointillés, si ces deux points sont reliés par la ligne
- Elle peut être construite avec une architecture neuronale simple qui détecte les points et les segments, ainsi qu’avec quelques lignes de règles logiques Scallop
- Les règles proposées utilisent
dash(x, y)comme chemin, puis relient récursivementpath(x, z), dash(z, y)pour détermineris_connected() - Cette configuration obtient de meilleures performances que les Transformer de pointe
- L’évaluation d’expressions manuscrites consiste à reconnaître une séquence de symboles manuscrits composée de chiffres de 0 à 9 et d’opérations arithmétiques simples, puis à calculer l’expression
- L’exemple prend
1 + 3 / 5en entrée et calcule la valeur de sortie1.6 - Avec Scallop, on peut construire un parseur de grammaire hors contexte complet capable d’analyser des entrées probabilistes
- Le parseur et l’évaluateur peuvent être écrits en 5 lignes de code Scallop
- Ce programme peut être entraîné de bout en bout avec un modèle neuronal de reconnaissance de symboles individuels ; après l’apprentissage, il trouve l’expression la plus probable et renvoie le résultat de son évaluation
- L’exemple prend
Aucun commentaire pour le moment.