metodología de programación i sistemas expertos - uv.mx · pdf...

59
Introducci´ on Caracter´ ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ ıa de Programaci´on I Sistemas Expertos Dr. Alejandro Guerra-Hern´ andez Departamento de Inteligencia Artificial Facultad de F´ ısica e Inteligencia Artificial [email protected] http://www.uv.mx/aguerra Maestr´ ıa en Inteligencia Artificial 2011

Upload: buikhanh

Post on 06-Feb-2018

222 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Metodologıa de Programacion ISistemas Expertos

Dr. Alejandro Guerra-Hernandez

Departamento de Inteligencia Artificial

Facultad de Fısica e Inteligencia Artificial

[email protected]

http://www.uv.mx/aguerra

Maestrıa en Inteligencia Artificial 2011

Page 2: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Objetivos

I Familiarizarse con la terminologıa propia de los SistemasExpertos.

I Experimentar con la construccion de Sistemas Expertos enProlog

I Elaborar un mini-shell para el desarrollo de Sistemas Expertos.

Page 3: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Estructura de un Sistema Experto (SE)

I Componentes y Personas involucradas en el desarrollo y usode un SE:

Experto enel Dominio

Ingeniero del Conocimieno

Usuario

Ingeniero en Sistemas

Interface conel Usuario

Máquina de Inferencia

Base deConocimiento

Almacén deTrabajo

Experiencia

Page 4: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Componentes

I Base de conocimientos. La representacion declarativa de laexperiencia, muchas veces en forma de reglas IF-THEN.

I Almacen de trabajo. Los datos especıficos al problema que seesta resolviendo.

I Maquina de inferencia. El codigo central del SE que derivarecomendaciones con base en la base de conocimientos y losdatos especıficos del problema.

I Interfaz del usuario. El codigo que controla el dialogoentre el usuario y el SE.

Page 5: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Personas

I Experto del Dominio. Quien resuelve el problema que el SEintentara resolver.

I Ingeniero de Conocimiento. Quien codifica el conocimiento delos expertos para que pueda ser usado por el SE.

I Usuario. Quien consultara el SE para obtener los consejos queesperarıa de un experto del dominio.

I Ingeniero de Sistemas. Quien construye la interfaz del usuario,disena el formato declarativo de la base de conocimientos,e implementa la maquina de inferencia¿adivinan cual es su rol?

Page 6: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Consideraciones

I Dependiendo de la talla del SE, el ingeniero de conocimiento yel ingeniero del sistema, pueden ser la misma persona.

I Al proceso de codificar el conocimiento de los expertos, se leconoce como ingenierıa del conocimiento. El diseno delformato de la base de conocimientos y su codificacion estanıntimamente relacionados.

I Siendo esta una tarea complicada, se busca reutilizar delconocimiento codificado usando shells.

Page 7: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Caracterısticas de un SE 1/2

I Razonamiento guiado por las metas o encadenamiento haciaatras. Inferencia descomponiendo las metas en sub-metas.

I Manejo de incertidumbre. La habilidad del SE para trabajarcon reglas y datos que no son conocidos con precision.

I Razonamiento guiado por los datos o encadenamiento haciaadelante. Inferencia para deducir soluciones a un problema apartir de los datos iniciales disponibles.

Page 8: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Caracterısticas de un SE 2/2

I Representacion de datos. La forma en que los datos especıficosa un problema dado, son almacenados y accesados por el SE.

I Interfaz del usuario. La parte del SE que se usa para unainteraccion mas amigable con el usuario.

I Explicacion. La habilidad para explicar sus procesos derazonamiento y recomendaciones.

Page 9: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Razonamiento basado en metas

I Forma eficiente de resolver problemas modelados como casosde seleccion estructurada. Ej. identificacion y diagnostico.

I La meta del SE es elegir la mejor opcion de entre variasposibilidades enumeradas.

I Ej. reglas parte de un SE para identificar aves.

1 IF familia es albatros AND2 color es blanco3 THEN ave es albatros laysan.4

5 IF familia es albatros AND6 color es negro7 THEN ave es albatros de pies negros.

