Programación en Prolog para Inteligencia Artificial
-
Upload
egdares-futch -
Category
Technology
-
view
18.076 -
download
4
description
Transcript of Programación en Prolog para Inteligencia Artificial
Programación en Prolog para Inteligencia Artificial
Presentado por:
Egdares Futch H.
Qué dicen los expertos sobre IA
El arte de crear máquinas con capacidad de realizar funciones que realizadas por personas requieren de inteligencia. (Kurzweil, 1990). El estudio de cómo lograr que las computadoras realicen tareas que por el momento, los humanos hacen mejor. (Rich, Knight, 1991). La rama de la ciencia de la computación que se ocupa de la automatización de la conducta inteligente (Luger y Stubblefield, 1993). Un campo de estudio que se enfoca a la explicación y emulación de la conducta inteligente en función de procesos computacionales (Schalkoff, 1990).
Qué dice el Web sobre la IA
IA es la reproducción de los métodos de razonamiento o intuición humanosUsar modelos computacionales para simular comportamiento (humano) y procesos inteligentesIA es el estudio de las facultades mentales a través del uso de métodos computacionales
Comportamientointeligente
Humanos
Computadora
¿ Qué es la IA ?
Disciplina que sistematiza y automatiza tareas intelectuales
para crear máquinas que:
Actúen como humanos
Actúen racionalmente
Piensen como humanos
Piensen racionalmente
Actuar como humanos
IA es el arte de crear máquinas que realicen funciones que requieren de inteligencia cuando la realizan humanosMetodología: Elija una tarea intelectual en la que los humanos son mejores y ponga a una computadora a hacerloTest de Turing
•Demostrar un teorema•Jugar ajedrez•Planear operación•Diagnosticar enfermedad•Navegar en el edificio
El caso del Ajedrez
Pro: “Decir que Deep Blue no piensa realmente sobre el
ajedrez es como decir que un avión realmente no vuela porque no aletea” – Drew McDermott
Contra: “El ajedrez es la Drosophila de la IA. Si los geneticistas
se hubieran aplicado de esa manera, tendríamos ahora moscas muy rápidas” – John McCarthy
Autista vs. Sentido común
Pensar como humanos
La forma en la que la computadora hace sus funciones importaComparación de los pasos para hacer un razonamientoCiencias cognoscitivas teorías verificables de la mente humana
Pero, ¿queremos duplicar las imperfecciones humanas?
Pensar y actuar racionalmente
Siempre tomar la mejor decisión con lo que se tenga a mano (tiempo, conocimiento, recursos)Conocimiento perfecto, recursos ilimitados razonamiento lógicoConocimiento imperfecto, recursos limitados racionalidad limitada
•Conexión a la economía, investigación de operaciones, y teoría de control•Pero ignora el rol de la conciencia, emociones, miedos, etc.
Pensar (meditación de Feynman)
Todos conocemos la mente humana porque tenemos unaPensar no requiere instrucciones “Pensar no es más que hablarse a sí
mismo” dijo Richard. John contestó: “Trata de pensar en un engranaje…cómo te lo contaste?”
Algunas características Frontera entre programación tradicional e IA
La IA es programación Frontera se mueve: cuando algo funciona ya no es IA La IA se ocupa de aquellos problemas para los que no existen
soluciones algorítmicas satisfactorias y de aquellos que requieren el manejo explícito del conocimiento
La IA se ocupa de tareas que, de momento, la gente realiza mejor Técnicas de la Inteligencia Artificial
Métodos generales de la computación+ técnicas específicas Enfoque algorítmico clásico da por hecho que se dispone de toda la
información necesaria para llegar a una solución óptima del problema abordado
En Inteligencia Artificial, las decisiones se basan en un conocimiento parcial que no garantiza encontrar el óptimo
La inteligencia consiste precisamente en saber sacar el máximo provecho a la información disponible para tratar de obtener el resultado deseado e.d compromiso entre exhaustividad del análisis y calidad del resultado
Las técnicas computacionales desarrolladas dentro de este marco metodológico son llamadas heurísticas
Introducción a Prolog
Prolog es el lenguaje más difundido en la programación lógica. Algunas de sus características son: Prolog usa variables lógicas, las cuales
no son comparables a las de otros lenguajes. Los programadores las pueden usar como “blancos” en estructuras de datos que se llenan gradualmente mientras corre el proceso.
…Más
La unificación es un método interno de manipulación de datos que pasa parámetros, retorna resultados, selecciona y construye estructuras de datos.
El modelo de control de flujo básico es la reevaluación (backtracking).
Las claúsulas de programa y los datos tienen la misma forma.
La forma relacional de los procedimientos hace posible definirlos de forma que sean “reversibles”
…Más
Las claúsulas proveen de una forma conveniente para analizar casos e indeterminismo. Algunas veces se requiere de características que no pertenecen a la lógica pura.Un programa en Prolog puede ser considerado como una base de datos relacional que contiene reglas y hechos.
Nuestro primer programa
/* En el zoologico */
elefante(jorge).elefante(maria).
panda(chi_chi).panda(ming_ming).
peligroso(X) :- dientes_grandes(X).peligroso(X) :- venenoso(X).
suponga(X, tiger) :- rayas(X), dientes_grandes(X), esFelino(X).suponga(X, zebra) :- rayas(X), esEquino(X).
Prolog es un lenguaje declarativo
Las claúsulas muestran lo que es cierto sobre un problema, en vez de instrucciones de cómo lograr la solución.El sistema interno de Prolog usa las claúsulas para buscar como lograr la solución buscando en el espacio de soluciones.No todos los problemas pueden ser resueltos de esta forma, por lo que incorpora sentencias extralógicas.
Ejemplo: concatenar listas A y B
list procedure cat(list a, list b){ list t = list u = copylist(a); while (t.tail != nil) t = t.tail; t.tail = b; return u;}
En un lenguaje imperativo
En un lenguaje declarativo
En un lenguaje funcionalcat(a,b) if b = nil then aelse cons(head(a), cat(tail(a),b))
cat([], Z, Z).cat([H|T], L, [H|Z]) :- cat(T, L, Z).
Sintaxis completa de Prolog
Término
Constante VariableTérmino compuesto
Atomo Númeroalpha17pagojuan_perezgripe+=/=’12Q&A’
01571.6182.04e-27-13.6
gusta(juan, maria)libro(cervantes, quijote)f(x)[1, 3, g(a), 7, 9]-(+(15, 17), t)15 + 17 - t
XQuincenaEnfermedad_257_
Nombra un individuo Reemplaza un individuoque no puede ser nombradocuando el programa seescribe
Nombra un individuo quetiene partes
Términos compuestos
padres(manchas, pongo, perdita)
Functor (un átomo) de arity 3. componentes (términos)
Se puede mostrar el término como un árbol
padres
perditapongo
manchas
Estructura de los programas
Los programas consisten en procedimientosLos procedimientos consisten en claúsulasCada claúsula es un hecho o una reglaLos programas se ejecutan haciendo preguntas
Por ejemplo…
Ejemplo
elefante(dumbo).elefante(jumbo).elefante(X) :- gris(X), mamifero(X), tieneTrompa(X).
Procedimiento para elefante
Predicado
Claúsulas
Regla
Hechos
Ejemplo
?- elefante(jumbo).
yes
?- elefante(pongo).
no
Pregunta
Respuesta
Interpretación de las claúsulas
Las claúsulas pueden leerse de forma declarativa o procedimental
H :- G1, G2, …, Gn.
“Se puede demostrar H ssi G1, G2, …, Gn también puedan demostrarse.”
“Para evaluar el procedimiento H, se ejecutan los procedimientos G1, G2, …, Gn previamente.”
Interpretacióndeclarativa
Interpretaciónprocedimental
Unificación
Dos términos se unifican si pueden sustituirse variables de tal forma que los términos se hacen idénticos.El algoritmo de unificación procede por descenso recursivo de los dos términos. Constantes unifican si son idénticas Variables unifican con cualquier término,
incluyendo otras variables Términos compuestos unifican si el functor
y componentes unifican.
EjemplosLos términos f(X, a(b,c)) y f(d, a(Z, c)) unifican.
Z c
ad
f
b c
aX
f
Los términos unifican si se sustituye d por X, y b se sustituye por Z. Esta sustitución también se denomina instanciación.
EjemplosLos términos f(X, a(b,c)) y f(Z, a(Z, c)) se unifican.
Z c
aZ
f
b c
aX
f
Nótese que Z se comparte dentro del mismo término.
EjemplosLos términos f(c, a(b,c)) y f(Z, a(Z, c)) no se unifican
Z c
aZ
f
b c
ac
f
Estos dos términos no pueden hacerse idénticos sustituyendo variables.
ListasLas listas en Prolog son similares a las de otros lenguajes ya que se compone de términos de cualquier tamaño agrupados.La lista de largo 0 se llama nil, y se escribe [].La lista de largo n es [cabeza,cola], donde cola es una lista de largo n-1.
Sintaxis de Prolog para listas
Nil se escribe [].La lista de n elementos t1, t2, …,tn se escribe así: [t1, t2, …,tn]
[X|[]] se escribe [X]
Para la lista [X|Z] , X es un átomo y Z es una lista, con la cabeza X removida
Trabajando con listas
/* miembro(Termino, Lista) */
miembro(X, [X|T]).
miembro(X, [H|T]) :- miembro(X, T).
Ejemplos:
?- miembro(john, [paul, john]).
?- miembro(X, [paul, john]).
?- miembro(yo, [marx, darwin, freud]).
?- miembro(quien, X).
Reevaluación (backtracking) y no determinismomiembro(X, [X|_]).
miembro(X, [_|T]) :- miembro(X, T).
?- miembro(fred, [john, paul, fred, ringo]).yes
?- miembro(X, [john, paul, fred, ringo]).X = john;
X = paul;
X = fred;
X = ringo;
no
Determinístico
No determinístico
Controlando la reevaluación
color(cereza, rojo).
color(banana, amarillo).
color(manzana, rojo).
color(manzana, verde).
color(naranja, naranja).
color(X, desconocido).
?- color(banana, X).
X = amarillo
?- color(sandia, X).
X = desconocido
?- color(cereza, X).
X = rojo;
X = desconocido;
no
Claúsulas y bases de datosEn una base de datos relacional, las relaciones se consideran tablas, en los que cada elemento de una relación n-aria se almacena como una fila de la tabla, que cuenta con n columnas.
proveedorperez silla rojo 10lopez mesa negro 50
Usando claúsulas, se puede representar de la siguiente forma:
proveedor(perez, silla, rojo, 10).proveedor(lopez, mesa, negro, 50).
Claúsulas y bases de datos
Ventajas de usar claúsulas:1. Reglas y hechos coexisten.2. Se permiten definiciones recursivas.3. Se permiten múltiples respuestas a la
misma consulta.4. No hay distinción de rol entre el input y
el output.5. La inferencia ocurre automáticamente.
Casos de aplicación
Sistemas expertos Un sistema informático que simula el
proceso de aprendizaje, de memorización, de razonamiento, de comunicación y de acción de un experto humano en una determinada rama de la ciencia, suministrando, de esta forma, un consultor que puede sustituirle con unas ciertas garantías de éxito
Casos de aplicación
Sistemas expertos Estas características le permiten
almacenar datos y conocimiento, sacar conclusiones lógicas, tomar decisiones, aprender de la experiencia y los datos existentes, comunicarse con expertos humanos u otros Sistemas Expertos, explicar el porqué de las decisiones tomadas y realizar acciones como consecuencia de todo lo anterior
Casos de aplicación
Procesamiento de lenguaje natural (NLP) Prolog es un lenguaje muy expresivo para
plantear algoritmos de lingüística computacional. Para el Procesamiento de Lenguaje Natural (NLP), se requiere la manipulación de símbolos (palabras, fonemas y otras partes del lenguaje), basados en objetos estructurados (secuencias, árboles, grafos). Prolog facilita la expresión de operaciones sobre los símbolos y estructuras sin preocuparse de la representación y manipulación interna del computador.
Casos de aplicación
Asignación de recursos limitados El laboratorio de investigación de la IBM Haifa
ha desarrollado un sistema en Prolog para asignar aviones en las líneas aéreas israelíes El-Al. Este proyecto se llevó a cabo para ahorrar costos operativos y para reducir el uso de los espacios de las compuertas del aeropuerto, que tienen un costo elevado por ocupación.
El sistema está conectado en línea con el sistema de programación del El-Al y se actualiza en tiempo real en cuanto a cambios de horarios de vuelo.
Casos de aplicación
Diseño experto de productos
En este sistema, el diseño de anteojos se hace a la medida. Una fotografía de la cara del cliente se alimenta como datos de entrada. El sistema experto en Prolog propone un diseño y si el cliente aprueba el diseño, éste se transmite desde las estaciones gráficas a la fábrica usando una red. El tiempo promedio de entrega es de una hora
La base de conocimiento para proponer el diseño incluye entre otros, datos sobre el color de la piel y del pelo del cliente, preferencias individuales, conocimientos técnicos ópticos, conocimiento del diseñador de proponer forma y los colores y formas de moda .
Casos de aplicación
Verificación de circuitos digitales
Siemens ha desarrollado en Prolog el sistema CVE, el cual es utilizado para verificar de forma automática el comportamiento de salida de un circuito digital como una función Booleana como una función de la entrada. Las funciones que se obtienen se comparan de manera simbólica con las funciones correspondientes del circuito usando algoritmos especializados que garantizan que se detectan las diferencias encontradas
El sistema garantiza 100% de seguridad, ya que la comparación simbólica es equivalente a simular un circuito con todos los posibles patrones de entrada, verificando todas las salidas de la simulación
Casos de aplicación
Configurador (Wizard) de red de Windows NT
El sistema operativo Microsoft Windows NT utiliza un intérprete interno de Prolog para configurar sus sistemas de red de área local (LAN) y de la red de área amplia (WAN). Los componentes interdependientes del software y de hardware se abstraen en un marco orientado a objetos simplificado usando la información declarativa proporcionada por el script de instalación de cada componente. Esta información, se almacena junto al intérprete interno, que es consultada para generar la mejor configuración.
Los resultados de la consulta, almacenados en la base de datos de la configuración del NT (registry), informan a cada componente o driver su orden de la carga y asociación de componentes
Muchas gracias!
[email protected]://maestros.unitec.edu/~efutch