Vous êtes sur la page 1sur 51

Representacin

del
conocimiento
mediante reglas
(2011/2012)
Luis Valencia Cabrera (coordinador)
lvalencia@us.es
(http://www.cs.us.es/~lvalencia)

Manuel Garca-Quismondo
mgarciaquismondo@us.es
(http://www.cs.us.es/~mgarcia)

Ciencias de la Computacion e IA
(http://www.cs.us.es/)
Universidad de Sevilla

Reglas de produccin
Formalismo mas comn de representar el
conocimiento en un SBC
Tipos de conocimiento
Hechos (afirmaciones)
Reglas:
SI <ANTECEDENTE>*
ENTONCES <CONSECUENTE>*

Interpretaciones posibles:
Si condicin P entonces conclusin C
Si ocurre S entonces accin A

Ventajas de las reglas de
produccin
Modularidad
Conocimiento incremental
Conocimiento modificable
Permiten explicaciones al usuario
Preguntas:
Cmo? (cmo se llega a la conclusin?)
Por qu? (por qu se le pregunta al usuario?)
Ejemplos de reglas
Regla en el SE MYCIN:
si
1. el reactivo toma el color azul
2. la morfologa del organismo es alargada
3. el paciente es un posible receptor
entonces
existe una probabilidad 0.7 de que la infeccin provenga de
organismos pseudomonas.
Regla en el SE AL/X
si
la presin en V01 ha alcanzado la presin de apertura de la
vlvula auxiliar
y la vlvula auxiliar de V01 se ha abierto
entonces
la vlvula auxiliar de V01 se ha abierto prematuramente
Obtencin de reglas
Tales reglas se extraen de:
Expertos humanos
Literatura especializada
Bases de datos
Ejemplo. Fuga de agua.
Descripcin.
Reglas:
Si la cocina est seca y el recibidor
mojado entonces la fuga de agua est
en el bao.
Si el recibidor est mojado y el bao
est seco entonces el problema est
en la cocina.
Si la ventana est cerrada o no llueve
entonces no entra agua del exterior.
Si el problema est en la cocina y no
entra agua del exterior, la fuga de
agua est en la cocina.
Hechos:
El recibidor est mojado.
El bao est seco.
La ventana est cerrada.
Ejemplo. Fuga de agua.
Formalizacin.
Reglas:
fuga_en_bagno :- recibidor_mojado, cocina_seca.
problema_en_cocina :- recibidor_mojado, bagno_seco.
no_agua_exterior :- ventana_cerrada; no_llueve.
fuga_en_cocina :- problema_en_cocina, no_agua_exterior.
Hechos:
recibidor_mojado.
bagno_seco.
ventana_cerrada.

Pregunta en Prolog:
?- fuga_en_cocina.
true
Formalizacin en Prolog.
Debilidades.
El usuario puede no estar familiarizado con
la sintaxis de Prolog.
La representacin del conocimiento puede
no ser natural.

Formalizacin en Prolog.
Operadores.

Vamos a dar una alternativa para
separar la sintaxis de Prolog pura de la
base de conocimiento.
Lo haremos a travs de operadores.
Representacin de
Reglas y hechos
La representacin interna de una
regla debe ser la que aparece a la
derecha.

Cond puede ser una combinacin
mediante o/y, de afirmaciones
(la disyuncin o con precedencia
mayor).



Los hechos se deben representar
internamente como:
f
Representacin. Operadores.
Sintaxis.
Para poder escribir los hechos y reglas
con esta sintaxis definimos una serie de
operadores:
:- op(<prioridad>, <aridad y asociatividad>,
<identificador o lista de identificadores>).
Representacin. Operadores.
Ejemplos.
:- op(875, xfx, hecho).
% El operador hecho tiene aridad 2 y es
simtrico. Estar arriba en el rbol, y se evaluar
despus que cualquier operador con
precedencia menor que 875.
:- op(800, xfy, o).
% El operador o tiene aridad 2 y es asociativo a
la derecha:
Ej: (operando1 f (operando2 f operando3)).
Se evaluar antes que cualquier operador con
prioridad menor que 800.
Fuga de agua. Operadores.
:- op(875, xfx, hecho).
:- op(875, xfx, #).
:- op(825, fx, si).
:- op(850, xfx, entonces).
:- op(800, xfy, o).
:- op(775, xfy, y).
Fuga de agua. Reglas.
r1 # si cocina_seca y
recibidor_mojado
entonces
fuga_en_bagno.
r2 # si recibidor_mojado y
bagno_seco
entonces
problema_en_cocina.
r3 # si ventana_cerrada o
no_llueve
entonces
no_agua_exterior.
r4 # si problema_en_cocina y
no_agua_exterior
entonces
fuga_en_cocina.

Fuga de agua. Hechos.

f1 hecho recibidor_mojado.
f2 hecho bagno_seco.
f3 hecho ventana_cerrada.
Conclusin sobre esta
representacin
Las reglas y hechos de la base de
conocimiento continan siendo hechos
Prolog.
Los operadores Prolog consiguen acercar
la expresin de las reglas al lenguaje
natural.
Esto facilita la legibilidad para el usuario
no familiarizado con Prolog.
Ejemplo: animales. Operadores.
% ----- Operadores adicionales:
:- op(750,xfx,[es,tiene,come,vuela,pone,da,nada]).
% Representacion de varios operadores con la
misma precedencia y asociatividad.
:- op(500,fx,[un,una]).
Ejemplo: animales. Reglas (I)
% ----- Reglas:
r1 # si Animal tiene pelo o Animal da leche
entonces Animal es mamifero.
r2 # si Animal tiene plumas o Animal vuela bien y Animal pone huevos
entonces Animal es un pajaro.
r3 # si Animal es mamifero y
(Animal come carne o Animal tiene dientes afilados) y
(Animal tiene garras y Animal tiene ojos oblicuos)
entonces
Animal es carnivoro.
r4 # si Animal es carnivoro y Animal tiene color pardo
y Animal tiene manchas oscuras
entonces Animal es un guepardo.
r5 # si Animal es carnivoro y Animal tiene color pardo
y Animal tiene rayas negras
Entonces Animal es un tigre.
r6 # si Animal es un pajaro y Animal vuela mal
y Animal nada bien
entonces Animal es un pinguino.
r7 # si Animal es un pajaro y Animal vuela muy bien
entonces Animal es una gaviota.

Ejemplo: animales. Reglas (III)
Ejemplo: animales. Hechos.
%------ Hechos:
f1 hecho oblongo tiene pelo.
f2 hecho oblongo come carne.
f2 hecho oblongo tiene color pardo.
f3 hecho oblongo tiene rayas negras.
f4 hecho rayo da leche.
f5 hecho rayo tiene dientes afilados.
f6 hecho rayo tiene garras.
f7 hecho rayo tiene ojos oblicuos.
f8 hecho rayo tiene color pardo.
f9 hecho rayo tiene manchas oscuras.

Ejemplo: animales.
Observaciones.
Uso de operadores adicionales, propios del
dominio de conocimiento
Uso de variables en las reglas
Ejemplo: coches. Operadores
% ----- Operadores adicionales:
:-
op(725,fx,[velocidad,seguridad,capacidad,gama,
motor,
frenos,cilindrada]).
:- op(725,xf,c_cubicos).
:- op(750,xfx,[es,tiene,no_tiene]).
Ejemplo: coches. Reglas (I).
% ----- Reglas:
r1 # si Coche tiene velocidad X
y (Coche tiene seguridad X o Coche tiene capacidad X)
o Coche tiene seguridad X y Coche tiene capacidad X
entonces Coche es gama X.
r2 # si Coche tiene cilindrada X entonces Coche tiene velocidad X.
r3 # si Coche tiene motor inyeccion y Coche es mono-volumen
entonces Coche tiene velocidad media.
r4 # si Coche tiene motor inyeccion y Coche es deportivo
entonces Coche tiene velocidad alta.

r5 # si Coche es mono_volumen y Coche tiene motor diesel
entonces Coche tiene velocidad baja.
r6 # si Coche tiene 2000 c_cubicos
entonces Coche tiene cilindrada alta.
r7 # si Coche tiene 1600 c_cubicos
entonces Coche tiene cilindrada media.
r8 # si Coche tiene 1400 c_cubicos
entonces Coche tiene cilindrada baja.
r9 # si Coche tiene frenos abs y Coche tiene airbag
entonces Coche tiene seguridad alta.
r10 # si Coche tiene frenos abs y Coche no_tiene airbag o
Coche no_tiene frenos abs y Coche tiene airbag
entonces Coche tiene seguridad media.

Ejemplo: coches. Reglas (II).
r11 # si Coche no_tiene frenos abs y Coche no_tiene airbag
entonces Coche tiene seguridad baja.
r12 # si Coche es deportivo entonces Coche tiene capacidad baja.
r13 # si Coche es mono_volumen entonces Coche tiene capacidad alta.
r14 # si Coche es turismo entonces Coche tiene capacidad media.
Ejemplo: coches. Reglas (III).
Ejemplo: coches. Hechos.
%------ Hechos:
f1 hecho opel_astra tiene 1600 c_cubicos.
f2 hecho opel_astra tiene airbag.
f3 hecho opel_astra no_tiene frenos abs.
f4 hecho fiat_punto tiene 1400 c_cubicos.
f5 hecho fiat_punto no_tiene airbag.
f6 hecho fiat_punto no_tiene frenos abs.
f7 hecho renault_space es mono_volumen.
f8 hecho renault_space tiene motor diesel.
f9 hecho renault_space tiene frenos abs.
f10 hecho renault_space tiene airbag.

Razonamiento usando reglas
Razonamiento = Motor de inferencia
Dos maneras de razonar:
Hacia adelante (forward chaining o modus ponens)
Hacia atrs (backward chaining o modus tollens)
Razonamiento hacia delante:
A partir de los hechos, buscar las conclusiones
Desde los datos hacia los objetivos.
,


Razonamiento hacia atrs:
Dadas las conclusiones que se buscan, buscar los
hechos que las derivan
Desde los objetivos hacia los datos.
,


Razonamiento hacia atrs
Dadas las conclusiones que se buscan,
buscar los hechos que las derivan
Desde los objetivos hacia los datos.
,


Razonamiento hacia delante
Dados los hechos evidenciados, buscar las
consecuencias de los mismos en forma de
conclusiones.
Desde los hechos hacia sus consecuencias.
,


Razonamiento hacia atrs.
Meta-intrpretes.
Formalizacin

se_deduce(P) :-_ hecho P.
se_deduce(P) :- _ # si C entonces P, se_deduce(C).
se_deduce(P1 y P2) :- se_deduce(P1), se_deduce(P2).
se_deduce(P1 o _) :- se_deduce(P1).
se_deduce(_ o P2) :- se_deduce(P2).
Razonamiento hacia atrs.
Meta-intrpretes.
Comportamiento.

Ejemplo:
?- se_deduce(fuga_en_cocina).
Yes
?- se_deduce(fuga_en_bagno).
No
Razonamiento hacia atrs.
Meta-intrpretes. Nuevas
sentencias.


write(<texto>)
% Escribe por pantalla un texto
dynamic < identificador >/1.
% Indica que pueden aadirse hechos y reglas
relacionados con <identificador> en tiempo de ejecucin
nl
% Escribe un salto de linea
assert(<hecho>)
% Incluye un nuevo hecho. Este hecho debe tener como
identificador un identificador definido con dynamic
listing(<identificador>)
% Indica todos los hechos y reglas que tengan como
identificador <identificador>.
Razonamiento hacia delante.
Reglas (I).
dynamic < identificador >/1.
adelante :-
nuevo_hecho_deducido(P),
!,
write(Deducido: ), write(P), nl,
assert(hecho_deducido(P)),
adelante,
write(No hay ms hechos).
nuevo_hecho_deducido(P) :-
_ # si Condicion entonces P,
not(hecho_deducido(P)),
hecho_compuesto(Condicion).
Razonamiento hacia delante.
Reglas (II)
hecho_compuesto(C) :- hecho_deducido(C).
hecho_compuesto(C) :- _ hecho C.
hecho_compuesto(C1 y C2) :-
hecho_compuesto(C1), hecho_compuesto(C2).
hecho_compuesto(C1 o C2) :-
hecho_compuesto(C1); hecho_compuesto(C2).
Razonamiento hacia delante.
Comportamiento.
Ejemplo:
?- adelante.
Deducido: problema_en_cocina
Deducido: no_agua_exterior
Deducido: fuga_en_cocina
No hay ms hechos
Yes
Razonamiento hacia delante.
Listing.
?- listing(hecho_deducido).
hecho_deducido(problema_en_cocina).
hecho_deducido(no_agua_exterior).
hecho_deducido(fuga_en_cocina).
Yes
?- listing(hecho).
f1 hecho recibidor_mojado.
f2 hecho bagno_seco.
f3 hecho ventana_cerrada.
Yes
Razonamiento hacia delante
vs razonamiento hacia atrs
Deduccin = bsqueda en espacios de
estados:
Datos --> .... --> Objetivos
Evidencias --> .... --> Hiptesis
Observaciones --> .... --> Justificaciones
Sntomas --> ... --> Diagnstico
La direccin de la bsqueda determina el
tipo de razonamiento:
Hacia adelante: de los hechos hacia las
conclusiones
Hacia atrs: de los objetivos hacia los hechos
Problemas adecuados para
razonar hacia atrs
Diagnstico

Problemas dirigidos por los objetivos

Interaccin/Explicacin al usuario
Problemas adecuados para
razonar hacia adelante
Monitorizacin y control

Problemas dirigidos por los datos

Sin necesidad de explicacin
Razonamiento con
incertidumbre.
El conocimiento puede no ser categrico
Reglas y hechos tienen un grado de certeza
Razonamiento con
incertidumbre. Ejemplos.
Ejemplos:
- Si el recibidor est mojado y el bao est seco,
entonces existe probabilidad 0.9 de que el
problema est en la cocina.
- Creo que ha llovido, con probabilidad 0.8.
Reglas y hechos afectados de un factor de
certeza
Razonamiento con
incertidumbre. Sintaxis.
:- op(860, xfx, :). % factor de certeza.
:- op(875, xfx, hecho).
:- op(875, xfx, #).
:- op(825, fx, si).
:- op(850, xfx, entonces).
:- op(800, xfy, o).
:- op(775, xfy, y).

Razonamiento con
incertidumbre. Ejemplo.

r2 # si recibidor_mojado y bagno_seco
entonces problema_en_cocina : 0.9 .
f4 hecho no_llueve : 0.8.
Fuga de agua con incertidumbre.
Base de conocimiento. Reglas.
r1 # si recibidor_mojado y cocina_seca
entonces fuga_en_bagno : 0.8.
r2 # si recibidor_mojado y bagno_seco
entonces problema_en_cocina : 0.9 .
r3 # si ventana_cerrada o no_llueve
entonces no_agua_exterior : 1.
r4 # si problema_en_cocina y no_agua_exterior
entonces fuga_en_cocina : 0.8 .


Fuga de agua con incertidumbre.
Base de conocimiento. Hechos.

f1 hecho recibidor_mojado : 1.
f2 hecho bagno_seco : 1.
f3 hecho ventana_cerrada : 0.
f4 hecho no_llueve : 0.8.
f5 hecho cocina_seca : 0.
Razonamiento con incertidumbre.
Manejo de probabilidades.

Cada combinacin lgica de
proposiciones P, tiene asignado un
coeficiente de certeza, c(P):
- Los hechos, valores asignados en la BC.
- Si P2 se obtiene mediante la regla
_ si P1 entonces P2 : C
entonces c(P2) = c(P1) * C
- c(P1 y P2) = min(c(P1),c(P2))
- c(P1 o P2) = max(c(P1),c(P2))
Razonamiento con incertidumbre. Manejo de
probabilidades. Razonamiento hacia atrs.

certeza(P,C) :- _ hecho P : C.
certeza(P,C) :-
_ # si Cond entonces P : C1,
certeza(Cond,C2),
C is C1 * C2.
certeza(P1 y P2,C) :- certeza(P1,C1), certeza(P2,C2),
C is min(C1,C2).
certeza(P1 o P2,C) :- certeza(P1,C1), certeza(P2,C2),
C is max(C1,C2).
Incertidumbre. Observaciones.
Problemas.
Simplificaciones:
Distintas reglas no deben servir para deducir
lo mismo
Independencia de las observaciones
La realidad es ms compleja
Incertidumbre. Observaciones.
Soluciones
Modelar el razonamiento usando teora de la probabilidad
* Ventajas: deducciones correctas.
* Desventajas: demasiado complejo.
Simplificar el tratamiento probabilstico
* Ventajas: funciona en la prctica.
* Desventajas: posibles razonamientos incorrectos.
Bibliografa
Bratko, I. Prolog programming for Artificial Intelligence. (3rd
ed.)(Addison Wesley, 2001)
Cap. 14: Expert system and Knowledge Representation

Giarratano,J. y Riley, G. Expert Systems: Principles and Programming
(2nd ed.)(PWS, 1994)
Cap. 2: Representation of knowledge
Cap. 3: Methods of inference

Rich, E. y Knight, K. Inteligencia artificial (2nd Ed) (McGraw-Hill
Interamericana, 1994).
Captulos 6 y 7

Vous aimerez peut-être aussi