programación en prolog para inteligencia artificial

Post on 04-Jun-2015

18.077 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

Presentación para el congreso IEEE CONESCAPAN XXIII, Tegucigalpa, Honduras

TRANSCRIPT

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!

efutchh@unitec.eduhttp://maestros.unitec.edu/~efutch

top related