Implementación Prolog de un SBC basado en reglas (2011/2012)

Documentos relacionados
Tema 2: Representación del conocimiento basada en reglas

Representación del conocimiento mediante reglas (2010/2011)

Representación del conocimiento mediante reglas (2011/2012)

Tema 4: Representación del conocimiento mediante reglas

Tema 4: Redes semánticas y marcos

Tema 2: Introducción a los sistemas basados en el conocimiento

Aritmética y operadores (2011/2012)

Tema 1: Representación del conocimiento mediante reglas

Tema 2: Introducción a los sistemas basados en el conocimiento

Tema 1: Agentes inteligentes: Representación y razonamiento

Tema 2: Inteligencia computacional y conocimiento

Secretaría de Docencia Dirección de Estudios Profesionales

Fundamentos de Inteligencia Artificial

Programación lógica ( )

Tema 4: Resolución de problemas de espacios de estados

Tema 3: Sistema inicial de representación y razonamiento

Tema 7: Razonamiento por defecto y razonamiento abductivo

Tema 3: Representación del conocimiento estructurado

Introducción a los Sistemas Basados en el Conocimiento (2011/2012)

Tema 3: Técnicas básicas de búsqueda para la resolución de problemas

Tema 12: Aplicaciones de SBC: Decisión y metaintérpretes

Métodos de Inteligencia Artificial

Sistemas Basados en el Conocimiento (2010/2011)

Sistemas Expertos. Unidad de Aprendizaje: Unidad de Competencia I: Inteligencia Artificial y Sistemas Expertos. M. en C. Edith Cristina Herrera Luna

Tema 5: Razonamiento por defecto y razonamiento explicativo

PROYECTO DOCENTE ASIGNATURA: "Introducción a la Ingeniería del Conocimiento"

PROYECTO DOCENTE ASIGNATURA: "Inteligencia Artificial I"

Tema 6: Representación lógica del conocimiento

Programación lógica ( )

Guía docente de la asignatura INGENIERÍA DEL CONOCIMIENTO COMPUTACIÓN TECNOLOGÍAS ESPECÍFICAS GRADO EN INGENIERÍA INFORMÁTICA

Tema 1: El sistema deductivo de Prolog

UNIVERSIDAD NACIONAL DEL SUR 1 BAHÍA BLANCA. Laboratorio 12 hs CORRELATIVAS DESCRIPCIÓN

Tema 6: Razonamiento con información incompleta

Fundamentos de Inteligencia Artificial. E. Morales/L.E. Sucar CCC, INAOE

Lógica y Programación

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE HIDALGO

Inteligencia Artificial

Tema 2: Representación de problemas como espacios de estados

Práctica II. Prolog II: Meta Intérprete Vanilla

Control de retroceso. Corte y negación (2010/2011)

UNIVERSIDAD TECNOLÓGICA DE PEREIRA FACULTAD DE INGENIERÍAS MAESTRÍA EN INGENIERÍA DE SISTEMAS Y COMPUTACIÓN

1.- DATOS DE LA ASIGNATURA. Nombre de la asignatura: Carrera: Clave de la asignatura: (Créditos) SATCA PRESENTACIÓN

INSTITUTO POLITÉCNICO NACIONAL SECRETARÍA ACADÉMICA DIRECCIÓN DE ESTUDIOS PROFESIONALES EN INGENIERÍA Y CIENCIAS FÍSICO MATEMÁTICAS

Práctica No. 7 Un sistema experto en Prolog.

INSTITUTO POLITECNICO NACIONAL SECRETARIA ACADEMICA DIRECCION DE ESTUDIOS PROFESIONALES EN INGENIERIA Y CIENCIAS FISICO MATEMATICAS

FACULTAD DE CIENCIAS EXACTAS, INGENIERÍA Y AGRIMENSURA U.N.R.

Programación declarativa ( )

Proyecto: Programación Declarativa: Lenguaje Prolog

7. Programación lógica y Sistemas Expertos

Tema 3: Introducción a Prolog

Inteligencia Artificial Arquitectura de los sistemas basados en el conocimiento

1. DATOS DE LA ASIGNATURA. Nombre de la Asignatura: Carrera: Clave de la Asignatura: SACTA: PRESENTACION. Caracterización de la asignatura.

FACULTAD DE CIENCIAS EXACTAS, INGENIERÍA Y AGRIMENSURA U.N.R.

Programa de estudios por competencias Inteligencia Artificial I

