Inteligencia Artificial Amzi! Prolog Lic. Gerardo Rossel Profesor de la Facultad de Tecnología Informática UAI Profesor de Inteligencia Artificial UNLa. Chief Scientist - Director de Proyectos Especiales Omnisis S.A. Licenciado en Ciencias de la Computación FCEyN UBA ¿Que es Inteligencia Artificial? l Desarrollo de métodos y algoritmos que permitan comportarse a las computadoras de modo inteligente. l Minsky : “El problema de la Inteligencia Artificial es la naturaleza de la misma inteligencia, un tema que nadie comprende muy bien. ¿Por qué no? Quizás en parte porque nadie ha tenido la oportunidad de estudiar otros tipos de inteligencia distintos de la humana” Lic. Gerardo Rossel 2 1 Diversas Miradas l l l Psicólogos Cognitivos: Estudio del pensamiento humano mediante la simulación en computadoras Ingeniero: Emulación del comportamiento inteligente independientemente de si se corresponde o no con el pensamiento humano Otros: Ciencias de la Computación Avanzada Lic. Gerardo Rossel 3 ¿Que es la Inteligencia Artifcial? l Sistemas que piensan como humanos l Sistemas que actúan como humanos l Sistemas que piensan racionalmente l Sistemas que actúan racionalmente Lic. Gerardo Rossel 4 2 Test de Turing (1950) ¿Cúal es la computadora? Lic. Gerardo Rossel 5 Searle y la Sala China l l l “Minds, brains and programs” 1980. • Si para todo x componente de un sistema x no tiene conciencia entonces el sistema no tiene conciencia. “The Rediscovery of the Mind” 1992 • propiedad emergente de determinada organización de un sistema neuronal. De todas formas uno de los objetivos más claros de la IA es la de producir agentes inteligentes que asistan a los humanos compensando las limitaciones de éstos. Estoevidentemente provee un beneficio práctico del cual ya se podría disfrutar. Lic. Gerardo Rossel 6 3 Lectura Recomendada l WHAT IS ARTIFICIAL INTELLIGENCE? • John McCarthy • Universidad de Stanford • http://www-formal.stanford.edu/jmc/ Lic. Gerardo Rossel 7 ¿Desde Cuándo? l McCulloch - Pitts (A logical calculus of the ideas immanent in nervous activity) 1943. Lógica Proposicional, Fisiología Básica y Teoría de la Computabilidad: • • La neurona tiene una actividad de todo o nada. Es decir es binaria (activa/inactiva) • • El único retraso es el retraso sináptico. • Es preciso que un número fijo de sinapsis mayor que uno sean excitadas (en un período determinado) para que se excite la neurona. La actividad de cualquier sinapsis inhibitoria impide por compl eto la excitación de la neurona en ese momento. La estructura de la red de interconexiones no cambia. l Todos los conectores lógicos pueden lograrse usando estructuras de red l En 1949 Organization of Behaviour Donald Hebb propone una teoría del aprendizaje. Lic. Gerardo Rossel 8 4 ¿Desde Cuándo? Lic. Gerardo Rossel 9 ¿Desde Cuándo? l Marvin Minsky y Dean Edmonds (Princeton): La primera red neuronal (1951) 3000 válvulas de vacío y un mecanismo de piloto automático obtenido de un B-24 • Los asesores de doctorado de Minski decían que eso no era matemáticas • Von Neuman: “Si no lo es actualmente, algun día lo será” Lic. Gerardo Rossel 10 5 Nacimiento Oficial l Verano 1956 Jhon McCarthy, Minsky, Claude Shanon y Nathaniel Rochester organizaron un taller para los investigadores del área. • Newell • y Simon presentan el Teórico Lógico, un programa de razonamiento: al final del taller el programa era capaz de demostrar gran parte de los teoremas del capítulo 2 de Principia Mathematica de Russel/Whitehead. McCarthy propone un nuevo nombre: Inteligencia Artificial Lic. Gerardo Rossel 11 Los primeros progresos l 1960s • Se • • crea el lenguaje Lisp (el segundo lenguaje de programación más antiguo) Desarrollo de métodos de razonamiento simbólico usando logical constraints Ronseblatt demostró el teorema de convergencia del perceptrón Lic. Gerardo Rossel 12 6 Exitos e ilusiones l l 1970s • • • Surgen los sistemas expertos: MYCIN Prolog (Programing in Logic) (Alan Colmerauer – Robert Kowalski. Marsella Francia) Aprendizaje simbólico 1980s • • • • • De pronto la IA es la última moda Los japoneses anuncian el proyecto “quinta generación” o sea: computadoras inteligentes que corran prolog Se fundan (y funden) muchas compañías de IA Las redes neuronales se vuelven populares En 1987 alrededor de 1900 sistemas expertos Lic. Gerardo Rossel 13 La madurez l 1990s: • Inteligencia Artificial no es una moda pero es utilizada más que nunca. • Inteligencia Artificial es embebida en grandes sistemas. • Los algoritmos genéticos y la vida artificial ganan popularidad. Lic. Gerardo Rossel 14 7 Inteligencia Artificial Hoy l l l l Los programas que usan técncias de IA son usualmente sólo piezas de un sistema mayor Componentes Inteligentes Agentes y Sistemas Multiagentes Journals con las tendencias actuales: IEEE Intelligent Systems y AI Magazine. Más técnicas: IEEE Transactions on Knowledge and Data Engineering and Artificial Intelligence. Lic. Gerardo Rossel 15 Inteligencia Artificial Hoy l Herramientas de última generación • Amzi! Prolog • KnowledgeWright l Aplicaciones • Detección de fraude en tarjetas de credito • Detección de intrusos en firewalls • Asistencia automática a médicos en sitios remotos • Motores de búsqueda Lic. Gerardo Rossel 16 8 Aplicaciones l l l l l l Vehículos autonómos Juegos Simuladores de vuelo Scheduling Planificación de configuraciones personalizadas Asistencia técnica on-line Lic. Gerardo Rossel 17 Opciones: l Usar lenguajes de Inteligencia Artificial: Prolog, Lisp. l Usar paquetes prearmados. l Programar en un lenguaje tradicional. Lic. Gerardo Rossel 18 9 ¿Por qué Prolog para IA? l l l l La sintáxis y la semántica de Prolog son mucho más cercana a la lógica formal. Prolog provee backtracking automático, lo cual hace considerablemente más fácil la búsqueda. Prolog soporta razonamiento multidireccional. Las implementaciones modernas compilan proveyendo eficiencia similar a otros lenguajes. Lic. Gerardo Rossel 19 PROLOG HOY Amzi! Prolog + Logic Server 10 Lógica y Computación IA verificación lógica de la programación representación del conocimiento programación lógica programación declarativa constraintsatisfaction Lógica de la Computación verificación de programas prueba de propiedades Lógica Computacional Uso directo de la lógica como herramienta de programación Lic. Gerardo Rossel 21 Dos visiones l Convencional: Nos permite razonar acerca de la corrección de los programas l Usar la lógica para representar problemas y resolverlos Lic. Gerardo Rossel 22 11 Programación en Lógica l Robert Kowalski l Un programa lógico consiste en un conjunto de axiomas o reglas, que definen relaciones entre objetos. La ejecución del mismo corresponde a la deducción de consecuencias del programa Lic. Gerardo Rossel 23 Conocimiento Fáctico l Programas = Estructuras de Datos + Algoritmos l Dos tipos de concimientos: • • l Factual o Fáctico (Datos) Procedural (secuencia de instrucciones) Consideremos un sistema de reserva de una línea áerea • • vuelos, pasajeros asignar un pasajero a un vuelo Lic. Gerardo Rossel 24 12 Conocimiento Lógico l l l ¿Como representar conocimiento lógico? Reglas y relaciones son confusas en el marcode datos y procedimientos. Ejemplos • • • • • • • Cotizaciones: Las relaciones entre precios y los factores que afectan a éste para productos de complejidad mediana Regulaciones Las reglas y regulaciones de compañías privadas o estatales: impuestos, reglas de seguros, requerimientos legales, beneficios y work flow. Configuración Las complejas relaciones entre las necesidades de clientes y los productos y componentes Soporte Las relaciones entre fallas y síntomas en el diagnóstico de solu ciones de soporte técnico o entre las necesidades del cliente y los productos y servicios apropiados Scheduling Reglas que gobiernan el secheduling de radio y TV, trabajos, alocación de recursos, eventos deportivos, etc. Gramáticas Reglas de traducción entre protocolos de transferencia de datos, entradas de programas o lenguaje natural Científico Relaciones geológicas entre observaciones de superficies y petróleo, compartamiento de los circuitos eléctricos, modelización de redes, diagnóstico médico y modelización económica Lic. Gerardo Rossel 25 Algoritmos = lógica + control Representación del Conocimiento Motor de Inferencia Sistema de Deducción Problema Preguntas Respuestas Lic. Gerardo Rossel 26 13 Procedural vs Declarativo /* member en C */ int member(int x, int list[LISTSIZE]) { for (int i= 0; i < LISTSIZE; i++) if (x = list[i]) return TRUE; return FALSE } / /member en Pascal member(item, L , N) var i:Integer begin repeat i := i+ 1 until (L[i] = item) or (I = N) member := item = L[i] end Prolog: member(X,[X|Ls]). member(X,[Y|Ls] ):- member(X,Ls). Lic. Gerardo Rossel 27 Amzi! the e-Prolog embeddable, extensible for e-applications Lic. Gerardo Rossel 28 14 Ejemplo: ¿donde está nany? Lic. Gerardo Rossel 29 Ejemplo: Conocimiento a Definir l l l l Las puertas y sus conexiones. Las cosas y su ubicación Las propiedades de varias cosas. Donde se encuentra el jugador al comienzo del juego Lic. Gerardo Rossel 30 15 Los hechos habitacion(cocina). habitacion(oficina). habitacion(hall). habitacion('salon comedor'). habitacion(sotano). puerta(oficina, hall). puerta(cocina, oficina). puerta(hall, 'salon comedor'). puerta(cocina, sotano). puerta('salon comedor', cocina). locacion(escritorio, oficina). locacion(manzana, cocina). locacion(luzvelador, escritorio). locacion(lavadora, sotano). locacion(nani, lavadora). locacion(brocoli, cocina). locacion(galletas, cocina). locacion(computadora, oficina). aqui(cocina). Lic. Gerardo Rossel 31 Algunas Reglas conecta(X,Y) :- puerta(X,Y). conecta(X,Y) :- puerta(Y,X). ir_a(Lugar):pueder_ir(Lugar), mover(Lugar), mirar. mover(Lugar):- retract(aqui(X)), asserta(aqui(Lugar)). Lic. Gerardo Rossel 32 16 Interface en Delphi Interface: Delphi .NET Java/JSP/Servlet Base Lógica Prolog var t: TTerm; LS.InitLS(''); LS.LoadXPL('nani'); LS.ExecPStr(t, 'mirard'); Lic. Gerardo Rossel 33 Predicados Extendidos function p_memo_add(EngID: TEngID): TTFi; stdcall; export; function p_memo_add; begin LSEng.GetParm(1, dADDR, @TheMemo); TheMemo.Lines.Add(LSEng.GetPStrParm(2)); Result := lsTrue; end; LSEng.AddPred('memo_add', 2, p_memo_add); mirar_end(Lugar) :- dyn_control('memo', 'memo1', MemAdr), memo_add(MemAdr,$Ud esta mirando en: $), memo_add(MemAdr,Lugar), memo_add(MemAdr,$Ud puede ver: $), lista_cosasd(MemAdr, Lugar). Lic. Gerardo Rossel 34 17 Delphi interface Lic. Gerardo Rossel 35 Sistemas Expertos l l l Resuelven problemas reales que normalmente requieren un experto humano. El conocimiento experto es caro, escaso y puede ser dificultoso hallar un experto en una urgencia. Ingeniería de Conocimiento y Base de Conocimiento Lic. Gerardo Rossel 36 18 KnowledgeWrite SI tose = “SI” ENTONCES humo = “SI” SI humo = "SI" and temperatura = "caliente“ ENTONCES "Se incendia“ SI tose = "NO" and alarma = "suena“ ENTONCES “Hay un ladron“ SI mojado = "SI" and llueve = "NO“ ENTONCES “Se rompio la cañería” Lic. Gerardo Rossel 37 KnowledgeWrite: goal Lic. Gerardo Rossel 38 19 KnowledgeWrite: rule set Lic. Gerardo Rossel 39 KnowledgeWrite: questions Lic. Gerardo Rossel 40 20 KnowledgeWrite: Verificador Lic. Gerardo Rossel 41 Lic. Gerardo Rossel 42 Arquitectura 21 Ejemplo de Aplicación Nexstar Financial Corporation l Aplicación WEB que permite encontrar el mejor crédito hipotecario para un cliente. l El cálculo de valores es un factor crítico y altamente variable. l Los módulos de precios originalmente en Java: • • fueron implementados 5000 líneas de código Múltiples tablas en la base de datos. Lic. Gerardo Rossel 43 Problemas.. l Necesidad de ser constantemente actualizada para reflejar los cambios en los factores y reglas de tasación. l La interdependencia dinámica entre factores y reglas son dificultosas de expresar en un lenguaje procedural. l Los cambios eran dificultosos de implementar, proclives a errores e implicaban un largo ciclo de control de calidad (QA). Lic. Gerardo Rossel 44 22 Solución: Amzi! Prolog + Logic Server l En menos de dos meses: • Se reemplazaron 18 tablas de la BD con archivos de aserciones lógicas. • 5000 líneas de código Java con 500 líneas de relaciones lógicas. l La base lógica resultante fue virtualmente libre de errores (1% de los bugs de la versión Java) l El ciclo de QA fue dramáticamente reducido. l Actualmente otras partes de la aplicación están bajo migración(ej. scheduling de tareas de toma de decisiones). Lic. Gerardo Rossel 45 Prolog y las Enseñanzas l Los convenios y la licencia académica de Amzi! Prolog permiten el uso de herramientas de punta para la enseñanza y la investigación. l La Universidad Abierta Interamericana cuenta con un convenio para el uso de Amzi! Prolog en Docencia e Investigación Lic. Gerardo Rossel 46 23 Enseñanza l Sistemas Expertos: • Prolog reduce el “gap semántico” entre el código de Prolog y la especificación lógica de programas: rule-based programming, built-in pattern matching, and backtracking execution. • KnowledgeWright Provee la herramienta ideal para la enseñanza de sistemas expertos. Lic. Gerardo Rossel 47 Enseñanza A partir de Septiembre del 2003 la UAI ofrecerá una: Lic. Gerardo Rossel 48 24 l Modalidad: Semipresencial l Cinco Módulos: • Bases de la Inteligencia Artificial • Teoría de Juegos • Algoritmos Genéticos y Programación Evolutiva • Tópicos Avanzados de Inteligencia Artificial • Inteligencia Artificial Aplicada Lic. Gerardo Rossel 49 Gracias… l l Preguntas Contacto: Gerardo.Rossel@omnisis.com.ar Lic. Gerardo Rossel 50 25