Page 10: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Albatros Laysan

Page 11: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Sub-metas

I El sistema puede usar otras reglas para resolver a la Prolog lassub-metas planteadas por las reglas de alto nivel, por ejemplo:

1 IF2 orden es tubonasales AND3 tama~no es grande AND4 alas es grandes anguladas5 THEN6 familia es albatros.

Page 12: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Incertidumbre

I Es muy comun en la resolucion de problemas de seleccionestructurada, que la respuesta final no es conocida con totalcerteza.

I Las reglas del experto pueden ser vagas, o el usuario puedeestar inseguro sobre sus respuestas. Esto es facilmenteobservable en el diagnostico medico.

I Los SE normalmente usan valores numericos para representarcertidumbre. Existen diveras maneras de definirlos yusarlos en el proceso de razonamiento.

Page 13: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Razonamiento guiado por datos

I En algunos problemas no es posible enumerar las solucionesalternativas a las preguntas planteadas. Ej. configuracion.

I El encadenamiento hacia adelante usa reglas IF-THEN paraexplorar el estado actual en la solucion del problema ymoverse a estados mas cercanos a la solucion.

I Ej. un SE para acomodar mobiliario.

1 IF no_colocada tv AND2 sofa en pared X AND3 pared Y opuesta a pared X4 THEN colocar tv en pared Y.

Page 14: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Reglas en Prolog

I Podemos usar las reglas de Prolog para representar las reglasdel SE.

1 ave(albatros_laysan) :-2 familia(albatros),3 color(blanco).4 ave(albatros_patas_negras) :-5 familia(albatros),6 color(obscuro).7 ave(cisne_silbador) :-8 familia(cisne),9 voz(suave_musical).

10 ave(cisne_trompetero) :-11 famila(cisne),12 voz(alta_trompeta).

Page 15: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Cisne Trompetero (Audubon, 1838)

Page 16: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Datos y Preguntas en Prolog

I Para que estas reglas tengan exito al distinguir un ave,necesitamos almacenar hechos acerca del ave que deseamosidentificar con el SE.

1 familia(albatros).2 color(obscuro).

I Ahora podemos usar metas para preguntar la SE.

?- ave(X).X = albatros_patas_negrasYes

I Prolog fue disenado para hacer IA.

Page 17: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Caracter jerarquico de reglas

I Representar la naturaleza jerarquica de las reglas del SE. Ej.clasificacion de un ave.

1 orden(nariz_tubular) :-2 fosas(externas_tubulares),3 habitat(mar),4 pico(gancho).5 orden(acuatico) :-6 patas(membrana),7 pico(plano).8 familia(albatros) :-9 orden(nariz_tubular),

10 tama~no(grande),11 alas(muy_largas).12 familia(cisne) :-13 orden(acuatico),14 cuello(largo),15 color(blanco),16 vuelo(pesado).

Page 18: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Granularidad de los datos

I Ahora el SE puede identificar al albatros a partir deobservaciones fundamentales sobre el ave.

I En la primer version, familia/1 fue implementada como unhecho, ahora se implementa como una regla. Los hechos delSE ahora reflejan datos mas primitivos:

1 fosas(externas_tubulares).2 habitat(mar).3 pico(gancho).4 tama~no(grande).5 alas(muy_largas).6 color(obscuro).

?- ave(X).X = albatros_patas_negrasYes

Page 19: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Otras relaciones

I El ganso canadiense puede usarse para agregar complejidad alsistema. Esta ave pasa los veranos en Canada y los inviernosen los Estados Unidos:

1 ave(ganso_canadiense) :-2 familia(ganso), estacion(invierno),3 pais(estados_unidos), cabeza(negra),4 pecho(blanco).5 ave(ganso_canadiense) :-6 familia(ganso), estacion(verano),7 pais(canada), cabeza(negra),8 pecho(blanco).

Page 20: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Metas con referencia a otras jerarquıas

I Las metas pueden hacer referencia a otros predicados en unajerarquıa (ontologıa) diferente:

