ML vs Symbolique
Une qu'on programme avec des règles. Une qui apprend par l'exemple. Ce ne sont pas les mêmes outils — ce ne sont pas les mêmes problèmes.
# L'IA symbolique : on code chaque règle à la main def diagnostiquer(patient): # Règle 1 : fièvre si patient.temperature > 38: et si patient.gorge == "rouge": retourner "angine probable" sinon: retourner "fièvre — consulter" # Règle 2 : toux si patient.toux == "sèche": et si patient.fievre == Vrai: retourner "covid possible" # Sinon : on sait pas retourner "symptômes insuffisants"
Approche 1
Le développeur code explicitement chaque règle. La machine applique. Elle ne comprend rien, elle exécute.
L'IA symbolique (années 1950-1980) repose sur la manipulation de symboles et de règles logiques. On code explicitement ce que la machine doit savoir.
Les systèmes experts en sont l'exemple parfait : des milliers de règles SI/ALORS codées par des experts humains. MYCIN (1970s) diagnostiquait des infections bactériennes avec des centaines de règles médicales.
Avantages : explicable (on sait exactement pourquoi la machine a décidé), déterministe (même entrée = même sortie), peu de données nécessaires.
Limite fatale : on ne peut pas écrire toutes les règles pour des problèmes complexes. Comment écrire les règles pour reconnaître un chat sur une photo ?
Approche 2
On ne programme pas les règles. On donne des exemples. La machine généralise.
Le ML inverse le problème : au lieu de coder des règles, on donne des milliers d'exemples étiquetés et un algorithme trouve les patterns tout seul.
Le modèle ajuste ses paramètres internes pour minimiser ses erreurs sur les exemples d'entraînement. Il généralise ensuite à des cas qu'il n'a jamais vus.
Avantages : gère des problèmes impossibles à coder à la main (vision, langage), s'améliore avec plus de données, découvre des patterns que l'humain n'aurait pas vus.
Limite : boîte noire — on ne sait pas toujours pourquoi le modèle a décidé. Nécessite beaucoup de données. Peut apprendre des biais.
# Le ML : on montre des exemples, pas des règles # Étape 1 : des données labellisées exemples = [ { "temp": 39.2, "toux": "sèche", "résultat": "malade" }, { "temp": 36.8, "toux": "aucune", "résultat": "sain" }, { "temp": 38.5, "toux": "grasse", "résultat": "malade" }, # ... 10 000 exemples de plus ] # Étape 2 : on entraîne le modèle modele = RandomForest() modele.entrainer(exemples) # Étape 3 : il trouve les règles tout seul nouveau_patient = { "temp": 38.9, "toux": "sèche" } modele.predire(nouveau_patient) # → "malade" (92% de confiance)
Cas concret
Même objectif. Deux philosophies radicalement différentes.
# On écrit les règles à la main def est_spam(email): # Mots suspects mots_spam = [ "gagné", "gratuit", "cliquez ici", "urgent" ] pour chaque mot dans mots_spam: si mot dans email.texte: retourner Vrai # → SPAM # Expéditeur inconnu ? si email.expediteur pas dans contacts: si email.liens > 3: retourner Vrai # → SPAM retourner Faux # → OK # Problème : et si le spam # évite ces mots ?
# On montre des exemples étiquetés emails_entrainement = [ ("Vous avez gagné !", "spam"), ("Réunion lundi 9h", "ok" ), ("Offre exclusive !", "spam"), ("Rapport Q3 en PJ", "ok" ), # ... 50 000 emails ] # Entraînement modele = NaiveBayes() modele.entrainer(emails_entrainement) # Prédiction email_test = "Félicitations !" modele.predire(email_test) # → "spam" (88%) # Il s'adapte aux nouveaux # patterns automatiquement
Comparaison
Il n'y a pas de meilleure approche. Il y a le bon outil pour le bon problème.
Choisir le symbolique quand : les règles sont connues et stables, l'explicabilité est critique (médecine, justice), les données sont rares, le système doit être auditable.
Choisir le ML quand : le problème est trop complexe pour être codé à la main (images, langage), on a beaucoup de données, les patterns changent dans le temps, la performance prime sur l'explicabilité.
En pratique, les meilleurs systèmes combinent les deux : un LLM (ML) avec des guardrails symboliques, ou un système expert augmenté par du ML pour les cas difficiles.
En pratique
Le bon outil dépend du problème.
Pas de solution universelle.
Aujourd'hui
Les LLM c'est du ML. Mais on y injecte de la logique symbolique pour les contrôler.
RAG (Retrieval-Augmented Generation) : un LLM (ML) qui consulte une base de connaissance structurée (symbolique) avant de répondre. Moins d'hallucinations.
Guardrails : des règles symboliques qui filtrent les sorties du LLM. "Ne jamais mentionner de noms de personnes réelles." C'est du symbolique appliqué sur du ML.
Outils d'agents : un agent LLM qui appelle une calculatrice (symbolique) pour les maths, une API météo (symbolique) pour les données temps réel. Le ML orchestre, le symbolique exécute.
Le futur de l'IA n'est probablement pas ML seul ou symbolique seul — c'est leur hybridation intelligente selon les besoins.