En informática , un sistema basado en reglas es un sistema informático en el que el conocimiento específico del dominio 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 , a diferencia de 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 basado en reglas de producción es el sistema experto de dominio específico que utiliza reglas para hacer 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 informáticos 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 manera secuencial.
Un sistema típico basado en reglas tiene cuatro componentes básicos: [3]
Mientras que la fase de comparación del motor de inferencia tiene una interpretación lógica, las fases de resolución de conflictos y de acción no la tienen. En cambio, "su semántica suele describirse como una serie de aplicaciones de varios operadores de cambio de estado, que a menudo resultan bastante complejos (dependiendo de las decisiones que se tomen al decidir qué reglas ECA se activan, cuándo, etc.), y difícilmente pueden considerarse declarativas". [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 conocimiento y resolución de problemas Answer Set Programming (ASP). En todos estos lenguajes, las reglas se escriben 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áusula Horn son Turing completos , [6] [7] para muchas aplicaciones prácticas, es útil extender los programas de cláusula Horn permitiendo condiciones negativas, implementadas por la negación como falla . Dichos programas lógicos extendidos tienen las capacidades de representación de 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 se escriben normalmente en dirección hacia adelante, si A entonces B , y las reglas de programación lógica se escriben normalmente en dirección 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 a la semántica de las reglas. Tampoco afecta a si las reglas se utilizan para razonar hacia atrás, al estilo Prolog, para reducir el objetivo B a los subobjetivos A , o si se utilizan, al estilo Datalog, para derivar B a partir de A .
En el caso de las reglas de producción, la dirección hacia adelante de la sintaxis refleja el carácter de estímulo-respuesta de la mayoría de las reglas de producción, donde el estímulo A viene antes de la respuesta B. Además, incluso en los casos en que la respuesta es simplemente extraer una conclusión B de un supuesto A , como en el modus ponens , el ciclo de emparejamiento-resolución-acción se limita 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ág. 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 la lógica y las reglas, sostiene que la lógica utiliza la deducción, pero las reglas utilizan 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 "tienen que 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}}
: CS1 maint: varios nombres: lista de autores ( enlace )