Concapanxxiii Prolog 090615181944 Phpapp01

41
Programación en Prolog para Inteligencia Artificial Presentado por: Egdares Futch H.

description

pdf

Transcript of Concapanxxiii Prolog 090615181944 Phpapp01

  • Programacin en Prolog para Inteligencia ArtificialPresentado por:

    Egdares Futch H.

  • Qu dicen los expertos sobre IAEl arte de crear mquinas con capacidad de realizar funciones que realizadas por personas requieren de inteligencia. (Kurzweil, 1990). El estudio de cmo lograr que las computadoras realicen tareas que por el momento, los humanos hacen mejor. (Rich, Knight, 1991). La rama de la ciencia de la computacin que se ocupa de la automatizacin de la conducta inteligente (Luger y Stubblefield, 1993). Un campo de estudio que se enfoca a la explicacin y emulacin de la conducta inteligente en funcin de procesos computacionales (Schalkoff, 1990).

  • Qu dice el Web sobre la IAIA es la reproduccin de los mtodos de razonamiento o intuicin humanosUsar modelos computacionales para simular comportamiento (humano) y procesos inteligentesIA es el estudio de las facultades mentales a travs del uso de mtodos computacionales

  • Qu es la IA ?Disciplina que sistematiza y automatiza tareas intelectuales para crear mquinas que:

  • Actuar como humanosIA es el arte de crear mquinas que realicen funciones que requieren de inteligencia cuando la realizan humanosMetodologa: Elija una tarea intelectual en la que los humanos son mejores y ponga a una computadora a hacerloTest de Turing

    Demostrar un teoremaJugar ajedrezPlanear operacinDiagnosticar enfermedadNavegar en el edificio

  • El caso del AjedrezPro:Decir que Deep Blue no piensa realmente sobre el ajedrez es como decir que un avin 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, tendramos ahora moscas muy rpidas John McCarthy

    Autista vs. Sentido comn

  • Pensar como humanosLa forma en la que la computadora hace sus funciones importaComparacin de los pasos para hacer un razonamientoCiencias cognoscitivas teoras verificables de la mente humanaPero, queremos duplicar las imperfecciones humanas?

  • Pensar y actuar racionalmenteSiempre tomar la mejor decisin con lo que se tenga a mano (tiempo, conocimiento, recursos)Conocimiento perfecto, recursos ilimitados razonamiento lgicoConocimiento imperfecto, recursos limitados racionalidad limitadaConexin a la economa, investigacin de operaciones, y teora de controlPero ignora el rol de la conciencia, emociones, miedos, etc.

  • Pensar (meditacin de Feynman)Todos conocemos la mente humana porque tenemos unaPensar no requiere instruccionesPensar no es ms que hablarse a s mismo dijo Richard. John contest: Trata de pensar en un engranajecmo te lo contaste?

  • Algunas caractersticas Frontera entre programacin tradicional e IA La IA es programacin Frontera se mueve: cuando algo funciona ya no es IA La IA se ocupa de aquellos problemas para los que no existen soluciones algortmicas satisfactorias y de aquellos que requieren el manejo explcito del conocimiento La IA se ocupa de tareas que, de momento, la gente realiza mejor Tcnicas de la Inteligencia Artificial Mtodos generales de la computacin+ tcnicas especficas Enfoque algortmico clsico da por hecho que se dispone de toda la informacin necesaria para llegar a una solucin 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 mximo provecho a la informacin disponible para tratar de obtener el resultado deseado e.d compromiso entre exhaustividad del anlisis y calidad del resultado Las tcnicas computacionales desarrolladas dentro de este marco metodolgico son llamadas heursticas

  • Introduccin a PrologProlog es el lenguaje ms difundido en la programacin lgica. Algunas de sus caractersticas son:Prolog usa variables lgicas, 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.

  • MsLa unificacin es un mtodo interno de manipulacin de datos que pasa parmetros, retorna resultados, selecciona y construye estructuras de datos.El modelo de control de flujo bsico es la reevaluacin (backtracking).Las clasulas de programa y los datos tienen la misma forma.La forma relacional de los procedimientos hace posible definirlos de forma que sean reversibles

  • MsLas clasulas proveen de una forma conveniente para analizar casos e indeterminismo. Algunas veces se requiere de caractersticas que no pertenecen a la lgica 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 declarativoLas clasulas muestran lo que es cierto sobre un problema, en vez de instrucciones de cmo lograr la solucin.El sistema interno de Prolog usa las clasulas para buscar como lograr la solucin buscando en el espacio de soluciones.No todos los problemas pueden ser resueltos de esta forma, por lo que incorpora sentencias extralgicas.

  • 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 imperativoEn un lenguaje declarativoEn 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 PrologTrminoConstanteVariableTrmino compuestoAtomoNmeroalpha17pagojuan_perezgripe+=/=12Q&A01571.6182.04e-27-13.6gusta(juan, maria)libro(cervantes, quijote)f(x)[1, 3, g(a), 7, 9]-(+(15, 17), t)15 + 17 - tXQuincenaEnfermedad_257_Nombra un individuoReemplaza un individuoque no puede ser nombradocuando el programa seescribeNombra un individuo quetiene partes

  • Trminos compuestospadres(manchas, pongo, perdita)Functor (un tomo) de arity 3.componentes (trminos)Se puede mostrar el trmino como un rbolpadresperditapongomanchas

  • Estructura de los programas

    Los programas consisten en procedimientosLos procedimientos consisten en clasulasCada clasula es un hecho o una reglaLos programas se ejecutan haciendo preguntas

    Por ejemplo

  • Ejemploelefante(dumbo).elefante(jumbo).elefante(X) :- gris(X), mamifero(X), tieneTrompa(X).Procedimiento para elefantePredicadoClasulasReglaHechos

  • Ejemplo?- elefante(jumbo).

    yes

    ?- elefante(pongo).

    noPreguntaRespuesta

  • Interpretacin de las clasulasLas clasulas pueden leerse de forma declarativa o procedimentalH :- G1, G2, , Gn.Se puede demostrar H ssi G1, G2, , Gn tambin puedan demostrarse.Para evaluar el procedimiento H, se ejecutan los procedimientos G1, G2, , Gn previamente.InterpretacindeclarativaInterpretacinprocedimental

  • UnificacinDos trminos se unifican si pueden sustituirse variables de tal forma que los trminos se hacen idnticos.El algoritmo de unificacin procede por descenso recursivo de los dos trminos.Constantes unifican si son idnticasVariables unifican con cualquier trmino, incluyendo otras variablesTrminos compuestos unifican si el functor y componentes unifican.

  • EjemplosLos trminos f(X, a(b,c)) y f(d, a(Z, c)) unifican.ZcadfbcaXfLos trminos unifican si se sustituye d por X, y b se sustituye por Z. Esta sustitucin tambin se denomina instanciacin.

  • EjemplosLos trminos f(X, a(b,c)) y f(Z, a(Z, c)) se unifican.ZcaZfbcaXfNtese que Z se comparte dentro del mismo trmino.

  • EjemplosLos trminos f(c, a(b,c)) y f(Z, a(Z, c)) no se unificanZcaZfbcacfEstos dos trminos no pueden hacerse idnticos sustituyendo variables.

  • ListasLas listas en Prolog son similares a las de otros lenguajes ya que se compone de trminos de cualquier tamao 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 listasNil 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).

  • Reevaluacin (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

    DeterminsticoNo determinstico

  • Controlando la reevaluacincolor(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

  • Clasulas y bases de datosEn una base de datos relacional, las relaciones se consideran tablas, en los que cada elemento de una relacin n-aria se almacena como una fila de la tabla, que cuenta con n columnas.

    proveedorperezsillarojo10lopezmesanegro50

    Usando clasulas, se puede representar de la siguiente forma:

    proveedor(perez, silla, rojo, 10).proveedor(lopez, mesa, negro, 50).

  • Clasulas y bases de datosVentajas de usar clasulas:Reglas y hechos coexisten.Se permiten definiciones recursivas.Se permiten mltiples respuestas a la misma consulta.No hay distincin de rol entre el input y el output.La inferencia ocurre automticamente.

  • Casos de aplicacinSistemas expertosUn sistema informtico que simula el proceso de aprendizaje, de memorizacin, de razonamiento, de comunicacin y de accin de un experto humano en una determinada rama de la ciencia, suministrando, de esta forma, un consultor que puede sustituirle con unas ciertas garantas de xito

  • Casos de aplicacinSistemas expertosEstas caractersticas le permiten almacenar datos y conocimiento, sacar conclusiones lgicas, 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 aplicacinProcesamiento de lenguaje natural (NLP)Prolog es un lenguaje muy expresivo para plantear algoritmos de lingstica computacional. Para el Procesamiento de Lenguaje Natural (NLP), se requiere la manipulacin de smbolos (palabras, fonemas y otras partes del lenguaje), basados en objetos estructurados (secuencias, rboles, grafos). Prolog facilita la expresin de operaciones sobre los smbolos y estructuras sin preocuparse de la representacin y manipulacin interna del computador.

  • Casos de aplicacinAsignacin de recursos limitadosEl laboratorio de investigacin de la IBM Haifa ha desarrollado un sistema en Prolog para asignar aviones en las lneas areas israeles 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 ocupacin. El sistema est conectado en lnea con el sistema de programacin del El-Al y se actualiza en tiempo real en cuanto a cambios de horarios de vuelo.

  • Casos de aplicacinDiseo experto de productos

    En este sistema, el diseo de anteojos se hace a la medida. Una fotografa de la cara del cliente se alimenta como datos de entrada. El sistema experto en Prolog propone un diseo y si el cliente aprueba el diseo, ste se transmite desde las estaciones grficas a la fbrica usando una red. El tiempo promedio de entrega es de una hora

    La base de conocimiento para proponer el diseo incluye entre otros, datos sobre el color de la piel y del pelo del cliente, preferencias individuales, conocimientos tcnicos pticos, conocimiento del diseador de proponer forma y los colores y formas de moda .

  • Casos de aplicacinVerificacin de circuitos digitales

    Siemens ha desarrollado en Prolog el sistema CVE, el cual es utilizado para verificar de forma automtica el comportamiento de salida de un circuito digital como una funcin Booleana como una funcin de la entrada. Las funciones que se obtienen se comparan de manera simblica 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 comparacin simblica es equivalente a simular un circuito con todos los posibles patrones de entrada, verificando todas las salidas de la simulacin

  • Casos de aplicacinConfigurador (Wizard) de red de Windows NTEl sistema operativo Microsoft Windows NT utiliza un intrprete 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 informacin declarativa proporcionada por el script de instalacin de cada componente. Esta informacin, se almacena junto al intrprete interno, que es consultada para generar la mejor configuracin.

    Los resultados de la consulta, almacenados en la base de datos de la configuracin del NT (registry), informan a cada componente o driver su orden de la carga y asociacin de componentes

  • Muchas [email protected]://maestros.unitec.edu/~efutch