Encadenamiento Atras Adelante
Encadenamiento Atras Adelante
Encadenamiento Atras Adelante
Inteligencia Artificial
Texto basado en las notas de Bareen Haval Sadiq Mzori y su trabajo Forward and Backward Chaining
Techniques of Reasoning in Rule-Based Systems.
"El presente texto ha sido preparado de manera exclusiva para los alumnos del Curso de Inteligencia
Artificial, que forma parte de la Plan de Estudio de la Escuela de Ciencia de Computación, según el artículo
°44 de la Ley sobre el Derecho de Autor, D.L. N°822. Queda prohibida su difusión y reproducción por
cualquier medio o procedimiento, total o parcialmente fuera del marco del presente curso".
1
El encadenamiento hacia adelante es un razonamiento basado en datos, y comienza con los hechos
conocidos e intenta hacer coincidir las reglas con estos hechos. Existe la posibilidad de que todas las reglas
coincidan con la información (condiciones). En el encadenamiento hacia adelante, primero se prueban las
reglas que buscan hechos coincidentes y luego se ejecuta la acción. En la siguiente etapa, la memoria de
trabajo se actualiza con nuevos hechos y el proceso de comparación comienza de nuevo. Este proceso se
está ejecutando hasta que no queden más reglas o se alcance el objetivo.
El encadenamiento hacia adelante es útil cuando hay mucha información disponible. Es útil imple-
mentar el encadenamiento directo si hay un número infinito de posibles soluciones, como problemas de
configuración y planificación.
Lo contrario de un encadenamiento hacia adelante es un encadenamiento hacia atrás, es decir, a difer-
encia del encadenamiento hacia adelante del razonamiento basado en datos, un encadenamiento hacia
atrás es un método de razonamiento impulsado por objetivos. El encadenamiento hacia atrás comienza
desde el objetivo (desde el final) que es una solución hipotética y el motor de inferencia intenta encontrar la
evidencia coincidente. Cuando se encuentra, la condición se convierte en el subobjetivo y luego se buscan
reglas para probar estos subobjetivos. Simplemente coincide con el RHS del objetivo. Este proceso con-
tinúa hasta que se prueban todos los subobjetivos y retrocede al paso anterior donde se eligió una regla.
Si no hay una regla que se establezca en un subobjetivo individual, se elige otra regla.
El razonamiento de encadenamiento hacia atrás es bueno para los casos en los que no hay tantos hechos
y la información (hechos) debe ser generada por el usuario. El razonamiento del encadenamiento hacia
atrás también es eficaz para su aplicación en las tareas de diagnóstico.
IF está lloviendo
THEN lleve paraguas
Las reglas se componen de dos partes. La parte IF (lado izquierdo o LHS) se llama condición (an-
tecedente) y la parte THEN (lado derecho o RHS) se llama acción (consecuente). Si la parte condicional de
la regla (antecedente) es verdadera, entonces se afirma la parte de conclusión (consecuente). Esto puede
ser un objetivo o un hecho nuevo que se agregará a la memoria de trabajo. La regla puede tener más de
una condición conectada con (conjunción) AND, (disyunción) OR o una mezcla de ambos.
La parte de condición de una regla consiste en el objeto y su valor. El objeto se representa en forma
linguística y se vincula a su valor mediante un operador.
2
Un aviso importante es que el hecho no es "nuevo" si se trata de un cambio de nombre de un hecho
conocido. El cambio de nombre se refiere a que dos oraciones se renombran entre sí si son iguales, excepto
que los nombres de las variables son diferentes.
Las reglas se expresan en una forma cercana al lenguaje humano, pero en realidad el sistema basado
en reglas debe representarse de una manera que los procesos de máquina limitados puedan entender. No
existe una regla de sintaxis estándar. El LHS de la regla consta del nombre del objeto seguido de los
atributos y valores del objeto.
El algoritmo de encadenamiento directo se representa como la secuencia de los siguientes pasos:
• Los hechos iniciales son entradas del usuario que se configuran en la base de datos (memoria de
trabajo)
• Se comprueba LHS de las reglas de producción
• Si la parte de condición lógica de una regla (parte IF) coincide, entonces la regla se activa
Están presentes los siguientes hechos: A = 5, B = 7 y D = 12. Los valores de A y B ayudan a inferir el
valor de C a partir de la regla 1, luego la regla 2 se dispara debido a la C inferida y al hecho conocido D
(por lo que se infiere) y finalmente la regla 3 se dispara para inferir F. utilizando el encadenamiento hacia
adelante se alcanza la meta F.
La solución del problema es hacer coincidir las reglas con los hechos una a una de manera exhaustiva,
además de utilizar técnicas de indexado. El algoritmo que representa la solución es el algoritmo RETE.
REl algoritmo RETE es muy útil para comparar hechos con los patrones de una regla. Escribir las
reglas de una manera particular es más poderoso que escribirlas al azar y esto se realizará implementando
el algoritmo RETE. A continuación se proporcionan un ejemplo de encadenamiento hacia adelante. El
mecanismo de inferencia proporcionará una conclusión adecuada de la base de conocimientos.
3
R1: IF tienes hambre THEN haz comida
R2: IF preparas comida THEN necesitas ingredientes
R3: IF necesita ingredientes THEN, vaya al refrigerador
R4: IF el refrigerador está lleno THEN, tome los ingredientes
R5: IF tomate Y lechuga THEN haz ensalada
R6: IF la carne THEN has parrillada
R7: SI pollo THEN haz pollo frito
R8: SI el refrigerador está vacío THEN duerma
Encuentra la conclusión, si los siguientes hechos están presentes: hambre, el refrigerador está lleno,
carne.
En primer lugar, la regla R1 se dispara, luego las reglas R2, R3, R4 se disparan continuamente una tras
otra y, finalmente, la regla R6 se dispara. Entonces la conclusión es hacer parrillada.
A continuación, se proporciona otra base de conocimientos que sirve para probar la conclusión.
R1: IF A OR B
THEN C
R2: IF D AND E AND F
THEN G
R3: IF C AND G
THEN H
R1: IF A THEN B
R2: IF B AND C THEN D
R3: IF D AND E THEN F
R4: IF F AND G THEN H
Para las reglas anteriores, el encadenamiento hacia adelante se ilustra en forma de grafo que comienza
desde el nodo de la premisa hasta un nodo de salida del objetivo.
4
1.4 Resolución de conflictos en el encadenamiento hacia adelante
Si existe la posibilidad de activar dos o más reglas en las que las partes IF están satisfechas para ejecutarse
al mismo tiempo (las reglas tienen la misma condición), este proceso se denomina conjunto de conflictos.
En este casp, el motor de inferencia debe elegir la regla a disparar del conjunto. La elección de la regla que
se debe activar cuando más de una regla puede activarse es una función de una estrategia de resolución
de conflictos.
A continuación se ofrece un ejemplo sencillo con una base de conocimientos que provoca un conjunto
de conflictos:
Si está presente el hecho de que hace calor, entonces se activarán las tres reglas, por lo que debemos
averiguar qué acción se debe tomar.
Este problema se puede resolver utilizando las siguientes estrategias:
1) La regla con la prioridad más alta se activa primero si hay pocas reglas en la base de conocimientos.
Las reglas deben organizarse en un orden adecuado en la base de conocimientos. A cada regla se le da
prioridad y se selecciona la regla con la mayor prioridad.
2) Si una regla específica proporciona más información que una general, esta regla específica se activa
y este método se denomina la estrategia de coincidencia más larga. Este método es más útil en casos no
estándar.
3) Se activa la regla que se agregó más recientemente a la base de datos. Los nuevos elementos de
la memoria de trabajo deben dispararse antes que los más antiguos. De esta manera, el sistema seguirá
una sola cadena de razonamiento, en lugar de seguir esbozando nuevas conclusiones a partir de los datos
antiguos.
La resolución de conflictos se puede definir como un conjunto de pares de los siguientes componentes:
Cuando se decide qué regla se activa primero, la resolución del conflicto asegura que la misma regla
no se pueda ejecutar dos veces.
Esta estrategia ayuda a los sistemas de encadenamiento hacia adelante a obtener un rendimiento ra-
zonable, pero la construcción de las reglas es el punto más importante porque si no se escriben de manera
adecuada, tendremos un control limitado sobre lo que sucederá con las condiciones previas definidas con
precisión, así como cuando deben dispararse diferentes reglas.
Para controlar el rendimiento del sistema, se utilizan los elementos especiales de la memoria de trabajo.
Por ejemplo, podríamos decidir que hay algunas etapas básicas de procesamiento al realizar algunas tareas
5
y ciertas reglas deberían activarse en una etapa determinada, podríamos tener un elemento especial de
memoria de trabajo y agregar a las condiciones previas de todos las reglas relevantes. Cuando se completa
esta etapa, se elimina el elemento de memoria de trabajo.
Hay dos tipos de resolución de conflictos: resolución de conflictos generales y resolución de conflictos
específicos de problemas.
El proceso de selección de reglas es muy importante, porque una selección inconsciente de reglas hace
que se activen varias reglas y muchas de estas reglas pueden no ser útiles para alcanzar el objetivo. Como
resultado, al usuario se le hacen muchas preguntas innecesarias. Por lo tanto, se degradará el rendimiento
del sistema.
En los sistemas basados en reglas, el conocimiento se considera mediante meta-reglas. Las meta-
reglas se utilizan para hacer que el proceso de selección de reglas sea más eficiente. Las meta-reglas se
utilizan para determinar la estrategia de resolución de conflictos. Representan el conocimiento sobre cómo
funcionará el sistema.
Las meta-reglas pueden definir la siguiente propiedad: si el conocimiento de un experto es más confi-
able y probable en comparación con las reglas de otro experto, esto se denomina meta conocimiento. Un
metaconocimiento también se puede interpretar como un conocimiento sobre el conocimiento.
Las meta-reglas tienen mayor prioridad. Después de hacer coincidir las reglas y los hechos y usar la
resolución de conflictos, el sistema elegirá una regla para encontrar el objetivo y en la última etapa, esta
regla se activará. Este proceso puede causar una modificación y se le harán preguntas al usuario además
de los nuevos cálculos y nuevas acciones. Después de todo, el objetivo se le presentará al usuario.
R1: IF A THEN B
R2: IF B THEN C AND D
R3: IF C THEN E
R4: IF D THEN F
R5: IF F THEN G AND H
La búsqueda en profundidad en un encadenamiento hacia adelante para las reglas anteriores se repre-
senta en la figura:
El encadenamiento hacia adelante generalmente tiene reglas que son inútiles en el sistema cuando
intenta encontrar el objetivo. Consideremos el siguiente conjunto de reglas:
IF A AND B THEN D
6
IF A AND C THEN E
IF A AND F THEN G
IF D AND E THEN H
IF D THEN J
IF E AND F AND H THEN K
A continuación se dan dos soluciones del proceso de encadenamiento hacia adelante: el razonamiento
subóptimo y el razonamiento óptimo.
Razonamiento subóptimo:
IF A AND B THEN D
IF A AND C THEN E
IF D AND E THEN I
IF D THEN J
Razonamiento óptimo:
IF A AND B THEN D
IF D THEN J
Como puede verse, la solución subóptima no es eficiente y empeorará si aumenta el número de reglas.
Las heurísticas se utilizan para resolver este problema. En general, las heurísticas se clasifican en formas
débiles y fuertes. Las heurísticas débiles prefieren conjuntos de reglas simples que tienen un pequeño
número de condiciones (parte IF) y también analizan la diferencia sintáctica entre el estado actual y el
estado objetivo, lo que se denomina análisis means-end. Las heurísticas fuertes se conocen como
meta-reglas, destinadas a ser utilizadas para un dominio específico del conocimiento y normalmente son
más útiles que las heurísticas débiles.
Las mejores meta-reglas son las heurísticas fuertes automáticas. Aprenden dinámicamente a seleccionar
la regla en cada etapa mientras el sistema está en el modo de ejecución.
• Funciona muy bien cuando un problema comienza naturalmente mediante la recopilación de datos
y la búsqueda de información que se pueda recopilar para usar en pasos futuros.
• Tiene la capacidad de proporcionar una gran cantidad de datos a partir de los pocos datos o hechos
iniciales disponibles.
• Es una técnica muy popular para la implementación en sistemas expertos y sistemas que utilizan
reglas de producción en la base de conocimientos. Para el sistema experto que necesita interrupción,
control, monitoreo y planificación, el encadenamiento hacia adelante es la mejor opción.
• Cuando hay pocos hechos y estados iniciales, es muy útil aplicar el encadenamiento hacia adelante.
• El motor de inferencia generará nueva información sin saber qué información se utilizará para alcan-
zar el objetivo.
• Se le puede pedir al usuario que ingrese una gran cantidad de entradas sin saber qué entrada es
relevante para la conclusión.
7
• Se pueden disparar varias reglas que no tienen nada para alcanzar el objetivo.
• Puede producir diferentes conclusiones que son las causas de un alto costo del proceso de encade-
namiento.
Hechos: A, B
Objetivo: Demuestra H
Al principio, el sistema busca una regla que compruebe el objetivo, es decir, busca el RHS de las reglas,
que es la regla 3. Luego se considera el LHS de la regla que es la parte IF que contiene la condición de
la regla. En esta etapa, el sistema intenta satisfacer la condición y si los hechos coinciden con la condición
de esta regla, la regla se activa. De lo contrario, el sistema establece un subobjetivo que contiene la nueva
regla y trata de demostrarlO. Entonces, en la regla 3 el sistema mira el LHS y encuentra A y E en la base
de datos, pero solo tenemos A. Por lo tanto, el sistema ahora hará que probar E sea su nuevo subobjetivo.
E se demuestra en la regla número 2, el LHS de la regla número 2 es C. El nuevo subobjetivo es demostrar
C. El sistema agrega el antiguo subobjetivo en una pila. C se prueba en la regla número 1. La condición
en la regla número 1 puede coincidir con los hechos en la base de datos. Ahora el sistema puede probar
los subobjetivos en la pila y el objetivo está probado.
La estructura de un encadenamiento hacia atrás para el problema anterior se representa en la figura
siguiente:
El concepto de encadenamiento hacia atrás se utiliza para construir muchos tipos de sistemas expertos
y especialmente los sistemas interactivos simulan la conversión entre usuarios y una persona experta. Us-
ando la técnica de encadenamiento hacia atrás, el sistema sabrá qué preguntar y cuándo hacer la pregunta
adecuada.
Los sistemas que utilizan el encadenamiento hacia atrás también se conocen como sistemas dirigidos
por objetivos. Tienen una lista de objetivos y tratan de ejecutarlos. La lista agrega dinámicamente nuevos
objetivos a la parte superior de la lista y empuja los viejos objetivos hacia abajo en la lista. La idea es que
8
el sistema funcione en el objetivo superior de la lista una vez, después de que se ejecute y se elimine de la
lista, y el siguiente objetivo se convierta en el objetivo superior e intente ejecutarlo. Este procedimiento se
realiza hasta que no haya ningún objetivo que ejecutar en la lista.
En el encadenamiento hacia atrás, el sistema comienza con las reglas de alto nivel y se puede expandir a
cualquier nivel necesario para llegar a la decisión agregando bloques de reglas que cubren detalles especí-
ficos de la decisión. El sistema puede reutilizar estas reglas en varios lugares. Si en el futuro se necesitan
algunos criterios nuevos para demostrar un objetivo principal, se pueden agregar reglas adicionales al
bloque de reglas y la llamada al sistema y probarlas, lo que facilita la adición de reglas y la expansión de
un sistema.
El encadenamiento hacia atrás permite que el sistema le pida al usuario información sobre las reglas
que tiene. A veces, el usuario no está en condiciones de responder estas preguntas o no tiene la información
requerida. En este caso, agregar algunas reglas más al sistema ayudará al proceso de ejecución, y es posible
que se soliciten estas reglas. información y el usuario podría responder.
9
R1: IF A AND B AND C THEN D
R2: IF E AND F THEN A
R3: IF G AND H THEN B
R4: IF I OR J THEN C
El sistema busca una regla que coincida con el objetivo, que es R1.
Luego, el sistema busca la condición de R1 y trata de completar y esta condición se convierte en el
nuevo subobjetivo (objetivo máximo). En esta etapa, el sistema buscará información para satisfacer la
condición.
Esto es, encontrar una regla que su parte THEN coincida con el nuevo objetivo máximo. No hay infor-
mación pero la parte THEN de R2 coincide con el subobjetivo. La condición de R2 se convierte en el nuevo
subobjetivo y en la base de datos hay un dato que cumple la condición (realiza una compra por más de
200 dólares). Entonces, la regla R2 se activa y el sistema la elimina de la lista de subobjetivos y el antiguo
subobjetivo se convierte en el nuevo subobjetivo, que es R1. En esta etapa, se cumple la condición en R1 y
R1 se dispara. La decisión final es que el cliente obtenga un descuento del 20%.
Al igual que el encadenamiento hacia adelante, el encadenamiento hacia atrás también se puede repre-
sentar en forma de grafo. Suponga que están disponibles las siguientes reglas:
En la figura se muestra la representación gráfica del encadenamiento hacia atrás desde el nodo de
salida del objetivo al nodo de premisa inicial:
10
1.11 Ventajas y desventajas del encadenamiento hacia atrás
A continuación se dan algunas ventajas del encadenamiento hacia atrás:
• El sistema que utiliza el encadenamiento hacia atrás intenta establecer objtivos en el orden en que
llegan a la base de conocimientos.
• Se dirige la búsqueda en encadenamiento hacia atrás.
• Durante la búsqueda, el encadenamiento hacia atrás considera aquellas partes de la base de conocimiento
que están directamente relacionadas con el problema considerado o el encadenamiento hacia atrás
nunca realiza inferencias innecesarias.
• El encadenamiento hacia atrás es una herramienta excelente para tipos específicos de problemas,
como el diagnóstico y la depuración.
• Comparado con el encadenamiento hacia adelante, se solicitan pocos datos, pero se buscan muchas
reglas.
11