Un sistema de producción (o sistema de reglas de producción ) es un programa de computadora que se usa típicamente para proporcionar alguna forma de inteligencia artificial , que consiste principalmente en un conjunto de reglas sobre el comportamiento, pero también incluye el mecanismo necesario para seguir esas reglas a medida que el sistema responde a los estados. del mundo [ cita requerida ] . Esas reglas, denominadas producciones , son una representación básica que se encuentra útil en la planificación automatizada , los sistemas expertos y la selección de acciones .
Las producciones constan de dos partes: una condición previa sensorial (o declaración "SI") y una acción (o "ENTONCES"). Si la condición previa de una producción coincide con el estado actual del mundo, se dice que la producción se activa . Si se ejecuta la acción de una producción , se dice que ha disparado . Un sistema de producción también contiene una base de datos, a veces llamada memoria de trabajo , que mantiene datos sobre el estado actual o el conocimiento, y un intérprete de reglas. El intérprete de reglas debe proporcionar un mecanismo para priorizar las producciones cuando se activa más de una. [ cita requerida ]
Operación básica
Los intérpretes de reglas generalmente ejecutan un algoritmo de encadenamiento hacia adelante para seleccionar las producciones que se ejecutarán para cumplir con los objetivos actuales, que pueden incluir la actualización de los datos o creencias del sistema . La parte de condición de cada regla ( lado izquierdo o LHS) se prueba con el estado actual de la memoria de trabajo.
En sistemas de producción idealizados u orientados a datos, se asume que cualquier condición desencadenada debe ejecutarse: las acciones consiguientes ( lado derecho o RHS) actualizarán el conocimiento del agente, eliminando o agregando datos a la memoria de trabajo. El sistema detiene el procesamiento cuando el usuario interrumpe el bucle de encadenamiento directo; cuando se ha realizado un número determinado de ciclos; cuando se ejecuta un RHS "detenido", o cuando no hay reglas que tengan LHS que sean verdaderas.
Los sistemas expertos y en tiempo real, por el contrario, a menudo tienen que elegir entre producciones mutuamente excluyentes, dado que las acciones llevan tiempo, solo se puede realizar una acción o (en el caso de un sistema experto) recomendada. En tales sistemas, el intérprete de reglas, o motor de inferencia , recorre dos pasos: hacer coincidir las reglas de producción con la base de datos, seguido de seleccionar cuál de las reglas coincidentes aplicar y ejecutar las acciones seleccionadas.
Hacer coincidir las reglas de producción con la memoria de trabajo
Los sistemas de producción pueden variar según el poder expresivo de las condiciones en las reglas de producción. En consecuencia, el algoritmo de coincidencia de patrones que recopila reglas de producción con condiciones coincidentes puede variar desde lo ingenuo (probar todas las reglas en secuencia, deteniéndose en la primera coincidencia) hasta el optimizado, en el que las reglas se "compilan" en una red de condiciones interrelacionadas. .
Este último está ilustrado por el algoritmo RETE , diseñado por Charles L. Forgy en [1] 1974, que se utiliza en una serie de sistemas de producción, denominados OPS y desarrollados originalmente en la Universidad Carnegie Mellon que culminaron en OPS5 a principios de los años ochenta. OPS5 puede verse como un lenguaje de programación completo para la programación de sistemas de producción.
Elegir qué reglas evaluar
Los sistemas de producción también pueden diferir en la selección final de las reglas de producción a ejecutar o disparar . La colección de reglas resultante del algoritmo de coincidencia anterior se denomina conjunto de conflictos y el proceso de selección también se denomina estrategia de resolución de conflictos .
Aquí nuevamente, tales estrategias pueden variar de lo simple: use el orden en que se escribieron las reglas de producción; asigne pesos o prioridades a las reglas de producción y clasifique el conjunto de conflictos de acuerdo con lo complejo; clasifique el conjunto de conflictos de acuerdo con los momentos en que las reglas de producción se activaron previamente; o según la extensión de las modificaciones inducidas por sus RHS. Cualquiera que sea la estrategia de resolución de conflictos que se implemente, el método es crucial para la eficiencia y corrección del sistema de producción. Algunos sistemas simplemente activan todas las producciones coincidentes.
Usando sistemas de producción
El uso de sistemas de producción varía desde simples reglas de reescritura de cadenas hasta el modelado de procesos cognitivos humanos, desde sistemas de reescritura y reducción de términos hasta sistemas expertos .
Un ejemplo de sistema de producción de reescritura de cadenas simple
Este ejemplo muestra un conjunto de reglas de producción para invertir una cadena de un alfabeto que no contiene los símbolos "$" y "*" (que se utilizan como símbolos de marcador).
P1: $$ -> *P2: * $ -> *P3: * x -> x *P4: * -> anular y detenerP5: $ xy -> y $ xP6: nulo -> $
En este ejemplo, las reglas de producción se eligen para las pruebas de acuerdo con su orden en esta lista de producción. Para cada regla, la cadena de entrada se examina de izquierda a derecha con una ventana móvil para encontrar una coincidencia con el LHS de la regla de producción. Cuando se encuentra una coincidencia, la subcadena coincidente en la cadena de entrada se reemplaza con el RHS de la regla de producción. En este sistema de producción, xey son variables que coinciden con cualquier carácter del alfabeto de cadenas de entrada. El emparejamiento se reanuda con P1 una vez que se ha realizado el reemplazo.
La cadena "ABC", por ejemplo, sufre la siguiente secuencia de transformaciones bajo estas reglas de producción:
$ ABC (P6)B $ AC (P5)BC $ A (P5)$ BC $ A (P6)C $ B $ A (P5)$ C $ B $ A (P6)$$ C $ B $ A (P6)* C $ B $ A (P1)C * $ B $ A (P3)C * B $ A (P2)CB * $ A (P3)CB * A (P2)CBA * (P3)CBA (P4)
En un sistema tan simple, el orden de las reglas de producción es crucial. A menudo, la falta de una estructura de control dificulta el diseño de los sistemas de producción. Por supuesto, es posible agregar una estructura de control al modelo de sistemas de producción, es decir, en el motor de inferencia o en la memoria de trabajo.
Un ejemplo de regla de producción de OPS5
En un mundo de simulación de juguetes donde un mono en una habitación puede agarrar diferentes objetos y trepar sobre otros, una regla de producción de ejemplo para agarrar un objeto suspendido del techo se vería así:
(p contiene :: Objeto-Techo {(objetivo ^ estado activo ^ tipo tiene ^ objid) {(objeto físico ^ id} ^ peso ligero ^ en ^ en el techo) } {(escalera de identificación ^ de objeto físico ^ en^ en el piso)
{(mono ^ en la escalera ^ sostiene NIL)} } - (objeto físico ^ en) -> (escribir (crlf) Agarrar(crlf)) (modificar^ en NIL) (modificar^ mantiene (modificar) ^ estado satisfecho) )
En este ejemplo, los datos en la memoria de trabajo están estructurados y las variables aparecen entre paréntesis angulares. El nombre de la estructura de datos, como "objetivo" y "objeto físico", es el primer literal en condiciones; los campos de una estructura tienen el prefijo "^". El "-" indica una condición negativa.
Las reglas de producción en OPS5 se aplican a todas las instancias de estructuras de datos que coinciden con las condiciones y se ajustan a las vinculaciones de variables. En este ejemplo, si varios objetos estuvieran suspendidos del techo, cada uno con una escalera diferente cercana que soportara un mono con las manos vacías, el conjunto de conflicto contendría tantas instancias de reglas de producción derivadas de la misma producción "Holds :: Object-Ceiling". El paso de resolución de conflictos luego seleccionaría qué instancias de producción disparar.
La vinculación de las variables que resultan de la coincidencia de patrones en el LHS se utiliza en el RHS para referirse a los datos que se van a modificar. La memoria de trabajo contiene datos de estructura de control explícitos en forma de instancias de estructura de datos "objetivo". En el ejemplo, una vez que un mono sostiene el objeto suspendido, el estado de la meta se establece en "satisfecho" y la misma regla de producción ya no puede aplicarse ya que falla su primera condición.
Relación con la lógica
Tanto la Introducción a la inteligencia artificial de Russell y Norvig como la Representación del conocimiento: Fundamentos lógicos, filosóficos y computacionales de John Sowa caracterizan los sistemas de producción como sistemas de lógica que realizan el razonamiento mediante el encadenamiento hacia adelante. Sin embargo, Stuart Shapiro, revisando el libro de Sowa, argumenta que esto es una tergiversación. [ cita requerida ] De manera similar, Kowalski y Sadri [2] argumentan que, debido a que las acciones en los sistemas de producción se entienden como imperativos, los sistemas de producción no tienen una semántica lógica. Su lógica y lenguaje informático Logic Production System [3] (LPS) combina programas lógicos, interpretados como creencias de un agente, con reglas reactivas, interpretadas como metas de un agente. Argumentan que las reglas reactivas en LPS dan una semántica lógica a las reglas de producción, que de otra manera carecen. En el siguiente ejemplo, las líneas 1-3 son declaraciones de tipo, 4 describe el estado inicial, 5 es una regla reactiva, 6-7 son cláusulas lógicas del programa y 8 es una ley causal:
1. fuego de fluidos.2. acciones eliminar, escapar.3. eventos tratan_con_fuego.4. fuego inicial.5. si hay fuego, entonces deal_with_fire.6. deal_with_fire si elimina.7. tratar_con_fuego si escapa.8. eliminar termina el fuego.
Observe en este ejemplo que la regla reactiva en la línea 5 se activa, al igual que una regla de producción, pero esta vez su conclusión deal_with_fire se convierte en una meta que se reducirá a subobjetivos usando los programas lógicos en las líneas 6-7. Estos subobjetivos son acciones (línea 2), al menos una de las cuales debe ejecutarse para satisfacer el objetivo.
Sistemas relacionados
- Reglas de manejo de restricciones : lenguaje de programación basado en reglas.
- CLIPS : herramienta de software de dominio público para la construcción de sistemas expertos.
- JBoss Drools : un sistema de gestión de reglas empresariales (BRMS) de código abierto.
- Reglas de ILOG : un sistema de gestión de reglas comerciales.
- JESS : un motor de reglas para la plataforma Java; es un superconjunto del lenguaje de programación CLIPS .
- Lisa : un motor de reglas escrito en Common Lisp.
- Tabletas OpenL : reglas centradas en el negocio y BRMS de código abierto.
- Prolog : un lenguaje de programación lógica de propósito general.
- Soar , OpenCog : arquitecturas cognitivas basadas en un sistema de producción.
Referencias
- ^ "Documentación de Drools" .
- ^ Kowalski, Robert; Sadri, Fariba (12 de enero de 2009). "LPS - Un marco de sistema de producción basado en lógica". Cite journal requiere
|journal=
( ayuda ) - ^ "LPS | Sistemas de producción lógica" .
- Brownston, L., Farrell R., Kant E. (1985). Programación de sistemas expertos en OPS5 Reading, Massachusetts: Addison-Wesley. ISBN 0-201-10647-7
- Klahr, D., Langley, P. y Neches, R. (1987). Modelos de sistemas de producción de aprendizaje y desarrollo . Cambridge, Mass .: The MIT Press.
- Kowalski, R. y Sadri, F. (2016). Programación en lógica sin programación lógica . Teoría y práctica de la programación lógica, 16 (3), 269-295.
- Russell, SJ y Norvig, P. (2016). Inteligencia artificial: un enfoque moderno . Pearson Education Limited.
- Shapiro, S. (2001). Revisión de la representación del conocimiento: fundamentos lógicos, filosóficos y computacionales . Lingüística computacional, 2 (2), 286-294
- Sowa, JF (2000). Representación del conocimiento: fundamentos lógicos, filosóficos y computacionales (Vol. 13). Pacific Grove, CA: Brooks / Cole.
- Waterman, DA, Hayes-Roth, F. (1978). Sistemas de inferencia dirigidos por patrones Nueva York: Academic Press. ISBN 0-12-737550-3
Ver también
- Mecanismo de selección de acciones
- Experto en Sistemas
- Sistema clasificador de aprendizaje
- Máquina de inferencia
- Sistema L
- OPS5
- Representación de reglas de producción
- Algoritmo rete
- Aprendizaje automático basado en reglas
- Reescritura de términos