48 votes

Chaînage en avant ou en arrière

A quoi sert l'un que l'autre ne pratique pas ? Je comprends la théorie de ce qu'ils font, mais quelles sont leurs limites et leurs capacités dans la pratique ? J'envisage d'utiliser Drools plutôt qu'un prologue java pour un nouveau projet d'IA, mais je suis ouvert à toute autre suggestion. Quelles sont les approches les plus populaires pour l'inférence sur un ensemble de données relationnelles compliqué ou des alternatives ?

6 votes

Une belle référence : "Étude de la différence entre le raisonnement prospectif et le raisonnement rétrospectif". ijetae.com/files/Volume2Issue10/IJETAE_1012_48.pdf

48voto

Le chaînage arrière (à la Prologue) consiste plutôt à trouver quelles conditions initiales forment un chemin vers votre objectif. À un niveau très basique, il s'agit d'une recherche en arrière à partir de votre objectif pour trouver les conditions qui le rempliront.

Le chaînage amont est utilisé pour les applications interrogatives (recherche d'éléments répondant à certains critères). Un exemple commercial d'application de chaînage amont pourrait être la recherche des polices d'assurance couvertes par un contrat de réassurance particulier.

Le chaînage avant (à la CLIPS) fait correspondre des conditions et génère ensuite des inférences à partir de ces conditions. Ces conditions peuvent à leur tour correspondre à d'autres règles. En gros, il prend un ensemble de conditions initiales et tire toutes les déductions possibles de ces conditions.

Les inférences (si elles sont affirmées) peuvent également être des actions ou des événements qui peuvent déclencher des actions externes. Cela est utile dans les systèmes pilotés par les événements, car les ensembles de règles peuvent être configurés pour (par exemple) lancer un flux de travail ou une autre action. Ce type de moteur de règles est le plus couramment utilisé dans les applications commerciales.

Les systèmes pilotés par événements sont une application courante des moteurs de règles à enchaînement direct. Un exemple d'application de chaînage avant peut être un moteur de provisionnement de plans de télécommunications (généralement utilisé pour gérer les plans de téléphonie mobile). L'entrée d'un utilisateur particulier avec un plan particulier déclenchera une série d'éléments à configurer dans divers commutateurs téléphoniques, systèmes de facturation, systèmes financiers, systèmes CRM, etc.

0 votes

Pour info, Drools fait les deux apparemment (en supposant que ces fonctionnalités ont été complétées) : jbug.jp/trans/jboss-rules3.0.2/ja/html/ch01.html

0 votes

L'utilisation du chaînage direct seul pose la question des avantages par rapport à un simple langage de script.

20voto

TechNeilogy Points 856

La réponse de Concerned est très bonne. Quand on me demande de résumer la différence en une phrase, je dis généralement quelque chose comme :

Beaucoup d'hypothèses de sortie + beaucoup de données à l'avance => utiliser le chaînage prospectif.

Moins d'hypothèses de sortie + nécessité de rechercher des données => utiliser le chaînage en amont.

Mais c'est juste une règle de base, pas un commandement.

4voto

Tim Menzies Points 59

À l'époque des systèmes experts, on disait que le chaînage avant était bon pour regarder autour de soi (vérifier ce qui pourrait être) tandis que le chaînage arrière était bon pour confirmer (vérifier si "c'est" vraiment le cas).

Pensez configuration (chaînage avant, XCON [1]) et diagnostic médical (MYCIN) [2].

  1. http://www.aaai.org/Papers/AAAI/1980/AAAI80-076.pdf
  2. https://www.amazon.com/Rule-Based-Expert-Systems-Addison-Wesley/dp/0201101726

2voto

Le chaînage en avant s'intéresse à la question "que va-t-il se passer ensuite ?", tandis que le chaînage en arrière s'intéresse à la question "pourquoi cela s'est-il produit ?".

Un exemple de chaînage prospectif consiste à prédire si l'état du marché des actions a un effet sur les variations des taux d'intérêt.

Un exemple de chaînage en amont est le diagnostic du cancer du sang chez l'homme.

En termes simples, le chaînage avant est principalement utilisé pour prédire les résultats futurs, tandis que le chaînage arrière est principalement utilisé pour analyser les données historiques.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X