En informática , un sistema basado en reglas es un sistema informático en el que el conocimiento específico de un dominio se representa en forma de reglas y se utiliza el razonamiento de propósito general para resolver problemas dentro de ese dominio.
En la década de 1970 surgieron dos tipos diferentes de sistemas basados en reglas dentro del campo de la inteligencia artificial :
- Sistemas de producción que utilizan reglas condicionales (si-entonces) para derivar acciones a partir de condiciones .
- Sistemas de programación lógica , que utilizan reglas de condición "si" para derivar conclusiones a partir de condiciones .
Las diferencias y relaciones entre estos dos tipos de sistemas basados en reglas han sido una importante fuente 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 listados secuencialmente. Sin embargo, los sistemas de programación lógica tienen una interpretación lógica, mientras que los sistemas de producción no.
Reglas del sistema de producción
Un ejemplo clásico de un sistema basado en reglas de producción es el sistema experto específico del dominio que utiliza reglas para realizar deducciones o tomar decisiones. [ 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 método es más indirecto que el empleado por un lenguaje de programación imperativo , que enumera los pasos de ejecución de forma secuencial.
Construcción
Un sistema típico basado en reglas tiene cuatro componentes básicos: [ 3 ]
- Una lista de reglas o base de reglas , que es un tipo específico de base de conocimiento .
- Un motor de inferencia o razonador semántico , que infiere información o toma medidas basándose en la interacción de la entrada y la base de reglas. El intérprete ejecuta un programa del sistema de producción realizando el siguiente ciclo de coincidencia-resolución-acción: [ 4 ]
- Coincidencia: En esta primera fase, las condiciones de todas las producciones se comparan con el contenido de la memoria de trabajo. Como resultado, se obtiene un conjunto (el conjunto de conflictos ) que consta de instancias de todas las producciones satisfechas. Una instancia de una producción es una lista ordenada de elementos de la memoria de trabajo que satisfacen la condición de la producción.
- Resolución de conflictos : En esta segunda fase, se elige una de las instancias de producción del conjunto de conflictos para su ejecución. Si ninguna producción se satisface, el intérprete se detiene.
- Acto: En esta tercera fase, se ejecutan las acciones de producción seleccionadas en la fase de resolución de conflictos. Estas acciones pueden modificar el contenido de la memoria de trabajo. Al finalizar esta fase, la ejecución regresa a la primera fase.
- Memoria de trabajo temporal , que es una base de datos de hechos.
- Una interfaz de usuario u otra conexión con el mundo exterior a través de la cual se reciben y envían señales de entrada y salida.
Mientras que la fase de coincidencia 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 se suele describir como una serie de aplicaciones de varios operadores que modifican el estado, lo que a menudo resulta bastante complejo (dependiendo de las decisiones tomadas al determinar qué reglas ECA se activan, cuándo, etc.), y difícilmente pueden considerarse declarativas". [ 5 ]
Reglas de programación lógica
La familia de sistemas informáticos de programación lógica incluye el lenguaje de programación Prolog , el lenguaje de bases de datos Datalog y el lenguaje de representación del 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áusulas de Horn son Turing completos , [ 6 ] [ 7 ] para muchas aplicaciones prácticas, es útil extender los programas de cláusulas de Horn permitiendo condiciones negativas, implementadas mediante la negación como fallo . Estos programas lógicos extendidos tienen las capacidades de representación del conocimiento de una lógica no monótona .
Diferencias y relaciones entre las reglas de producción y las reglas de programación lógica.
La diferencia más evidente entre ambos tipos de sistemas radica en que las reglas de producción se suelen escribir en sentido directo ( si A, entonces B) , mientras que las reglas de programación lógica se suelen escribir en sentido inverso ( 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, ni tampoco a si 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 estas reglas, donde el estímulo A precede a la respuesta B. Además, incluso cuando la respuesta consiste simplemente en extraer una conclusión B de una suposición A , como en el modus ponens , el ciclo de coincidencia-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 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).
Argumenta que las reglas, que tienen la forma SI condición ENTONCES acción , son "muy similares" a las condicionales lógicas, 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 utiliza la deducción, mientras que las reglas utilizan la búsqueda (página 45) y pueden usarse para razonar tanto hacia adelante como hacia atrás (página 47). Las proposiciones 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.
Véase también
Referencias
- ↑ Crina Grosan; Ajith Abraham (29 de julio de 2011). Sistemas inteligentes: un enfoque moderno . Springer Science & Business Media. págs. 149–. ISBN 978-3-642-21004-4.
- ↑ Sin-Wai Chan (13 de noviembre de 2014). Routledge Encyclopedia of Translation Technology . Routledge. págs. 454–. ISBN 978-1-317-60815-8.
- ↑ "¿Qué es un sistema basado en reglas?" . j-paine.org .
- ↑ Cabitza, F.; Sarini, M.; Dal Seno, B. (2005). "DJess: un middleware de intercambio de contexto para implementar sistemas de inferencia distribuidos en dominios de computación ubicua". ICPS '05. Actas. Conferencia Internacional sobre Servicios Ubicuos, 2005. Vol. 2. pp. 66–69 . doi : 10.1109/PERSER.2005.1506416 . ISBN 0-7803-9032-6. S2CID 27323155 .
- ↑ Maier, D., Tekle, KT, Kifer, M. y Warren, DS, 2018. Datalog: conceptos, historia y perspectivas. En Programación lógica declarativa: teoría, sistemas y aplicaciones (págs. 3-100).
- ↑ Tärnlund, S.Å. (1977). "Computabilidad de la cláusula Horn". BIT Numerical Mathematics . 17 (2): 215– 226. doi : 10.1007/BF01932293 . S2CID 32577496 .
- ↑ Andréka, H.; Németi, I. (1978). "La completitud generalizada de la lógica de predicados de Horn como lenguaje de programación" . Acta Cybernetica . 4 (1): 3– 10.
- ↑ Thagard, Paul (2005). Mente: Introducción a la ciencia cognitiva . The MIT Press. pág. 11. ISBN 9780262701099.
- Motores de reglas