stringtranslate.com

Sistema basado en reglas

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.

Reglas del sistema de producción.

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.

Construcción

Un sistema típico basado en reglas tiene cuatro componentes básicos: [3]

  • 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 conflicto ), que consta de instancias de todas las producciones satisfechas. Una instanciación de una producción es una lista ordenada de elementos de la memoria de trabajo que satisface el lado de la condición de la producción.
  • Resolución de conflictos : en esta segunda fase, se elige para su ejecución una de las instancias de producción en el conjunto de conflictos. Si no se satisface ninguna producción, el intérprete se detiene.
  • Actuar: En esta tercera fase se ejecutan las acciones de la producción seleccionadas en la fase de resolución de conflictos. Estas acciones pueden cambiar el contenido de la memoria de trabajo. Al final de esta fase, la ejecución vuelve a la primera fase.

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]

Reglas de programación lógica

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 .

Diferencias y relaciones entre reglas de producción y reglas de programación lógica.

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 los 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 limita a razonar 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.

Ver también

Referencias

  1. ^ Crina Grosan; Ajith Abraham (29 de julio de 2011). Sistemas inteligentes: un enfoque moderno. Medios de ciencia y negocios de Springer. págs.149–. ISBN 978-3-642-21004-4.
  2. ^ Sin-Wai Chan (13 de noviembre de 2014). Enciclopedia de tecnología de traducción de Routledge. Rutledge. págs. 454–. ISBN 978-1-317-60815-8.
  3. ^ "¿Qué es un sistema basado en reglas?". j-paine.org .
  4. ^ Cabitza, F. y Dal Seno, B. (2005). "DJess: un middleware de intercambio de conocimientos para implementar sistemas de inferencia distribuidos". Revista Internacional de Ingeniería Informática y de la Información . 2 : 66–69. doi :10.1109/PERSER.2005.1506416. S2CID  27323155.{{cite journal}}: Mantenimiento CS1: varios nombres: lista de autores ( enlace )
  5. ^ Maier, D., Tekle, KT, Kifer, M. y Warren, DS, 2018. Registro de datos: conceptos, historia y perspectivas. En Programación lógica declarativa: teoría, sistemas y aplicaciones (págs. 3-100).
  6. ^ Tärnlund, S.Å. (1977). "Computabilidad de la cláusula de cuerno". BIT Matemáticas Numéricas . 17 (2): 215–226. doi :10.1007/BF01932293. S2CID  32577496.
  7. ^ Andréka, H.; Németi, I. (1978). "La integridad generalizada de la lógica de predicados de Horn como lenguaje de programación". Acta Cibernética . 4 (1): 3–10.
  8. ^ Thagard, Paul (2005). Mente: Introducción a la ciencia cognitiva . La prensa del MIT. pag. 11.ISBN 9780262701099.https://www.google.co.uk/books/edition/Mind_first_edition/gjcR1U2HT7kC?hl=en&gbpv=1&pg=PP11&printsec=frontcover