INSTITUTO POLITÉCNICO NACIONAL SECRETARÍA ACADÉMICA DIRECCIÓN DE ESTUDIOS PROFESIONALES EN INGENIERÍA Y CIENCIAS FÍSICO MATEMÁTICAS

DE AMÉRICA) FACULTAD DE INGENIERIA DE SISTEMAS E INFORMATICA ESCUELA PROFESIONAL DE INGENIERÍA DE SOFTWARE

Tema 2: Listas, aritmética y operadores

GUÍA DOCENTE DE LA ASIGNATURA

Práctica Un sistema experto en Prolog. Actividades 1.- Captura el shell del sistema experto y guarda el archivo con el nombre experto.

- Bases de Datos (2012/2013) Adjunto Tema 1: Ampliación DER

Programación declarativa ( )

Sistemas de producción: CLIPS

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE HIDALGO

Tema 4: Búsqueda informada mediante técnicas heurísticas

Lógica e Inteligencia Artificial: Una Historia sin Fin

IA - Inteligencia Artificial

IA - Inteligencia Artificial

Lógica e Inteligencia Artificial: Una Historia sin Fin

Carrera : Academia de Sistemas y Computación. a) RELACIÓN CON OTRAS ASIGNATURAS DEL PLAN DE ESTUDIOS ASIGNATURAS TEMAS ASIGNATURAS TEMAS

Tema 1: Sintaxis y semántica de la lógica proposicional

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA PROGRAMA DE ESTUDIO

- Bases de Datos (2012/2013) Adjunto Tema 1: Ampliación DER (2)

Lógica informática ( )

Modelos de Razonamiento

Plan Ciclo Formativo Tipo Curso Duración. Máster Universitario Oficial. Apoyo a la docencia

Visión n del Usuario Final

INSTITUTO POLITÉCNICO NACIONAL SECRETARÍA ACADÉMICA DIRECCIÓN DE EDUCACION SUPERIOR PROGRAMA SINTÉTICO

Inteligencia Artificial. Carrera: Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

- Bases de Datos (2012/2013) Adjunto Tema 1: Ampliación DER (3)

Programación declarativa ( )

FACULTAD DE INGENIERÍA DE SISTEMAS : SISTEMAS EXPERTOS CODIGO : HORAS SEMANALES : 4 HORAS (Teoría: 02; Laboratorio: 02)

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Programa de estudios por competencias Seminario de solución de problemas Inteligencia Artificial II

Exploraciones sobre el soporte Multi-Agente en Minería de Datos

Programación Declarativa: Lógica y restricciones

Inteligencia Artificial

Guía docente de la asignatura MÉTODOS AVANZADOS DE RAZONAMIENTO Y REPRESENTACIÓN DEL CONOCIMIENTO SISTEMAS INTELIGENTES Y BASADOS EN CONOCIMIENTO

Concurrencia PLANIFICACIONES Actualización: 1ºC/2013. Planificaciones Concurrencia. Docente responsable: A DESIGNAR.

Inteligencia Artificial II: Conocimiento, Razonamiento y Planeación. Presentación del Curso.

Sistemas Expertos Unidad 2. Prof. Francklin Rivas Echeverría Universidad de Los Andes Laboratorio de Sistemas Inteligentes

Redes Semánticas. IIMAS Inteligencia Artificial. Alumno: Vicente Iván Sánchez Carmona Profesora: Dr. Ana Lilia Laureano

Inteligencia Artificial e Ingeniería del Conocimiento

Transcripción:

Luis Valencia Cabrera (coordinador) lvalencia@us.es (http://www.cs.us.es/~lvalencia) Manuel García-Quismondo mgarciaquismondo@us.es (http://www.cs.us.es/~mgarcia) Ciencias de la Computacion e IA (http://www.cs.us.es/) Universidad de Sevilla Implementación Prolog de un SBC basado en reglas (2011/2012)

Objetivos Construcción en Prolog de un SBC básico Un armazón (shell) de sistemas expertos Independiente del dominio de conocimiento Características a implementar: Razonamiento hacia atrás Justificaciones a las respuestas (pruebas) Acotación de profundidad y objetivos retardables Preguntas al usuario Preguntas cómo? Preguntas porqué? Navegación por la prueba Preguntas quién? Negación Incertidumbre Razonamiento hacia adelante

Razonamiento hacia atrás Recordar: :- op(875, xfx, hecho). :- op(875, xfx, #). :- op(825, fx, si). :- op(850, xfx, entonces). :- op(800, xfy, o). :- op(775, xfy, y). 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).

Sesiones de ejemplo 1?- [sbc1]. 2?- [coches]. 3?- se_deduce(que_coche es gama media). Que_coche = opel_astra ; 4?- se_deduce(renault_space es gama X). X = alta ; 5?- [animal]. Yes 6?- se_deduce(quien es un tigre). Quien = oblongo ; 7?- se_deduce(rayo es un Que). Que = guepardo ; 8?- se_deduce(rayo es una gaviota). No

Búsqueda con profundidad acotada Fichero sbc2.pl % se_deduce_acotado(p,_) :- _ hecho P. se_deduce_acotado(p,n) :- N > 0, N1 is N - 1, _ # si C entonces P, se_deduce_acotado(c,n1). se_deduce_acotado(p1 y P2,N) :- se_deduce_acotado(p1,n), se_deduce_acotado(p2,n). se_deduce_acotado(p1 o _,N) :- se_deduce_acotado(p1,n). se_deduce_acotado(_ o P2,N) :- se_deduce_acotado(p2,n). Sesión: 1?- [sbc2]. 2?- [coches]. 3?- se_deduce_acotado(opel_astra es gama media,1). No 4?- se_deduce_acotado(opel_astra es gama media,2). No 5?- se_deduce_acotado(opel_astra es gama media,3). Yes

Respuestas con justificación o prueba Estructura de las pruebas: P es cierto esta_afirmado_por F P es cierto es_consecuencia_de R porque Prueba Prueba1 y Prueba2 Operadores: :- op(850, xfx, es_consecuencia_de). :- op(850, xfx, esta_afirmado_por). :- op(800, xfx, porque). :- op(750, xfx, es).

Respuestas con justificación o prueba se_deduce(p, P es cierto esta_afirmado_por F) :- F hecho P. se_deduce(p, P es cierto es_consecuencia_de R porque Pr) :- R # si C entonces P, se_deduce(c, Pr). se_deduce(p1 y P2, Prueba1 y Prueba2) :- se_deduce(p1, Prueba1), se_deduce(p2, Prueba2). se_deduce(p1 o _, Prueba1) :- se_deduce(p1, Prueba1). se_deduce(_ o P2, Prueba2) :- se_deduce(p2, Prueba2).

Escritura de la prueba se_deduce(p) :- se_deduce(p,prueba), escribe_prueba(prueba). escribe_prueba(prueba) :- nl,write_ln( ****** Prueba encontrada: ), nl,escribe_prueba_aux(0,prueba). escribe_prueba_aux(n,a es cierto es_consecuencia_de B porque Pr):- M is N+2, escribe_prueba_aux(m,pr),tab(n), escribe_lista([ luego, segun,b, se concluye que,a,, ]),nl. escribe_prueba_aux(n,a y B):- escribe_prueba_aux(n,a),tab(n), write_ln( y ), escribe_prueba_aux(n,b). escribe_prueba_aux(n,p es cierto esta_afirmado_por F):- tab(n), escribe_lista([ por,f,, sabemos que,p,, ]),nl. escribe_lista([]). escribe_lista([x L]) :- write(x), escribe_lista(l).

Sesiones de ejemplo 7?- [sbc4, animal]. 8?- se_deduce(x es un tigre). ****** Prueba encontrada: por f1, sabemos que oblongo tiene pelo, luego, segun r1 se concluye que oblongo es mamifero, y por f2, sabemos que oblongo come carne, luego, segun r3 se concluye que oblongo es carnivoro, y por f2, sabemos que oblongo tiene color pardo, y por f3, sabemos que oblongo tiene rayas negras, luego, segun r5 se concluye que oblongo es un tigre, X = oblongo ; 9?- [coches]. 10?- se_deduce(renault_space es gama X). ****** Prueba encontrada: por f9, sabemos que renault_space tiene frenos abs, y por f10, sabemos que renault_space tiene airbag, luego, segun r9 se concluye que renault_space tiene [seguridad alta, y por f7, sabemos que renault_space es mono_volumen, luego, segun r13 se concluye que renault_space [tiene capacidad alta, luego, segun r1 se concluye que renault_space [es gama alta, X = alta ;

Interacción con el usuario Interacción Preguntas del usuario al sistema Preguntas del sistema al usuario Predicado recoge respuesta: recoge_respuesta(r,l) :- escribe_lista([ Posibles respuestas:,l, (seguidas de un punto): ]), read(r),member(r,l),!. recoge_respuesta(r,l) :- nl,write( Respuesta no valida. ),nl, recoge_respuesta(r,l). Sesión: 13?- recoge_respuesta(r,[si,no]). Posibles respuestas:[si, no](seguidas de un punto):ni. Respuesta no valida. Posibles respuestas:[si, no](seguidas de un punto):so. Respuesta no valida. Posibles respuestas:[si, no](seguidas de un punto):si. R = si ; No

Hechos preguntables Requiriendo información al usuario: En general, toda la información no se proporciona de antemano Un hecho es preguntable si el sistema se lo puede preguntar al usario, en lugar de deducirlo Predicado preguntable Cambio en las bases de conocimiento: Modificación en coches.pl preguntable(_ tiene _ c_cubicos). % f2 y f4 NO se dan de entrada. Modificación en animal.pl preguntable(_ vuela _). preguntable(_ come _). preguntable(_ tiene pelo). preguntable(_ tiene color pardo ). preguntable(_ tiene rayas negras ). preguntable(_ tiene garras). % f1, f2 f3, f4 y f6 NO se dan de entrada. Un nuevo tipo de prueba: P es cierto esta_afirmado_por usted

SBC con hechos preguntables :- dynamic respuesta/2. se_deduce(p, P es cierto esta_afirmado_por F) :- F hecho P. se_deduce(p,p es cierto es_consecuencia_de R porque Pr):- R # si C entonces P, se_deduce(c, Pr). se_deduce(p1 y P2, Prueba1 y Prueba2) :- se_deduce(p1, Prueba1), se_deduce(p2, Prueba2). se_deduce(p1 o _, Prueba1) :- se_deduce(p1, Prueba1). se_deduce(_ o P2, Prueba2) :- se_deduce(p2, Prueba2). se_deduce(p,p es cierto esta_afirmado_por usted) :- preguntable(p), respuesta(p,r),!,r=si. se_deduce(p, P es cierto esta_afirmado_por usted) :- preguntable(p), pregunta(p,r), assert(respuesta(p,r)),r=si. pregunta(p,r) :- nl,escribe_lista([ Es cierto, P,? ]),nl, recoge_respuesta(r,[si,no]).

Preguntas por qué? Son útiles para el usuario: Se gana en confianza A posteriori, permite depurar las reglas Preguntas irrelevantes Aprendizaje del usuario Por qué se pregunta al usuario? Cadena de razonamiento: El sistema pregunta opel_astra tiene 1600 c_cubicos? y esto se usa, por r7, para probar cilindrada media y esto se usa, por r2, para probar velocidad media y esto se usa, por r1, para probar gama media y esa es precisamente la pregunta original del usuario Traza: lista de reglas conectando el objetivo actual con la pregunta del usuario Modificación al SBC: se deduce debe llevar un argumento más con la traza sucesivas preguntas porque? muestran una regla de la traza

Sesión de ejemplo 22?- se_deduce(opel_astra es gama media). Es cierto opel_astra tiene 1600 c_cubicos? Posibles respuestas: [si, no, porque] (seguidas de un punto): porque. === Porque: La regla r7 dice que probando: opel_astra tiene 1600 c_cubicos se tiene: opel_astra tiene cilindrada media **** Repito: Es cierto opel_astra tiene 1600 c_cubicos? Posibles respuestas: [si, no, porque] (seguidas de un punto): porque. === Porque: La regla r2 dice que probando: opel_astra tiene cilindrada media se tiene: opel_astra tiene velocidad media **** Repito: Es cierto opel_astra tiene 1600 c_cubicos? Posibles respuestas: [si, no, porque] (seguidas de un punto): porque. === Porque: La regla r1 dice que probando: opel_astra tiene velocidad media y (opel_astra tiene seguridad media o opel_astra tiene capacidad media)o opel_astra tiene seguridad media y opel_astra tiene capacidad media se tiene: opel_astra es gama media **** Repito: Es cierto opel_astra tiene 1600 c_cubicos? Posibles respuestas: [si, no, porque] (seguidas de un punto): porque. Porque esa fue su pregunta!! Repito: Es cierto opel_astra tiene 1600 c_cubicos? Posibles respuestas: [si, no, porque] (seguidas de un punto): si. ****** Prueba encontrada:.

SBC con por qué? se_deduce(p) :- se_deduce(p,[],prueba),nl,nl, escribe_prueba(prueba). se_deduce(p,_,p es cierto esta_afirmado_por F) :- F hecho P. se_deduce(p,t,p es cierto es_consecuencia_de R porque Pr):- R # si C entonces P, se_deduce(c,[r # si C entonces P T],Pr). se_deduce(p1 y P2,T,Prueba1 y Prueba2) :- se_deduce(p1,t,prueba1), se_deduce(p2,t,prueba2). se_deduce(p1 o _, T,Prueba1) :- se_deduce(p1,t,prueba1). se_deduce(_ o P2, T,Prueba2) :- se_deduce(p2,t,prueba2). se_deduce(p,_,p es cierto esta_afirmado_por usted) :- preguntable(p), respuesta(p,r), % sólo si o no.!,r=si. se_deduce(p,t,p es cierto esta_afirmado_por usted) :- preguntable(p), pregunta(p,t,r), assert(respuesta(p,r)),r=si.

SBC con por qué? pregunta(p,t,respuesta) :- nl,escribe_lista([ Es cierto,p,? ]),nl, recoge_respuesta(leido,[si,no,porque]), gestiona_respuesta_porque(p,t,respuesta,lei do). gestiona_respuesta_porque(_,_,si,si). gestiona_respuesta_porque(_,_,no,no). gestiona_respuesta_porque(p,[r Reglas],R espuesta,porque) :- escribe_regla(r),nl,write( Repito: ), pregunta(p,reglas,respuesta). gestiona_respuesta_porqu e(p,[],respuesta,porque) :- write_ln( Porque esa fue su pregunta!! ), write( Repito: ), pregunta(p,[],respuesta). escribe_regla(r # si C entonces P) :- nl,write( === Porque: ),nl, escribe_lista([ La regla,r, dice que probando: ]), nl,write_ln(c), % Se puede mejorar write( se tiene: ),nl,write(p),nl.

Limitaciones y posibles ampliaciones Preguntas quién? 3?- se_deduce(quien es gama media). Es cierto _G264 tiene 1600 c_cubicos? Posibles respuestas:[si,no,porque](seguidas de un punto): Navegación por la prueba (ver ejemplo diapositiva siguiente) Distintas maneras de deducir lo mismo Control de la coherencia Reglas con incertidumbre Factores de certeza (ver teoría) Razonamiento probabilístico (ver tema siguiente) Otros métodos de representar el conocimiento y de razonar Marcos y redes semánticas Razonamiento hacia adelante, combinación atrás adelante Temas a profundizar: Adquisición del conocimiento Aprendizaje

Sesión de ejemplo ****** Se ha encontrado respuesta afirmativa: ------ Opciones: ------ 1) Ver la prueba completa y continuar. ------ 2) Navegar dentro de la prueba. ------ 3) Continuar. Posibles respuestas: [1, 2, 3] (seguidas de un punto): 2. Por r5, oblongo es un tigre es consecuencia de: 1: oblongo es carnivoro 2: oblongo tiene color pardo 3: oblongo tiene rayas negras Posibles respuestas: [seguir, 1, 2, 3] (seguidas de un punto): 3. oblongo tiene rayas negras esta afirmado por usted. Posibles respuestas: [seguir, arriba] (seguidas de un punto): 1. Respuesta no valida. Posibles respuestas: [seguir, arriba] (seguidas de un punto): arriba. Por r5, oblongo es un tigre es consecuencia de: 1: oblongo es carnivoro 2: oblongo tiene color pardo 3: oblongo tiene rayas negras Posibles respuestas: [seguir, 1, 2, 3] (seguidas de un punto): 1. Por r3, oblongo es carnivoro es consecuencia de: 1: oblongo es mamifero 2: oblongo come carne Posibles respuestas: [seguir, arriba, 1, 2] (seguidas de un punto): 1. Por r1, oblongo es mamifero es consecuencia de: 1: oblongo tiene pelo Posibles respuestas: [seguir, arriba, 1] (seguidas de un punto): 1. oblongo tiene pelo esta afirmado por usted. Posibles respuestas: [seguir, arriba] (seguidas de un punto): seguir. No

Bibliografía Bratko, I. Prolog Programming for Artificial Intelligence (2nd ed.) (Addison Wesley, 1990) Cap. 15: An expert system shell Lucas, P. y Gaag L.v.d. Principles of expert systems (Addison Wesley, 1991) Cap. 1: Introduction Cap. 3: Production rules and inference Cap 4: Tools for knowledge and inference inspection Poole, D; Mackworth, A. y Goebel, R. Computational intelligence: A logical Approach (Oxford University press, 1998) Cap 5: Knowledge engineering