1 pais(estados_unidos) :- region(oeste_medio).2 pais(estados_unidos) :- region(sur_oeste).3 pais(estados_unidos) :- region(nor_oeste).4 pais(estados_unidos) :- region(

atlantico_medio).5 pais(canada) :- provincia(ontario).6 pais(canada) :- provincia(quebec).7

8 region(nueva_inglaterra) :- estado(X),9 member(X,[ massachusetts , vermont ,

connecticut , maine ]).10

11 region(sur_oeste) :- estado(X),12 member(X,[florida , mississippi , alabama ,

nueva_orleans ]).

Page 21: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Predicados multiples

I Otras aves necesitaran de predicados multiples para seridentificada. Ej. el Mallard macho (Anas platyrhynchos), opato comun del norte, tiene la cabeza verde con un anilloblanco; la hembra tiene la cabeza cafe moteada:

1 ave(mallard):-2 familia(pato),3 voz(graznido),4 cabeza(verde).5 ave(mallard) :-6 familia(pato),7 voz(graznido),8 cabeza(cafe_moteada).

Page 22: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Pato comun del norte (Audubon, 1838)

Page 23: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Representacion

I El sistema puede mejorarse considerablemente si proveemosuna interfaz para el usuario, que pregunte por la informacioncuando esto sea necesario, en lugar de forzar al usuario aintroducirla como hechos del programa.

I Todos los datos, manejandos hasta ahora, han sido de laforma atributo–valor (proposicional).

atributo valorfamilia patovoz graznidocabeza verde

Page 24: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Interaccion

I Usaremos el predicado pregunta para determinar con ayudadel usuario, cuando un par atributo–valor es verdadero:

1 come(X) :- pregunta(come ,X).2 pies(X) :- pregunta(pies ,X).3 alas(X) :- pregunta(alas ,X).4 cuello(X) :- pregunta(cuello ,X).5 color(X) :- pregunta(color ,X).

I La version mas simple de pregunta es como sigue:

1 pregunta(Atrib ,Val):-2 write(Atrib:Val),3 write(’? ’),4 read(si).

Page 25: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Ejemplo de corrida

I La misma llamada a ave/1 inicia la consulta al SE.

?- ave(X).fosas_nasales : externas tubulares ? si.habitat : mar ? si.pico : ganchudo ? si.tama~no : grande ? si.alas : largas ? si.color : blanco ? si.X = albatros_laysan.

I Si se responde “no” a la ultima pregunta, la regla paraave(albratros laysan) falla, y por backtracking, el SEnos preguntarıa nuevamente informacion que ya sabe!

Ipregunta deberıa recordar lo preguntado.

Page 26: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Conocido

I Definiremos un nuevo predicado conocido/3 que nos ayude arecordar las respuestas del usuario.

I Las respuestas no se guardaran directamente en memoria, sinoque seran guardadas dinamicamente con asserta/1 cuandopregunta provea informacion nueva para el SE:

1 pregunta(A,V) :- conocido(si,A,V), !.2

3 pregunta(A,V) :- conocido(_,A,V), !, fail.4

5 pregunta(A,V) :-6 write(A:V),7 write’? : ’),8 read(Resp),9 asserta(conocido(Resp ,A,V)),

10 Resp == si.

Page 27: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Menues contextuales

I Para atributos de un solo valor, la interfaz pregunta una vez.

1 pregunta(A,V) :-2 not(multivariado(A)),3 conocido(si,A,V2),4 V \== V2, !, fail.

I Para atributos multivariados, una guıa sobre los valoresvalidos se implementa con el predicado menu pregunta.

1 tama~no(X) :-2 menu_pregunta(tama~no , X, [grande , mediano ,

peque~no ]).3 color(X) :-4 menu_pregunta(color ,X,[blanco ,verde ,cafe ,

negro]).

Page 28: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Checar pregunta

I La definicion de menu pregunta/3 es:

