En informática , un sistema basado en reglas es un sistema informático en el que el conocimiento de un dominio específico se representa en forma de reglas y se utiliza un razonamiento de propósito general para resolver problemas en el dominio.
En la década de 1970 surgieron dos tipos diferentes de sistemas basados en reglas dentro del campo de la inteligencia artificial :
Las diferencias y relaciones entre estos dos tipos de sistemas basados en reglas han sido una fuente importante de malentendidos y confusión.
Ambos tipos de sistemas basados en reglas utilizan encadenamiento hacia adelante o hacia atrás , en contraste con los programas imperativos , que ejecutan comandos enumerados secuencialmente. Sin embargo, los sistemas de programación lógica tienen una interpretación lógica, mientras que los sistemas de producción no.
Un ejemplo clásico de un sistema de producción basado en reglas es el sistema experto de dominio específico que utiliza reglas para realizar deducciones o elecciones. [1] Por ejemplo, un sistema experto podría ayudar a un médico a elegir el diagnóstico correcto basándose en un conjunto de síntomas, o seleccionar movimientos tácticos para jugar un juego.
Los sistemas basados en reglas se pueden utilizar para realizar análisis léxicos para compilar o interpretar programas de computadora, o en el procesamiento del lenguaje natural . [2]
La programación basada en reglas intenta derivar instrucciones de ejecución a partir de un conjunto inicial de datos y reglas. Este es un método más indirecto que el empleado por un lenguaje de programación imperativo , que enumera los pasos de ejecución de forma secuencial.
Un sistema típico basado en reglas tiene cuatro componentes básicos: [3]
Mientras que la fase de coincidencia del motor de inferencia tiene una interpretación lógica, las fases de resolución de conflictos y acción no la tienen. En cambio, "su semántica generalmente se describe como una serie de aplicaciones de varios operadores de cambio de estado, que a menudo se involucran bastante (dependiendo de las decisiones tomadas al decidir qué reglas ECA se activan, cuándo, etc.), y difícilmente pueden ser descritas". considerado como declarativo". [5]
La familia de programación lógica de sistemas informáticos incluye el lenguaje de programación Prolog , el lenguaje de base de datos Datalog y el lenguaje de representación de conocimientos y resolución de problemas Answer Set Programming (ASP). En todos estos idiomas, las reglas están escritas en forma de cláusulas :
A :- B1, ..., Bn.
y se leen como oraciones declarativas en forma lógica:
A if B1 and ... and Bn.
En el caso más simple de las cláusulas de Horn (o cláusulas "definidas"), que son un subconjunto de la lógica de primer orden , todas las A, B 1 , ..., B n son fórmulas atómicas .
Aunque los programas lógicos de cláusulas de Horn son completos de Turing , [6] [7] para muchas aplicaciones prácticas, es útil ampliar los programas de cláusulas de Horn permitiendo condiciones negativas, implementadas mediante negación como falla . Estos programas de lógica extendida tienen las capacidades de representación del conocimiento de una lógica no monótona .
La diferencia más obvia entre los dos tipos de sistemas es que las reglas de producción generalmente se escriben en dirección hacia adelante, si A entonces B , y las reglas de programación lógica generalmente se escriben hacia atrás, B si A. En el caso de las reglas de programación lógica, esta diferencia es superficial y puramente sintáctica. No afecta la semántica de las reglas. Tampoco afecta si las reglas se usan para razonar hacia atrás, estilo Prolog, para reducir la meta B a las submetas A , o si se usan, estilo Datalog, para derivar B de A.
En el caso de las reglas de producción, la dirección directa de la sintaxis refleja el carácter estímulo-respuesta de la mayoría de las reglas de producción, con el estímulo A precediendo a la respuesta B. Además , incluso en los casos en que la respuesta es simplemente sacar una conclusión B a partir de un supuesto A , como en el modus ponens , el ciclo de emparejamiento-resolución-acto se restringe a razonar hacia adelante de A a B. Razonar hacia atrás en un sistema de producción requeriría el uso de un tipo de motor de inferencia completamente diferente.
En su Introducción a la ciencia cognitiva, [8] Paul Thagard incluye la lógica y las reglas como enfoques alternativos para modelar el pensamiento humano. No considera los programas lógicos en general, pero considera que Prolog no es un sistema basado en reglas, sino "un lenguaje de programación que utiliza representaciones lógicas y técnicas deductivas" (página 40).
Sostiene que las reglas, que tienen la forma SI condición ENTONCES acción , son "muy similares" a los condicionales lógicos, pero son más simples y tienen mayor plausibilidad psicológica (página 51). Entre otras diferencias entre lógica y reglas, sostiene que la lógica usa la deducción, pero las reglas usan la búsqueda (página 45) y pueden usarse para razonar hacia adelante o hacia atrás (página 47). Las oraciones en lógica "deben interpretarse como universalmente verdaderas ", pero las reglas pueden ser valores predeterminados , que admiten excepciones (página 44). No observa que todas estas características de las reglas se apliquen a los sistemas de programación lógica.
{{cite journal}}
: Mantenimiento CS1: varios nombres: lista de autores ( enlace )