ExpertLab -- Ejemplo de Utilización http://trevinca.ei.uvigo.es/~jgarcia/SIEX/manual.html ExpertLab es un motor de inferencia diseñado para la enseñanza asistida por ordenador en Inteligencia Artificial, y más concretamente, en el campo de los sistemas expertos. Sus características son: soporte de lógica proposicional, explicación durante la inferencia, ventana final de recogida de información, capacidad de respuesta a explicación (regla y camino recorrido) y encadenamiento hacia adelante y hacia atrás. Introducción Ficheros utilizados por ExpertLab Inserción de Hechos y Reglas Opciones Modo de explicación Encadenamiento hacia adelante Encadenamiento hacia atrás Ejemplo sencillo 14/03/2000 Expertos Manual de Usuario de ExpertLab Sistemas ExpertLab utiliza ficheros de extensión *.bc, que no son más que ficheros de texto, con un formato sencillo: ; (c) Fichero generado por ExpertLab ; Los comentarios pueden ser incluidos siempre 1 de 11 21/10/2013 18:00 ExpertLab -- Ejemplo de Utilización http://trevinca.ei.uvigo.es/~jgarcia/SIEX/manual.html ; que se indique un punto y coma al comienzo de la línea ; Las siguientes partes no son obligatorias ; Título del Sistema Experto. Debe terminar con un punto. ; 'Cabecera' no es parte del título \\\ Cabecera PhD Tesis. ; Objetivo que se intentará cumplir al realizar ; encadenamiento hacia atrás. \\\ Objetivo Tesis. ; Hechos, separados por un salto de línea \\\ Hechos A ; La parte de reglas es obligatoria siempre, en cualquier ; fichero ; Las reglas van separadas por un salto de línea \\\ Reglas C :- A,B ; es lo mismo que if (a and b) then c Los ficheros .bc pueden ser creados o modificados libremente en un procesador de textos que utilice texto puro, sin códigos, como el bloc de notas de Windows o el Edit de MS-DOS (Microsoft(c)). La estructura de ExpertLab sigue el siguiente esquema: De forma que la base de reglas y hechos es completamente independiente del programa en sí, que está constituido por una serie de interfaces de usuario, un motor de inferencia y una memoria activa asociada a éste. ExpertLab, básicamente, acepta como entrada hechos y reglas en el siguiente formato: Hechos: llueve estoy_en_la_calle 2 de 11 21/10/2013 18:00 ExpertLab -- Ejemplo de Utilización http://trevinca.ei.uvigo.es/~jgarcia/SIEX/manual.html Reglas: me_mojo :- llueve, estoy_en_la_calle El formato lógico de reglas es equivalente a if (llueve and estoy_en_la_calle) then me_mojo. consecuente :- precedente, precedente, ..., precedente La visualización del trabajo con ExpertLab se realiza básicamente en base a tres ventanas dentro del propio programa, Hechos, Reglas, e inferencia. Una vez introducidas las entradas, es posible realizar inferencias en esta base de conocimiento, encadenando hacia adelante o hacia atrás. El encadenamiento hacia adelante es un proceso de inferencia dirigido por los datos, de forma que en ExpertLab, a partir de una base de conocimiento como lo anterior, intenta deducir todo lo posible con los 3 de 11 21/10/2013 18:00 ExpertLab -- Ejemplo de Utilización http://trevinca.ei.uvigo.es/~jgarcia/SIEX/manual.html hechos que posee, intentando emparejarlos con las reglas. En este caso, se deduciría "me_mojo", ya que tenemos los dos hechos necesarios para disparar la regla. En el caso del encadenamiento hacia atrás, necesitamos un objetivo que el sistema pueda intentar deducir. En el ejemplo anterior, podría preguntarse por "me_mojo". Es decir, cuando se pregunte al usuario, al invocar el encadenamiento hacia atrás, por el objetivo, se debe introduir "me_mojo" (el texto se puede copiar y pegar). Entonces el sistema, recursivamente hacia atrás, va buscando sucesivamente los objetivos. Por ejemplo, al introducirle el objetivo mencionado, el sistema encuentra la regla me_mojo :- llueve, estoy_en_la_calle, y entonces los objetivos a probar (mediante otras reglas u otros hechos) pasa a ser llueve y estoy_en_la_calle. La inserción de hechos y reglas se realiza mediante las opciones correspondientes del menú "Insertar", o bien pulsando las teclas CTRL+INS e INS, respectivamente. Para introducir el hecho 'llueve', puede pulsarse CTRL+INS o bien elegir la opción "Insertar->Hechos" del menú principal. En el cuadro de diálogo, introducir "llueve" y pulsar enter. El hecho pasa a formar parte de la base de hechos del programa. Para introducir una regla, seleccionar la opción "Insertar->Regla" en el menú principal, o bien pulsar la tecla INS. En el cuadro de diálogo, introducir la regla a agregar a la base de reglas de la base de conocimiento. 4 de 11 21/10/2013 18:00 ExpertLab -- Ejemplo de Utilización http://trevinca.ei.uvigo.es/~jgarcia/SIEX/manual.html El formato a seguir, debe ser: consecuente :- precedente, precedente, precedente, ..., precedente Donde consecuente es el hecho a deducir si los precedentes están presentes. Por ejemplo: a :- b,c,d Confirmamos 'a' (es decir, lo agregamos a la base de hechos) si podemos confirmar (si están en la base de hechos) b, c, y d. En la notación de regla habitual, if(b and c and d) then a. NOTA: Tanto en la introducción de hechos y de reglas, son indiferentes las mayúsculas y las minúsculas. ExpertLab guarda las preguntas y respuestas del usuario en una ventana del sistema llamada "inferencia", y que puede ser recuperada después de cada uno de los encadenamientos. 5 de 11 21/10/2013 18:00 ExpertLab -- Ejemplo de Utilización http://trevinca.ei.uvigo.es/~jgarcia/SIEX/manual.html Además, en el modo de explicación (Opciones->Opciones->Modo Explicación) o bien (Opciones->Modo Educativo), el programa indica paso a paso el objetivo que tiene planteado en ese momento, la regla que está explorando, y las reglas que ha seguido para llegar a esa regla que está explorando y que presumiblemente le permitirá condirmar (o descartar el objetivo). Por otra parte, cada vez que ExpertLab realiza una pregunta - debido a que un hecho no reside en la base de hechos y, que no es existe ninguna regla que ejecutándola permita deducir ese hecho -, permite, pulsando en el botón de explicación, mostrar la regla que motiva esa pregunta, y pulsando el botón de explicación una vez más. ver el camino recorrido para obtener esa regla. La opción del menú principal 'Opciones->Opciones' despliega la siguiente ventana. 6 de 11 21/10/2013 18:00 ExpertLab -- Ejemplo de Utilización http://trevinca.ei.uvigo.es/~jgarcia/SIEX/manual.html Activación de reglas según FIFO: Las reglas, al ser activadas, durante el encadenamiento hacia atrás, se almacenan en el mismo orden en el que se encuentran al explorar la base de conocimiento. El orden en el que se almacenen dicta el orden en el que se explorarán. Si se desmarca esta opción, las reglas se ordenan según el menor número de precedentes, lo cuál implica un menor número de hechos a demostrar, en principio, aunque puede por supuesto que ésto no sea así (puede existir una regla con más precedentes que ninguna otra de las activadas, para la cuál todos los precedentes residen ya en la base de hechos). Explicación durante el proceso inferencial: Si esta opción está activada, ExpertLab explica lo que va haciendo durante el encadenamiento hacia atrás. Utilización de factores de certidumbre: A pesar de que esta opción está activada, no es posible trabajar todavía con factores de certidumbre en ExpertLab. Ignorar 'Objetivo' en el fichero del SE: El sistema siempre preguntará por el objetivo a buscar durante el encadenamiento hacia atrás, a pesar de que exista ya un objetivo definido en el campo 'Objetivo' del fichero .bc que aloja la base de conocimiento actual. Formato de reglas: Permite dos opciones: lógica o programática Un ejemplo equivalente es: Programático if (A and B) then C Lógico C :- A, B Copia de Seguridad: El programa realiza una copia de seguridad de la base de conocimiento que en ese momento está corriendo el programa, cada vez que se sale del programa, o cada vez que se realiza una inferencia. La opción 'Opciones->Información del Sistema Experto' permite especificar el título del sistema experto que en ese momento se está corriendo, a la vez que se puede especificar cual va a ser el objetivo a verificar en el encadenamiento hacia atrás, de forma que no será necesaria la introducción del hecho objetivo. 7 de 11 21/10/2013 18:00 ExpertLab -- Ejemplo de Utilización http://trevinca.ei.uvigo.es/~jgarcia/SIEX/manual.html La opción 'Opciones->Modo Educativo', engloba por ejemplo Ativación de reglas FIFO, visualización programática de las mismas y explicación durante la inferencia. La opción 'Opciones->Modo Eficiente' elimina la activación según FIFO y la explicación. El encadenamiento hacia adelante es una de las dos formas de inferencia incluidas en ExpertLab. La opción, que sólo está disponible cuando existe por lo menos una regla, se sitúa desde el menú principal 'Operar->Encadenamiento hacia adelante', o desde la combinación de teclas ALT+R. También es posible pulsar el botón rápido situado en la barra de botones de encadenamiento hacia adelante. El encadenamiento hacia adelante es un proceso inferencial guiado por los datos, de forma que se busca, según los datos que se poseen - en este caso, los hechos -, activar las reglas que emparejen con esos hechos, y posteriormente ejecutarlas. En ExpertLab, este proceso continúa, recorriendo toda la base de reglas en cada iteración, hasta que en una de estas iteraciones no se produzca ninguna ejecución. En ese momento, el encadenamiento hacia adelante se para. Obsérvese que este comportamiento es bastante costoso, a pesar de que como ventaja ofrece la ventaja de generar toda la posible información que ofrece la situación actual, sea ésta relevante o no. Reglas (formato lógico y programático) Número de regla Lógico Programático 1 a :- b if (b) then a 2 b :- c if (c) then b 3 c :- d if (d) then c Hechos d Encadenamiento hacia adelante El hecho del que disponemos es d. Se recorre la base de reglas para saber cuáles de ellas emparejan con este hecho, y se activan. La única regla que se activa tras este proceso es la tercera, ya que su único precedente es d, que es el hecho del que disponemos. La regla se ejecuta, y añadimos c a la base de hechos. Con esta situación, la siguiente regla activa es la segunda (no es posible ejecutar una regla más de una vez), y al ejecutarla, obtenemos b. A continuación, se ejecuta la primera regla, con lo cuál obtenemos a. La base de hechos pasa a estar formada por bh = <d,c,b,a> 8 de 11 21/10/2013 18:00 ExpertLab -- Ejemplo de Utilización http://trevinca.ei.uvigo.es/~jgarcia/SIEX/manual.html El encadenamiento hacia atrás es el proceso inferencial más complejo del que dispone ExpertLab. Este encadenamiento, es, como ya se ha dicho, un proceso inferencial, dirigido por los objetivos. Por tanto, se debe interrogar al sistema sobre un objetivo en concreto, y el sistema tratará de verificar ese objetivo, añadiendo durante la inferencia sólo aquella información relevante para la verificación. Este encadenamento está disponible a partir de la introducción de la primera regla, bien en la opción 'Operar->Encadenamiento hacia atrás', bien pulsando CTRL+R, bien pulsando el botón de la barra de herramientas de encadenamiento hacia atrás. El encadenamiento hacia atrás se ve afectado por algunas opciones configurables por el usuario. Por ejemplo, es posible disponer que el sistema explique lo que va realizando, según encadena hacia atrás, paso a paso. Se recomienda al usuario la utilización de esta función de explicación, sobre un ejemplo sencillo, para la mejor comprensión de como funciona. Supongamos el siguiente ejemplo: Reglas (formato lógico y programático) Número de regla Lógico Programático 1 a :- b if (b) then a 2 b :- c if (c) then b 3 c :- d if (d) then c Supongamos que para este ejemplo no existe ningún hecho en la base de hechos. Al elegir 'Operar->Encadenamiento hacia atrás', el sistema preguntará el objetivo a verificar (a menos que se haya especificado uno en el fichero de la base de conocimientos o en el menú opciones). En este caso, introduciremos 'a' como hecho a verificar. El sistema comienza intentando emparejar con alguna regla de la base de hechos. En este caso, sólo se empareja la primera con el objetivo, por lo que es la única que se activa. Al examinar la regla, el sistema sabe que debe verificar el precedente de la regla, b, para poder confirmar a. Recursivamente, ahora el objetivo es b, y se activa la regla 2ª, ya que es la que pernite verificar b. Al analizar esta regla, se sabe que para confirmar b, se debe verificar c. Finalmente, el objetivo ahora es c, y la única regla que permite verificarlo es la tercera, de forma que se debe confirmar d. El sistema sigue la estrategia de mirar primero en la base de hechos, buscar después una regla que demuestre el hecho, y finalmente, como en este caso, si ninguna de estas opciones es viable, preguntar al usuario si d es cierto o no. Según la respuesta del usuario, se 'c', 'b' y el objetivo, 'a' se añade a la base de hechos, y la inferencia acaba, o la inferencia acab puesto que no es posible confirmar a, por lo que a es falso. A continuación, se muestra un ejemplo sencillo de un Sistema Experto sencillo, al final en formato BC de ExpertLab. 9 de 11 21/10/2013 18:00 ExpertLab -- Ejemplo de Utilización http://trevinca.ei.uvigo.es/~jgarcia/SIEX/manual.html El texto del ejercicio es el siguiente: "El país se enriquece cuando su moneda es fuerte y cuando su economía está estabilizada. El hecho de que suban las pensiones o de que existan trescientos mil parados son hechos que hacen que se estabilice la economía. En España, la peseta es fuerte, y existen trescientos mil parados." Tras un primer análisis y descomposición, obtenemos: "Si la moneda es fuerte y su economía estabilizada, el país se enriquece" "Si suben las pensiones, se estabiliza la economía" "Si existen trescientos mil parados, se estabiliza economía" "En España, la peseta es fuerte" "En España. existen trescientos mil parados" Que descompuesto es como sigue (obsérvese que sea tenido que uniformizar para que sea coherente), en formato de reglas: if (peseta_fuerte and estabiliza_economía) then enriquece_pais if (suben_pensiones) then estabiliza_economia if (trescientos_mil_parados) then estabiliza economía trescientos_mil_parados peseta_fuerte En formato .bc, como entrada a ExpertLab, es como sigue: ; (c) Fichero generado por ExpertLab ; (c) 1998 Invierno 1999-2000. Escuela Universitaria de Informática \\\ Cabecera Ejemplo de Sistema Experto Sencillo. \\\ Objetivo Enriquece_Pais. \\\ Hechos Peseta_fuerte Trescientos_mil_parados \\\ Reglas Enriquece_pais :- Peseta_fuerte, Estabiliza_economia Estabiliza_economia :- Suben_pensiones Estabiliza_economia :- Trescientos_mil_parados Cópiese y péguese este trózo de código y guárdese como 'peseta.bc'. En ExpertLab, selecciónese 'Abrir' y las reglas y los hechos se cargarán en el programa. Este ejemplo es posible resolverlo mediante el encadenamiento hacia adelante o hacia atrás. Encadenamiento hacia adelante: El sistema examina la base de reglas, y resuelve que es posible ejecutar la 3ª regla. Es decir, la activa. La regla es ejecutada, y Estabiliza_Economía es añadido a la base de hechos. A continuación, la 1ª regla se dispara, y Enriquece_País es añadido a la base de hechos. Encadenamiento hacia atrás: El objetivo del sistema es "Enriquece_País", tal y como se indica en el fichero .bc. Así, la regla que concluye ésto es la primera, por lo que se intenta probar los dos precedentes. El primero reside ya en la base de hechos, mientras que para el segundo existen dos regla que confirmarían 10 de 11 21/10/2013 18:00 ExpertLab -- Ejemplo de Utilización http://trevinca.ei.uvigo.es/~jgarcia/SIEX/manual.html Estabiliza_Economía. Se activan las reglas segunda y tercera para intentar probar éste hecho. La primera en intentar ser ejecutada es la que toma como precedente Suben_Pensiones. El programa concluye que no es posible comprobar Suben_Pensiones, así que anota este hecho para preguntar al usuario (la estrategia última) si es cierto o no, si no llega antes a la solución. La siguiente regla activada se ejecuta, y esta es posible ejecutarla sin problemas, pues "Trescientos_mil_parados", ya existe en la base de hechos. Por lo tanto, se añade "Enriquece_País" como verdadero, ya que se ha comprobado el precedente que faltaba para resolver la primera regla, Estabiliza_Economía, lo cuál permite disparar la regla. Manual de Usuario de ExpertLab 11 de 11 Sistemas Expertos 21/10/2013 18:00