1 menu_pregunta(A,V,MenuLista) :-2 write(’Cual es el valor para ’,3 write(A), write(’? ’), nl ,4 write(MenuLista),nl ,5 read(Resp),6 checar(Resp ,A,V,MenuLista),7 asserta(conocido(si ,A,X)),8 X == V.9

10 checar(X,A,V,MenuLista) :-11 member(X,MenuLista), !.12 checar(X,A,V,MenuLista) :-13 write(’Ese valor no es valido , intente

nuevamente ’),14 nl, menu_pregunta(A,V,MenuLista).

Page 29: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Revisitando componentes

I El SE de identificacion de aves tiene dos partes: una base deconocimientos, que incluye la informacion especıfica sobre lasaves; y los predicados para controlar la interfaz con el usuario.

I Al separar estas dos partes, podemos crear un shell de SE.Con ello podemos crear un nuevo SE que identifique, porejemplo, peces y reutilizar la parte de control de la interfaz.

I Un cambio mınimo es necesario para separar las dos partes denuestro SE. Necesitamos un predicado de alto nivel que inicieel proceso de identificacion:

1 meta(X) :- ave(X).

Page 30: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Manteninmiento y solucion

I El shell tendra un predicado solucion/0 para labores demantenimiento del SE, para luego resolver la meta/1:

1 solucion :-2 abolish(conocido ,3), define(conocido ,3),3 meta(X),4 write(’La respuesta es: ’), write(X), nl.5

6 solucion :-7 write(’No se encontro una respuesta.’), nl.

Iabolish/2 se usa para eliminar los hechos definidospreviamente con conocido/3, cada vez que unaconsulta se va a ejecutar.

Idefine/2 permite indicarle a Prolog que conocido

estara definido en el SE, para que no cause error.

Page 31: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Resultado

I De esta manera tenemos que el SE ha sido dividido en dospartes. Los predicados en el shell son:

I solucion,I pregunta,I menu pregunta,I los predicados auxiliares de estos.

I Los predicados en la base de conocimientos son:I meta,I las reglas sobre el conocimiento del SE,I las reglas sobre los atributos provistos por el usuario,I las declaraciones de los atributos multi-variados.

Page 32: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Definiendo un REPL

1 se :- bienvenida ,2 repeat ,3 write(’> ’), read(X), do(X),4 X == quit.5

6 bienvenida :-7 write(’Este es el shell de su SE.’), nl,8 write(’Escriba: cargar , consultar , o salir

en el prompt.’), nl.9

10 do(cargar) :- cargar_bd , !.11 do(consultar) :- solucion , !.12 do(salir).13 do(X) :- write(X),14 write(’ no es un comando valido.’),15 nl, fail.16

17 cargar_bd :- write(’Nombre del archivo: ’),18 read(F),reconsult(F).

Page 33: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Arquitectura obtenida

Interfaz del Usuario

sepregunta

menu_pregunta

Máquina de inferencia

solucioncargar

Base de Conocimientos

metareglas

mulivaluadopreguntado

Memoria de trabajo

conocido

Page 34: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Un nuevo SE

I Desarrollaremos un shell que permita manejar reglas conincertidumbre y encadenamiento hacıa atras.

I Evidentemente, este SE tendra un formato de reglas propio,diferente a las reglas de Prolog, y por lo tanto, una maquinade inferencia propia.

Page 35: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Factores de Certidumbre (CF)

I La forma mas comun de trabajar con la incertidumbre consisteen asignar un factor de certidumbre a cada pieza deinformacion en el SE.

I La maquina de inferencia debera mantener los factores deincertidumbre conforme el proceso de inferencia se lleve acabo.

I Por ejemplo, asumamos que los factores de certidumbre(precedidos por cf) son:

I enteros entre -100 (definitivamente falso) yI +100 (definitivamente verdadero).

Page 36: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Ejemplo: SE encendido auto

1 RULE 12 IF not arranca AND3 bateria_mala4 THEN problema is bateria.5

6 RULE 27 IF luces_debiles8 THEN bateria_mala cf 50.9

10 RULE 311 IF radio_debil12 THEN bateria_mala cf 50.13

14 RULE 415 IF arranca AND16 olor_gasolina17 THEN18 problema is fuga cf 80.

1 RULE 52 IF arranca AND3 indicador_gasolina is

vacio4 THEN problema is tanque_vacio

cf 90.5

6 RULE 67 IF arranca AND8 indicador_gasolina is bajo9 THEN problema is tanque_vacio

cf 30.10

11 ASK arranca12 MENU (si no)13 PROMPT ’Su motor arranca? ’.14

15 ASK luces_debiles16 MENU (si no)17 PROMPT ’Sus luces estan18 debiles? ’.

Page 37: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Corrida

consultar , reiniciar , cargar , listar , trazar , como ,salida

: consultarSu motor arranca?: siHuele a gasolina?: siQue indica la aguja de la gasolina?: vacioproblema -tanque -vacio -cf -90problema -fuga -cf -80problema resuelto

Page 38: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Observaciones

I Observen que a diferencia de Prolog, el sistema no se detieneal encontrar el primer posible valor para problema. En estecaso se computan todos los valores razonables para problema yse reporta el valor de certidumbre asociado a estas soluciones.

I Recordemos que estos factores de certidumbre no sonprobabilidades, solo ponderan de alguna manera lasrespuestas.

Page 39: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

CF en los hechos

I De igual manera, el usuario podrıa capturar factores decertidumbre sobre sus respuestas, por ejemplo:

: consultar...Huele a gasolina?si cf 50...

Page 40: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Caracterısticas de los CFs

I Existen diversas maneras de capturar el concepto de factor decertidumbre, pero todas ellas deben de confrontar las mismassituaciones basicas:

I Reglas cuyas conclusiones son inciertas,I Reglas cuyas premisas son inciertas,I Datos provistos por el usuario inciertos,I Combinacion de premisas inciertas con conclusiones inciertas,I Actualizar los factores de incertidumbre en los datos

almacenados en el espacio de trabajo,I Establecer un umbral sobre el cual las premisas se

consideran conocidas.

Page 41: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

MYCYN caso 1: premisas ciertas

I Revisemos el uso de estos factores por casos. El mas simple,serıa aquel donde las premisas son totalmente ciertas:

1 arranca cf 100.2 olor_gas cf 100.

I disparan la regla 4 y por tanto, problema fuga cf 80

debera agregarse al almacen de trabajo.

Page 42: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

MYCIN caso 2: premisas inciertas

I Normalmente no estamos totalmente seguros de las premisasde una regla y lo normal serıa tener hechos como:

1 arranca cf 80.2 olor_gas cf 50.

I Cuando esto sucede, la incertidumbre en las premisas de laregla debe combinarse con las de la conclusion:

CF = CFregla⇥ mınCFpremisa/100

I Ej. la regla 4 se activarıa con un cf = 50 (el mınimode las dos premisas) y dada la formula anterior,agregarıamos problema fuga cf 40.

Page 43: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Disparo de reglas

I Para que una regla dispare, su factor de certidumbre debesuperar un umbral que normalmente se fija en 20.

I Ası que bajo la definicion anterior, la regla 4 dispararıa.

I Si tuviesemos olor gas cf 15, entonces la regla nodispararıa.

Page 44: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

MYCIN caso 3: varias reglas

I Consideren el caso donde hay mas de una regla que dasoporte a cierta conclusion.

I Cada una de las reglas que disparan contribuira al factor decertidumbre de la conclusion. Si una regla dispara y laconclusion ya se encontraba en el almacen de trabajo:

CF (X ,Y ) = X + Y (100� X )/100. Ambos X ,Y > 0

CF (X ,Y ) = X + Y /1� mın(|X |, |Y |). Uno de X ,Y < 0

CF (X ,Y ) = �CF (�X ,�Y ). Ambos X ,Y < 0

Page 45: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Ejemplo

I Si disparamos la regla 2 (luces debiles) con su premisa sinincertidumbre, tendrıamos que agregar al almacen de trabajobateria mala cf 50.

I Luego si disparamos la regla 3 (radio debil), el factor decertidumbre de este hecho debe modificarse a bateria mala

cf 75. Lo cual resulta intuitivo (hay mas evidencia de que labaterıa tiene problemas).

I Lo que tambien resulta intuitivo es que necesitamosprogramar nuestra propia maquina de inferencia.

Page 46: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Formato de las reglas

I cuando Atributo y Valor son atomos, la estructura general delas reglas se ve como:

regla(Nombre ,premisas( [av(A1,V1), av(A2,V2), ... ] ),conclusion(av(Attr ,Val), CF)).

I Por ejemplo, la regla 5 quedarıa representada como:

1 regla(5,2 premisas ([av(arranca ,si),3 av(indicador_gasolina ,vacio)]),4 conclusion(av(problema ,fuga), 80)).

Page 47: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Propiedades maquina de inferencia

I Dado el formato de las reglas del SE deseamos que lainferencia tome en cuenta los siguientes aspectos:

I Combine los factores de certidumbre como se indicoanteriormente.

I Mantenga el espacio de trabajo con la informacion actualizadacon las nuevas evidencias obtenidas.

I Encontrar toda la informacion acerca de un atributo enparticular cuando se pregunte por el, y poner esa informacionen el espacio de trabajo.

Page 48: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Hechos y metas

I Los hechos seran almacenados con el siguiente formato:

hecho(av(A,V),CF).

I Un predicado meta/2 harıa la llamada para resolver unproblema dado en estos terminos. Ej.

?- meta(av(problema ,X),CF).

Imeta/2 debe de contender con tres casos:

I El atributo–valor se conoce de antemano;I Existen reglas para deducir el atributo–valor;I Se debe preguntar al usuario.

Page 49: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Preguntar

I Se puede preguntar al usuario automaticamente por el valorde un atributo, ante la ausencia de reglas; o bien, se puededeclarar que atributos pueden ser preguntados al usuario.

I Ası el manejo de la base de conocimientos sea mas explıcito yprovee mayor control sobre los dialogos usuario – SE.

I Podemos definir un predicado pregunta/2 para declarar elatributo a preguntar y la frase para ello:

pregunta(pais_residencia ,’¿En que paıs vive? ’).

Page 50: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Meta: caso 1

I Veamos ahora los tres casos para meta/2. El primero de ellosocurre cuando la informacion ya esta en la memoria detrabajo:

1 meta(av(Atr ,Val),CF) :-2 hecho( av(Atr ,Val), CF),3 !.

Page 51: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Meta: caso 2

I El valor del atributo no se encuentra en la memoria detrabajo, pero es posible preguntar por ello al usuario:

1 \meta(av(Atr ,Val), CF) :-2 \+ hecho( av(Atr ,_),_),3 pregunta(Atr ,Msg), preguntar(Atr ,Msg), !,4 meta(av(Atr ,Val), CF).

I El predicado preguntar/2 interroga al usuario, quien respondecon un valor para la atributo Atr y un factor de certidumbreasociado CF . El mensaje Msg da la informacion necesariapara guiar al usuario en estas consultas:

1 preguntar(Atr ,Msg) :-2 write(Msg), read(Val), read(CF),3 asserta(fact(av(Atr ,Val),CF)).

Page 52: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Meta: caso 3

I El valor del atributo es desconocido, pero se puede deducirusando las reglas definidas en el sistema:

1 meta(Meta ,CFactual) :-2 buscaReglas(Meta ,CFactual).

I Esta llamada hace uso de la maquina de inferencia quedisenaremos para nuestro SE con incertidumbre.

I El factor de certidumbre se etiqueta como actual, porquees posible que cambie de valor al ir aplicando lasreglas definidas en el sistema.

Page 53: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Buscando reglas

I El predicado buscaReglas/2 se encarga de encontrar aquellasreglas cuya conclusion unifica con la Meta en cuestion y deactualizar el factor de certidumbre con base en las premisas deestas reglas. Si la Meta es un hecho conocido, no hay nadaque hacer, solo regresar true:

1 buscaReglas(Meta ,CFactual) :-2 regla(N, premisas(ListaPremisas),3 conclusion(Meta ,CF)),4 probar(ListaPremisas ,Contador),5 ajustar(CF,Contador ,NuevoCF),6 actualizar(Meta ,NuevoCF ,CFactual),7 CFactual == 100,8 !.9

10 buscaReglas(Meta ,CF) :-11 hecho(Meta ,CF).

Page 54: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Probando premisas

I Dada una lista de premisas pertenecientes a una reglaencontrada para satisfacer la Meta del SE, es necesario quebuscaReglas/2 las pruebe. Para ello definimos probar/2:

1 probar(ListaPremisas , Contador) :-2 probAux(ListaPremisas , 100, Contador).3

4 probAux ([],Contador ,Contador).5 probAux ([ Premisa1|RestoPremisas],

ContadorActual ,6 Contador) :-7 meta(Premisa1 ,CF ,Cont),8 Cont >= 20,9 probAux(RestoPremisas ,Cont ,Contador).

Page 55: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Ajuste de factores

I El ajuste de los factores de certidumbre se lleva a cabo de lasiguiente manera:

1 ajustar(CF1 , CF2 , CF) :-2 X is CF1 * CF2 / 100,3 int_redondear(X,CF).4

5 int_redondear(X,I) :-6 X >= 0,7 I is integer(X + 0.5).8

9 int_redondear(X,I) :-10 X < 0,11 I is integer(X - 0.5).

Page 56: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Actualizacion memoria de trabajo

I La actualizacion de la memoria de trabajo se lleva a cabo dela siguiente manera:

1 actualizar(Meta ,NuevoCF ,CF) :-2 hecho(Meta ,ViejoCF),3 combinar(NuevoCF ,ViejoCF ,CF),4 retract(hecho(Meta ,ViejoCF)),5 asserta(hecho(Meta ,CF)),6 !.7

8 actualizar(Meta ,CF,CF) :-9 asserta(hecho(Meta ,CF)).

Page 57: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Combinacion de CFs

1 combinar(CF1 , CF2 , CF) :-2 CF1 >= 0,3 CF2 >= 0,4 X is CF1 + CF2 *(100 - CF1)/100,5 int_redondear(X,CF).6

7 combinar(CF1 ,CF2 ,CF) :-8 CF1 < 0,9 CF2 < 0,

10 X is -( -CF1 -CF2 *(100+ CF1)/100),11 int_redondear(X,CF).12

13 combinar(CF1 ,CF2 ,CF) :-14 (CF1 < 0 ; CF2 < 0),15 (CF1 > 0 ; CF2 > 0),16 abs_minimum(CF1 ,CF2 ,MCF),17 X is 100 * (CF1 + CF2) / (100 - MCF),18 int_redondear(X,CF).

Page 58: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Interfaz con el usuario

I La interfaz con el usuario es muy parecida a la definida en laseccion anterior. Se incluyen predicados auxiliares necesariosen su definicion:

1 se :-2 repeat ,3 write(’consultar , cargar , salir’), nl,4 write(’: ’),5 read_line(X),6 ejec(X),7 X == salir.8

9 ejec(consultar) :-10 metas_principales , !.11 ejec(cargar) :-12 cargar_reglas , !.13 ejec(salir).

Page 59: Metodología de Programación I Sistemas Expertos - uv.mx · PDF fileIntroducci´on Caracter´ısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre Metodolog´ıa

Introduccion Caracterısticas de los SE Usando Prolog Interfaz con el usuario Shell Incertidumbre

Auxiliares

1 metas_principales :-2 meta_principal(Atr),3 principal(Atr),4 imprime_meta(Atr),5 fail.6 metas_principales.7

8 principal(Atr) :-9 meta(av(Atr ,Val ,CF)), !.

10 principal(_) :- true.11

12 imprime_meta(Atr) :-13 nl,14 hecho(av(Atr ,Val), CF),15 CF >= 20,16 salidap(av(Atr ,Val),CF), nl , fail.17 imprime_meta(Atr) :-18 write (’Meta: ’), write(Attr),19 write(’ solucionada.’), nl , nl.