• No results found

Los sistemas expertos son una rama de la inteligencia artificial que hace un uso amplio del conocimiento especializado que intenta resolver problemas como un especialista humano (Friedman-Hill 2003). Esto es, el especialista tiene conocimientos o habilidades especiales que la mayoría no conoce o dispone y puede resolver problemas que la mayoría no podría o los resuelve con mayor eficiencia.

El conocimiento de los sistemas expertos puede obtenerse por experiencia o consulta de libros, revistas, encuestas validadas y de personas capacitadas. El término sistema experto también se denomina sistema basado en conocimiento o sistema experto basado en conocimiento. Actualmente existen dos tipos de sistemas expertos según la naturaleza del problema:

• Deterministas

• Estocásticos

Los problemas de tipo determinista pueden ser formulados usando un conjunto de reglas que relacionen objetos bien definidos. El estado actual depende del estado anterior y las acciones sobre el entorno. Se denominan sistemas expertos basados en reglas y usan un mecanismo de razonamiento lógico para obtener conclusiones.

En los problemas de tipo estocástico existen situaciones inciertas por lo que es necesario introducir algunos medios para tratar la incertidumbre. La incertidumbre puede considerarse como la falta de información adecuada para tomar una decisión y genera un problema porque puede evitar que se tome la mejor e incluso una equivocada. Se han desarrollado varias teorías para manejar la incertidumbre y pueden clasificarse entre las que utilizan la probabilidad y las que utilizan otras teorías tales como Inteligencia Artificial (Giarratano 2001):

• Las teorías que utilizan la probabilidad se denominan de incertidumbre reproducibles. Por ejemplo, teorías que utilizan la probabilidad clásica, condicional, bayesiana, de razonamiento temporal y las cadenas de Markov.

• Las teorías no probabilísticas que utilizan factores de incertidumbre y se consideran de razonamiento inexacto, por ejemplo, la teoría de Dempster y Shafer (Dempster 1967) (Shafer 1976), y la teoría de la lógica difusa (Zadeh 1965).

Actualmente los sistemas basados en reglas intentan reemplazar el conocimiento experto humano y se enfocan en automatizar o codificar prácticas de negocio u otras actividades que son parte fundamental de toda organización. Muchos servidores de aplicaciones comerciales incorporan un motor de reglas (motor basado en reglas) y otros explícitamente o implícitamente ofrecen capacidades de integración con ellos.

La modelación de DIACNE implica transformar el cuestionario a términos WF, representarlo en la base de conocimientos y definir un conjunto de reglas de inferencia para las respuestas del usuario a la hora de contestar el cuestionario. El motor de

inferencias del sistema experto con la aplicación de estas reglas obtendrá conclusiones y seleccionará la siguiente pregunta. Esto implica que el cálculo de la siguiente pregunta depende del estado anterior, es decir, de las respuestas del usuario y de la aplicación de las reglas. La modelación de DIACNE requiere de un sistema experto basado en reglas porque la base de conocimiento contiene el conjunto de reglas que definen el problema y no se tiene incertidumbre.

5.3.1 Arquitectura de un sistema basado en reglas

Un sistema basado en reglas es un programa de cómputo que usa reglas para llegar a conclusiones a partir de un conjunto de premisas. Sus raíces históricas incluyen sistemas de producción y en la actualidad tiene un amplio rango de aplicaciones que incluye desde sistemas de control integrados de tiempo real hasta la planeación de recursos empresariales para corporaciones multinacionales. Los sistemas basados en reglas requieren un enfoque diferente de programación en el cuál un sistema de ejecución en tiempo real se usa para las decisiones de flujo de control y de planificación.

La figura 5.3 muestra la arquitectura típica de un sistema basado en reglas (Friedman-Hill 2003) (Giarratano and Riley 2001). El sistema trabaja de la siguiente manera: el igualador de patrones aplica las reglas de la base de conocimiento a los hechos en la memoria activa para construir la agenda. El motor de ejecución dispara las reglas de la agenda, cambia el contenido de la memoria activa y el proceso entero es repetido. A continuación se describen los componentes:

Motor o mecanismo de inferencia (inference engine).

• Hace inferencias al decidir cuáles reglas satisfacen los hechos u objetos. Usualmente trabaja en ciclos discretos y un ciclo consiste:

1. Todas las reglas de la base de conocimiento se comparan con respecto a los hechos por el igualador de patrones y decide cuáles deben activarse. La lista generada de reglas activas en el ciclo y por las de ciclos anteriores se denomina conjunto de conflictos (conflict set).

2. El conjunto de conflictos ordenado forma la agenda que consiste de la lista de reglas cuyo lado derecho será ejecutado o disparado. El proceso de

ordenamiento de la agenda se denomina resolución de conflictos, por ejemplo, por prioridad.

3. Para terminar la ejecución del ciclo la primera regla se dispara con el posible resultado de un cambio en la memoria activa y se repite el proceso para la ejecución de un nuevo ciclo.

Figura 5.3 Arquitectura típica de un sistema basado en reglas.

Base de conocimiento de reglas (rule base).

• Contiene el conocimiento del dominio necesario para resolver los problemas codificados en forma de reglas. Las reglas son un paradigma para representar conocimiento.

• Las reglas pueden almacenarse como cadenas de caracteres y a menudo un compilador de reglas las procesa de tal manera que el motor de inferencias trabaje con mayor eficiencia. Actualmente los sistemas expertos compilan las reglas para construir una estructura compleja de datos indexada denominada red Rete, la cuál facilita el procesamiento de reglas.

Motor de Inferencia Memoria activa Base de conocimiento Agenda Motor deEjecución Igualador de Patrones (hecho f1) (hecho f2) (hecho f3) (regla r3) (regla r1) (regla r2) (f1, f2) r1 (f2, f3) r2 (f1, f2) r1

• Algunos motores de reglas permiten almacenar las reglas en una base de datos relacional externa y otros la tienen integrada.

Memoria activa o de trabajo (working memory).

• Es una base de datos de los hechos usados por las reglas y es denominada como base de hechos.

• Puede contener las premisas y las conclusiones de las reglas.

Igualador de patrones (pattern matcher)

• Su propósito es decidir cuáles reglas se aplican con base en el contenido actual de la memoria activa. El proceso de igualación de patrones siempre se mantiene actualizado y se lleva a cabo independientemente de si los hechos se afirman antes o después que se ha definido una regla. Típicamente esto es un proceso que requiere de mucho procesamiento, por ejemplo, si la memoria activa contiene miles de hechos y cada regla contiene dos o tres premisas, el igualador de patrones necesita buscar a través de millones de combinaciones de hechos para encontrar aquellas que satisfagan las reglas. Para este proceso, los sistemas actuales utilizan el algoritmo Rete desarrollado en 1979 Charles L. Forgy. El algoritmo es un rápido igualador de patrones que en lugar de tener que igualar los hechos con todas las reglas en cualquier ciclo, sólo busca los cambios en las correspondencias de cada ciclo (Giarratano and Riley 2001).

Agenda

• Es el lugar dónde se almacenan las reglas que potencialmente se pueden disparar. Es responsable de usar una estrategia de conflictos para decidir de todas las reglas que se aplican cuál tiene la mayor prioridad y debe dispararse primero. En otras palabras, es una lista con prioridades asignadas a las reglas, creada por el mecanismo de inferencia, cuyos patrones satisfacen los hechos de la memoria activa.

• La estrategia de conflictos comúnmente toma en cuenta la especificidad o complejidad de cada regla y el tiempo relativo de la premisa en la memoria de trabajo. Cada motor de inferencia tiene su enfoque en particular.

Motor de ejecución

• Es el componente del motor de reglas que dispara las reglas. Los sistemas actuales ofrecen un lenguaje de programación completo que puede usarse para definir qué pasa cuando una regla se dispara, por lo mismo, el motor de ejecución representa el ambiente en el cuál el lenguaje de programación se ejecuta.