• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Programación en Prolog para Inteligencia Artificial
 

Programación en Prolog para Inteligencia Artificial

on

  • 21,315 views

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

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

Statistics

Views

Total Views
21,315
Views on SlideShare
21,126
Embed Views
189

Actions

Likes
5
Downloads
571
Comments
1

4 Embeds 189

http://www.slideshare.net 179
http://www.linkedin.com 7
http://reorogers.blogspot.com 2
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Programación en Prolog para Inteligencia Artificial Programación en Prolog para Inteligencia Artificial Presentation 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 humanos
      • Usar modelos computacionales para simular comportamiento (humano) y procesos inteligentes
      • IA es el estudio de las facultades mentales a través del uso de métodos computacionales
      Comportamiento inteligente Humanos Computadora
    • ¿ Qué es la IA ?
      • Disciplina que sistematiza y automatiza tareas intelectuales para crear máquinas que:
      Piensen racionalmente Piensen como humanos Actúen racionalmente Actúen como humanos
    • Actuar como humanos
      • IA es el arte de crear máquinas que realicen funciones que requieren de inteligencia cuando la realizan humanos
      • Metodología: Elija una tarea intelectual en la que los humanos son mejores y ponga a una computadora a hacerlo
      • Test 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 importa
      • Comparación de los pasos para hacer un razonamiento
      • Ciencias 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ógico
      • Conocimiento 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 una
      • Pensar 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 funcional cat(a,b)  if b = nil then a else 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 Variable Término compuesto Atomo Número alpha17 pago juan_perez gripe + =/= ’ 12Q&A’ 0 1 57 1.618 2.04e-27 -13.6 gusta(juan, maria) libro(cervantes, quijote) f(x) [1, 3, g(a), 7, 9] -(+(15, 17), t) 15 + 17 - t X Quincena Enfermedad _257 _ Nombra un individuo Reemplaza un individuo que no puede ser nombrado cuando el programa se escribe Nombra un individuo que tiene 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 perdita pongo manchas
    • Estructura de los programas
      • Los programas consisten en procedimientos
      • Los procedimientos consisten en claúsulas
      • Cada claúsula es un hecho o una regla
      • Los 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 :- G 1 , G 2 , …, G n . “ Se puede demostrar H ssi G 1 , G 2 , …, G n también puedan demostrarse.” “ Para evaluar el procedimiento H, se ejecutan los procedimientos G 1 , G 2 , …, G n previamente.” Interpretación declarativa Interpretación procedimental
    • 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.
    • Ejemplos
      • Los términos f(X, a(b,c)) y f(d, a(Z, c)) unifican.
      Z c a d f b c a X 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.
    • Ejemplos
      • Los términos f(X, a(b,c)) y f(Z, a(Z, c)) se unifican.
      Z c a Z f b c a X f Nótese que Z se comparte dentro del mismo término.
    • Ejemplos
      • Los términos f(c, a(b,c)) y f(Z, a(Z, c)) no se unifican
      Z c a Z f b c a c f Estos dos términos no pueden hacerse idénticos sustituyendo variables.
    • Listas
      • Las 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 t 1 , t 2 , …, t n se escribe así: [ t 1 , t 2 , … , t n ]
      • [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 determinismo
      • miembro(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 datos
      • En 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.
      • proveedor
      • perez silla rojo 10
      • lopez 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:
      • Reglas y hechos coexisten.
      • Se permiten definiciones recursivas.
      • Se permiten múltiples respuestas a la misma consulta.
      • No hay distinción de rol entre el input y el output.
      • 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_address] http://maestros.unitec.edu/~efutch