ExpertLab es un motor de inferencia diseñado para la

Anuncio
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
Descargar