Inteligencia Inteligencia Artificial Artificial Fco. Javier Alcalá Casado Normas Normas de de la la asignatura asignatura ð La asignatura consta de una parte teórica y otra práctica. ð La parte teórica se evaluará con el correspondiente examen de teoría: 80% de la nota ð La parte práctica se realizará con el lenguaje de programación LISP: 20% de la nota. 0.8 * Teoría + 0.2 * Práctica ≥ 5.0 ð La no presentación de la práctica significa la renuncia a la parte correspondiente de la nota final. Programa Programa ð Introducción histórica ð Lenguaje de programación LISP ð Paradigmas de representación del conocimiento ð Frames ð Sistemas de producción ð Paradigma lógico ð Exploración de espacios de estados. Búsqueda ð Exploración de árboles de juego ð Planificación ð Aprendizaje simbólico. ID3 ð Algoritmos genéticos Bibliografía Bibliografía ð Serradilla, F.; Barros, B. Representación e Inferencia en Inteligencia Artificial. Un Enfoque Práctico. Escuela Universitaria de Informática, UPM. 1996. ð Russell, S, Norvig, P. Artificial Intelligence, a modern approach. Prentice-Hall. 1995. ð Barros, B; Foulquié, T; Serradilla, F. Programación Funcional en Lisp. Escuela Universitaria de Informática, UPM. 1992. ð Feigenbaum y otros. The Handbook of AI (4 volúmenes). Addison-Wesley. ð Luger, G. F. & Stubblefield, W. A. Artificial Intelligence: structures and strategies for complex problem solving. The Benjamin-Cummings Redwood City. 1993. ð Nilsson, Nilss J. Principios de Inteligencia Artificial. Díaz de Santos. 1987. ð Rich, E. Inteligencia Artificial. Mac Graw-Hill. 1991. ð Winston, P. H. Inteligencia Artificial. 3ª ed. Addison-Wesley. 1992. ð Winston, P. H. Lisp. Addison-Wesley. 1993. Introducción Introducción histórica histórica Fco. Javier Alcalá Casado Introducción Introducción histórica histórica ð El problema de la inteligencia ð Objetivos de la inteligencia artificial (IA) ð Historia û û û û û û Rama lógico-matemática Rama de la psicología Rama de la informática Conferencia de Darmouth Rama de la simulación Panorama actual ð Los primeros sistemas ð Áreas de estudio El El problema problema de de la la inteligencia inteligencia ð El principal problema de la inteligencia natural es que no tiene una fácil definición ð Hofstadter (1987): Inteligencia es la habilidad para û responder flexiblemente a diferentes situaciones, û saber aprovechar circunstancias fortuitas, û dar sentido a mensajes ambiguos o contradictorios, û encontrar similitudes entre situaciones diferentes, y û generar nuevos conceptos e ideas innovadoras El El problema problema de de la la inteligencia inteligencia (II) (II) ð La inteligencia artificial trata de “imitar” a la inteligencia natural. ¿Cómo definirla? Eficiencia humana Racionalidad Procesos mentales y razonamiento Sistemas que piensan como humanos (Bellman) Sistemas que piensan racionalmente (Winston) Conducta Sistemas que actúan como humanos (Minsky) Sistemas que actúan racionalmente (Luger) El El problema problema de de la la inteligencia inteligencia (III) (III) ð Bellman (1978): IA es la automatización de actividades que vinculamos con procesos del pensamiento humano, actividades tales como toma de decisiones, resolución de problemas, aprendizaje... ð Winston (1992): La IA se ocupa del estudio de las computaciones que permiten percibir, razonar y actuar ð Minsky (1986): IA es el arte de construir máquinas capaces de hacer cosas que requerirían inteligencia en caso de que fuesen hechas por los seres humanos ð Luger (1989): IA es la rama de la informática que trata de la automatización del comportamiento inteligente Test Test de de Turing Turing ð Turing (1950) dio una definición empírica: el juego de la imitación. ð Test de Turing: ¿Puede saber el hombre de fuera en qué habitación está la máquina? Test Test de de Turing Turing (II) (II) ð Para superar el test de Turing, una máquina debería ser capaz de: û procesar lenguaje natural: para poder establecer una comunicación satisfactoria û representar el conocimiento: para guardar toda la información recibida antes o durante el interrogatorio û razonar automáticamente: para utilizar esa información al responder a las preguntas y obtener conclusiones û autoaprendizaje de la máquina: para adaptarse a nuevas situaciones y detectar y extrapolar esquemas determinados ð Test total de Turing: También imita físicamente. Necesita: û Percepción: Visión artificial, reconocimiento del habla… û Robótica: Habilidades para andar, saltar, subir escaleras… Objetivos Objetivos de de la la inteligencia inteligencia artificial artificial ð La IA es una ciencia multidisciplinar: matemáticas, filosofía, psicología e ingeniería ð Objetivos de ingeniería: desarrollo de sistemas inteligentes mejorando otros anteriores para los que no existe un método algorítmico ð Objetivos científicos: comprender mejor el funcionamiento de la inteligencia, tanto en el hombre como en las máquinas (filosofía, psicología) û ¿Es la inteligencia independiente del hardware? û ¿Cómo se interrelacionan las estructuras mentales? û ¿Qué reglas las gobiernan? Historia Historia ð La IA es el punto de encuentro de varias líneas de investigación û Rama lógico-matemática û Rama de la psicología û Rama de la informática û Conferencia de Darmouth û Rama de la simulación û Panorama actual Rama Rama lógico-matemática lógico-matemática ð Mecanización de los procesos de razonamiento desde el punto de vista de la manipulación de símbolos lógicos ð Hitos importantes: û El primer esfuerzo de mecanización del pensamiento fueron los silogismos de Aristóteles. û Leibniz construye el primer sistema axiomático de lógica formal (cálculo de predicados) û Euler formaliza la Teoría de Grafos û Hilbert intentó encontrar un conjunto de axiomas y un sistema formal que sintetizasen toda la matemática Gödel, con el teorema de incompletitud, demostró que no era posible Rama Rama de de la la psicología psicología ð Estudia los fundamentos de la inteligencia en el hombre ð Hitos importantes û Dualismo mente/cuerpo de Descartes. La mente constituye una entidad independiente del cuerpo y puede estudiarse por separado û Los primeros psicólogos (James, Wundt) estudiaron el pensamiento con una metodología basada en la introspección (subjetiva, poco científica) û Los conductistas (Skinner) consideran a la mente como una caja negra capaz de asociar estímulos con respuestas û La psicología cognitiva (Chomsky, Fodor) es el paradigma más aceptado Rama Rama de de la la psicología psicología (II) (II) ð Características de la psicología cognitiva: û Estructuralista: los modelos de la conducta se explican por estructuras abstractas û Los estímulos son procesados por el organismo para producir respuestas (no conductista) û Mentalismo: la mente utiliza representaciones simbólicas de los conceptos y los procesos mentales manipulan los símbolos û Paradigma del procesamiento de la información: la mente funciona como un ordenador; los programas son teorías psicológicas û Memoria semántica, modelo de memoria asociativa: los conceptos se representan por símbolos interrelacionados (redes semánticas) û Modularidad: los procesos mentales son afrontados por módulos débilmente acoplados Rama Rama de de la la psicología psicología (III) (III) û Isomorfismo. Hofstadter: “Dos sistemas son isomórficos cuando se puede encontrar un conjunto de reglas que traduzca o identifique estados de cualquiera de ellos en estados del otro.” Objeto ∈ Mundo Representación ∈ Mente Conexiones ∈ Cerebro Rama Rama de de la la informática informática ð Inteligencia artificial ⇒ inteligencia + artefacto El ordenador se reconoce como el artefacto con mayor posibilidad de manifestar inteligencia ð Hitos importantes û Charles Babbage (principio siglo XIX) diseñó la primera máquina capaz de desarrollar cálculos automáticos û Junto con Ada Lovelace diseñó la máquina analítica de propósito general introduciendo conceptos como la memoria, procesador, programas almacenados, saltos condicionales, etc. û Alan Turing (1937) propone la máquina de Turing. Cualquier procedimiento matemático puede desarrollarse con dicha máquina con una tabla de instrucciones adecuada Rama Rama de de la la informática informática (II) (II) û La Cibernética o Teoría de Sistemas (Wiener) puede aplicarse a sistemas biológicos, sociales y artificiales. Se basa en la retroalimentación negativa Objetivo + - Error CONTROL Medida Actuación SENSOR SISTEMA Comportamiento Objeciones Objeciones de de Turing Turing ð En 1950, Turing publica Maquinaria de computación e inteligencia. Propone el test de Turing, defiende la posibilidad de construir máquinas que piensen y enumera las posibles objeciones contra estas máquinas: û Teológicas: la mente no reside en el cuerpo sino en el alma. Si se admite el dualismo, se niega la psicología No es científica û Del avestruz: si las máquinas pensaran, las consecuencias serían desastrosas; luego esto no puede ocurrir Sin comentarios û Matemáticas: el teorema de incompletitud de Gödel demuestra que en un sistema formal suficientemente complejo existen proposiciones indecidibles La mente humana no supera esta limitación Objeciones Objeciones de de Turing Turing ð Más objeciones: û De conciencia: las máquinas no saben lo que están haciendo cuando trabajan. Minsky ⇒ los tres estados de conciencia de un termostato û De las diversas incapacidades: una máquina nunca podrá ser afectuosa, ingeniosa, amistosa, tener iniciativa... Ahora no, pero sí podría en el futuro û Objeción de Lady Lovelace: una máquina sólo realiza lo que sabemos cómo ordenarle que haga Se le puede ordenar que sea inteligente Objeciones Objeciones de de Turing Turing (II) (II) ð Más objeciones: û Continuidad del sistema nervioso: una máquina de estados discretos no puede emular al hombre La discretización no supone limitaciones û Basadas en la informalidad de la conducta: el hombre no tiene un conjunto de reglas para regir su vida y las máquinas funcionan con reglas Las neuronas presentan un comportamiento rígido y de ellas surge comportamiento flexible inteligente û Basado en la percepción extrasensorial: Test de Turing extrasensorial No científica Conferencia Conferencia de de Darmouth Darmouth ð Tuvo lugar en 1956 ð Todas las ramas anteriores confluyen en una nueva disciplina, agrupando a psicólogos, matemáticos, informáticos, neurólogos e ingenieros eléctricos ð John McCarthy acuña el término de Inteligencia Artificial ð Esta rama unificada de psicólogos cognitivos, lógico-matemáticos y computación simbólica se denomina IA clásica o IA simbólica Rama Rama de de la la simulación simulación ð También llamada IA conexionista Desarrolla sistemas inteligentes imitando sistemas biológicos con comportamiento inteligente (animales o seres humanos) ð Su objetivo es construir cerebros artificiales formalmente similares a los cerebros biológicos para dotarles de aprendizaje ð Hitos importantes: û Células de McCulloch y Pitts (1943). Emulación de neuronas con circuitos eléctricos û Perceptrón (Rosenblatt, 1958). Mecanismo de aprendizaje mediante ajuste automático de las conexiones de una red de neuronas û Perceptrón multicapa (Rumelhart, Hinton y Williams, 1986). Generalización del perceptrón û Algoritmos Genéticos (Friedberg, 1958). Basados en la teoría evolucionista de Darwin Panorama Panorama actual actual ð IA clásica + Rama de la Simulación = Ciencia Cognitiva ð Su objetivo es el estudio de los “objetos con mente” y los procesos implicados en el pensamiento ð Cuestiones abiertas: û Objeciones al Test de Turing, orientado a resolución de problemas, olvidando la percepción, el aprendizaje y la destreza û Objeciones de la Habitación china Reglas Símbolos ¿Sabe chino el hombre de la habitación? Panorama Panorama actual actual (II) (II) ð Más cuestiones abiertas: û Mezcla de técnicas de IA clásica con técnicas de la rama de simulación û Importancia creciente del aprendizaje û Problema de los problemas de juguete û Evolución desde los objetivos científicos a los ingenieriles û Con ordenadores más potentes se consideran métodos que antes se desechaban û Herbert Simon: la complejidad demostrada por seres vivos se debe a la complejidad del medio con el que interactúan más que a la complejidad interna de sus “programas” ⇒ ⇒ Vida artificial Los Los primeros primeros sistemas sistemas ð Logic Theorist. Demostración automática de teoremas. Primer programa que utilizó símbolos en lugar de cantidades numéricas ð DENDRAL. Primer sistema experto para análisis de datos de espectografía de masas (isótopos) ð SHRDLU. Comprensión del lenguaje natural y planificación de tareas ð Turochamp. Primer programa de ajedrez ð Programa de damas de Samuel. Primer programa que incorpora aprendizaje ð MYCIN. Sistema experto sobre infecciones bacterianas en sangre. Introduce el grado de certeza ð PROSPECTOR. Sistema experto sobre búsqueda de yacimientos minerales Áreas Áreas de de estudio estudio ð La IA está en continua evolución. Áreas más relevantes: û Representación del conocimiento: Modeliza el conocimiento en estructuras de datos adecuadas û Exploración del espacio de estados: Busca soluciones en problemas modelizados con grafos û Heurística: Conocimiento intuitivo. Atajos entre el estado actual y la solución û Resolución de problemas: Planificación de tareas û Demostración de teoremas: Programación lógica û Teoría de juegos: Estrategias de búsqueda (ajedrez) û Ingeniería del conocimiento (Sistemas Expertos): Requieren de la ayuda de un experto humano Áreas Áreas de de estudio estudio ð Más áreas de estudio: û Diagnóstico: Establece hipótesis sobre el mal funcionamiento de un sistema û Aprendizaje: Refina el conocimiento inicial para hacerlo más operativo û Comprensión del lenguaje natural (y traducción automática): û Percepción computacional (reconocimiento de patrones): interpreta la información sensorial û Simulación de procesos psicológicos humanos: Estudia la inteligencia humana mediante procesos de simulación û Sistemas multiagente: Coordinación de la conducta inteligente entre un conjunto de agentes autónomos y heterogéneos Lenguaje Lenguaje de de Programación Programación LISP LISP Fco. Javier Alcalá Casado Marco Marco histórico histórico ð McCarthy lo creó en 1958 ð Se creó para procesar de listas en un proyecto de IA ð La primera versión consumía mucha memoria (recurso caro) ð Se crearon varias versiones: FRANZLISP, ZETALISP, MULISP, XLISP, LELISP, SCHEME... ð Con el avance del hardware se solucionó el problema de la memoria y surgió el estándar actual: COMMON LISP Características Características de de LISP LISP ð Lenguaje funcional. Utiliza las propiedades matemáticas de las funciones ð Simbólico. Utiliza el símbolo como unidad fundamental ð Procesamiento de listas (LISt Procesing) ð Flexibilidad û û û û Utiliza la misma estructura para datos y código Paso de funciones como parámetro (reusabilidad) Autodefinición del lenguaje (entorno a la medida) Estructura de datos muy flexible (Garbage collector) ð Recursividad. Definiciones muy claras y concisas ð Interpretado. Desarrollo rápido de prototipos ð Compacto: funcional + recursivo + listas Lenguajes Lenguajes funcionales funcionales ð La primitiva básica es la función ð Una función es una regla de correspondencia entre miembros de un dominio y miembros de un rango ð Un programa es un conjunto de funciones que se llaman unas a otras y se pasan los datos en las llamadas ð Una ventaja importante es la recursividad ð La asignación está definida y se utiliza; a pesar de ser considerado un lenguaje sin asignación Componentes Componentes de de LISP LISP ð Conjunto de objetos o datos. Estructura fundamental: lista ð Funciones primitivas. Aquéllas aportadas inicialmente por el lenguaje ð Operación de aplicación (read-eval-print loop). Primitiva encargada de gestionar y realizar el proceso de interpretación: lectura-escritura-devolución de resultados ð Formas funcionales (DEFUN). Funciones definidas por el programador que pasan a formar parte del lenguaje como una primitiva más ð Operadores aplicativos. Funciones cuyos parámetros son otra función y los argumentos de esta otra función Campos Campos de de aplicación. aplicación. Funcionalidad Funcionalidad ð Campos de aplicación: û Inteligencia Artificial û Entornos gráficos ð Funcionalidad: û No se deben utilizar variables globales dentro de funciones. Atenta contra la reusabilidad y la claridad del programa. En su lugar, se utilizan variables locales o paso de parámetros û No se deben utilizar estructuras iterativas, sino recursividad Paradigmas Paradigmas de de Representación Representación del del Conocimiento Conocimiento Fco. Javier Alcalá Casado Paradigmas Paradigmas de de representación representación del del conocimiento conocimiento ð Computación sobre representaciones ð Tipos de conocimiento ð Uso del conocimiento ð Tipos de razonamiento ð Tipos clásicos de representación: û Frames (marcos) û Sistemas de producción û Paradigma lógico û Exploración de espacios de estados Computación Computación sobre sobre representaciones representaciones ð Una estructura de datos no representa conocimiento. Es necesario establecer mecanismos para acceder y relacionar distintas partes del conocimiento ð Un sistema inteligente se divide en: û representaciones del conocimiento y û computaciones sobre estas representaciones ⇒ Paradigma C-R ð Se independiza el proceso de resolución del problema, inferencia, de la naturaleza del mismo Computación Computación sobre sobre representaciones representaciones (II) (II) Problema Modelización Representación Inferencia Solución Explicación Tipos Tipos de de conocimiento conocimiento ð Objetos. Conceptos con entidad propia ð Eventos. Especifican sucesos en el tiempo ð Reglas de inferencia. Indican cómo obtener nuevo conocimiento a partir del que ya tiene el sistema ð Conocimiento procedural. Indica la manera de realizar determinadas cosas. Son las computaciones sobre las representaciones. El cómo ð Metaconocimiento. Conocimiento a nivel más abstracto. Da una idea de cuál es la mejor manera de resolver un problema ð Conocimiento declarativo. Representa los conceptos que intervienen en el problema. Hechos, reglas y metaconocimiento. El qué Ejemplo Ejemplo del del Metro Metro ð Definir un sistema que permita calcular el camino más corto entre dos estaciones: û Objetos: las estaciones û Eventos: las horas a las que pasan los trenes û Reglas de inferencia: determinan a qué estaciones puedo pasar a partir de una dada û Conocimiento procedural: cómo encontrar un camino entre dos estaciones û Metaconocimiento: para encontrar un camino debo buscar explorando hacia la estación destino Uso Uso del del conocimiento conocimiento ð Problemas que se plantean con el uso del conocimiento: û Adquisición. Los modelos de representación deben ser capaces de recoger nueva información para que se integre con la adquirida anteriormente, completándola o actualizándola û Recuperación. El acceso a parte del conocimiento debe ser sencilla y eficiente. La memoria asociativa humana relaciona información con un contexto û Razonamiento. Permite obtener nuevo conocimiento a partir del que ya se tiene. Este conocimiento está implícito, pero es de difícil obtención Tipos Tipos de de razonamiento razonamiento ð Formal. Deduce, con reglas de inferencia, estructuras de datos manipulando sintácticamente otras estructuras (gramáticas generativas) ð Procedural. Razonamiento mediante la ejecución de determinados algoritmos ð Por analogía. Razonamiento por semejanza. Frecuente en los humanos ð Generalización y abstracción. Proceso de obtención de conocimiento más refinado a partir de otro más simple Tipos Tipos clásicos clásicos de de representación representación ð La representación se divide en dos partes: conocimiento declarativo e inferencia o conocimiento procedural ð Conocimiento declarativo (K). Representa objetos y conceptos que intervienen en el problema. Es dependiente del problema û Hechos (H): cosas ciertas en un momento dado. Constituyen la memoria de trabajo (a corto plazo) û Reglas (R): conocimiento a largo plazo. Permiten obtener nuevo conocimiento a partir del que ya se tiene û Metaconocimiento (M): ayuda a la inferencia a manipular las reglas para obtener un hecho concreto Tipos Tipos clásicos clásicos de de representación representación (II) (II) ð Inferencia o conocimiento procedural (I): Representa el modo de obtener nuevo conocimiento a partir del que ya se tiene en un instante dado. Es independiente del problema ð Paradigmas clásicos de representación û Frames (marcos) Ÿ H: Valores de atributos Ÿ R: Herencia y demonios Ÿ I: Funciones de manipulación, equiparación û Sistemas de producción Ÿ Ÿ Ÿ Ÿ H: Ternas objeto-atributo-valor R: Reglas de producción M: Parámetros, metarreglas I: Encadenamiento de reglas Tipos Tipos clásicos clásicos de de representación representación (III) (III) û Paradigma lógico Ÿ K (H y R): Cálculo de predicados, reglas lógicas, cláusulas de Horn Ÿ I: Unificación, resolución û Exploración de espacios de estados Ÿ Ÿ Ÿ Ÿ H: Estados R: Transiciones de estado M: Funciones heurísticas I: Algoritmos de búsqueda Sistemas Sistemas de de Producción Producción Fco. Javier Alcalá Casado Sistemas Sistemas de de Producción Producción ð Introducción ð Hechos ð Reglas ð Metaconocimiento ð Motor de Inferencia ð Módulo de explicación Introducción Introducción ð En los sistemas de producción se representa el conocimiento mediante hechos, reglas de producción y metaconocimiento. Hechos Motor de Inferencia Reglas Metaconocimiento Módulo de Explicación Introducción Introducción (II) (II) ð Base de hechos: conjunto de todos los hechos ð Base de reglas: conjunto de todas las reglas ð El metaconocimiento establece criterios para aplicar las reglas ð El motor de inferencia permite obtener nueva información a partir de la inicial ð El módulo de explicación justifica las conclusiones que se han obtenido. Hechos Hechos ð Los hechos se representan por ternas Objeto-Atributo-Valor (<objeto>, <atributo>, <valor>) ð Ejemplos: û (rayo, es-un, caballo) û (veloz, es-un, caballo) û (cometa, es-un, caballo) û (rayo, valioso, sí) û (veloz, hijo-de, cometa) û (cometa, rápido, sí) Reglas Reglas ð Tienen el siguiente formato: IF THEN <expresión-lógica> <acciones> Antecedente Consecuente ð Una terna en el antecedente es cierta sólo si existe en la base de hechos ð Si se aplica la regla, se ejecutan todas las acciones del consecuente, que pueden ser nuevas ternas o llamadas a función ð R1: IF (X, es-un, caballo) AND (X, hijo-de, Y) AND (Y, es-un, caballo) AND (Y, rápido, sí) THEN (X, valioso, sí) Metaconocimiento Metaconocimiento ð El metaconocimiento ayuda a determinar qué regla se aplica cuando hay varias aplicables ð Criterios de aplicación de reglas: û La primera regla de la base de reglas û Azar û La más específica (con más elementos en el antecedente) û La más genérica (con menos elementos en el antecedente) û La más recientemente utilizada û La menos recientemente utilizada û La que añada más información (con más elementos en el consecuente) û Todas Metaconocimiento Metaconocimiento (II) (II) ð Si tras aplicar todos los criterios, sigue habiendo varias posibilidades, se elige la primera regla en orden de aparición ð Las metarreglas son reglas que expresan cuándo debemos dar preferencia a una regla concreta Ejemplo: Si la consulta es sobre gripe, entonces dar preferencia a las reglas R3 y R4 Motor Motor de de Inferencia Inferencia ð Repetir û Establecer el conjunto conflicto (CC). Se obtienen todas las reglas cuyo antecedente se equipara con los elementos de la base de hechos y se especifica una lista de pares (regla, sustitución) û Seleccionar un único par (regla, sustitución) con los criterios establecidos por el metaconocimiento û Disparar la regla seleccionada. Se aplica la sustitución y se añaden a la base de hechos las ternas del consecuente. Si ya existe el atributo del objeto en alguna terna del CC, se actualiza su valor para evitar inconsistencias Hasta que el hecho buscado esté en la base de hechos o la base de hechos no haya cambiado Módulo Módulo de de explicación explicación ð Se encarga de dar una justificación a posteriori de las conclusiones a las que ha llegado el sistema ð Se guarda una traza para saber qué reglas y en qué orden se han utilizado, así como los hechos que permitían utilizarlas y las conclusiones intermedias Frames Frames Fco. Javier Alcalá Casado Frames Frames ð Introducción ð Estructura de un frame ð Herencia ð Demonios ð Tipos de facets ð Representación en LISP ð Funciones de manipulación de frames ð Inferencia en frames Introducción Introducción ð Un frame es una estructura activa de almacenamiento de información ð Utiliza mecanismos para buscar automáticamente un dato si éste no se encuentra en el propio frame Estos mecanismos son: û Herencia: mediante una relación de jerarquía, busca el dato solicitado en otros frames û Demonios (o valores activos): son funciones que son llamadas automáticamente cuando se hace referencia a ciertos datos ð Un frame se puede relacionar con otro con relaciones de pertenencia, inclusión o de usuario Estructura Estructura de de un un frame frame ð Un frame es una estructura con compartimentos en los que se guarda la información. Representa un objeto ð Se compone de: û Atributos (slots): cada uno de los compartimentos û Valores: el contenido del compartimento û Facetas (facets): indica cómo se puede utilizar el conocimiento del slot Pedro ES-UN Profesión Altura Value Hombre Default Pintor Value 180 Herencia Herencia ð Si A tiene una relación de instancia o de subclase con B, los atributos de A que no tengan ningún valor lo toman de los que tengan esos mismos atributos en B ð Una relación de instancia se define a través del atributo IS-A (ES-UN). Su valor será el nombre del frame del que hereda ð Una relación de subclase se define a través del atributo AKO (a kind of) ð En una cadena de herencia puede haber varios atributos AKO, pero sólo uno IS-A Demonios Demonios ð Los demonios o valores activos son funciones que se disparan automáticamente cuando se almacenan o se recuperan datos en un frame ð Un demonio tiene dos parámetros: frame y slot ð IF-NEEDED se dispara al intentar recuperar el valor de un atributo que no tiene ningún valor asociado. Proporciona la información requerida ejecutando un algoritmo û El demonio ASK pregunta al usuario el valor de un atributo ð IF-ADDED se dispara después de asignar un valor a un atributo Tipos Tipos de de facets facets ð Un sistema básico dispone de los siguientes facets: û Value: el contenido del slot es un valor literal û Default: el contenido del slot es un valor por defecto (sólo se devuelve si no está definido el facet Value) û Range: indica el rango de valores válidos para el slot û IF-ADDED: el contenido del slot es un demonio IF-ADDED û IF-NEEDED: el contenido del slot es un demonio IF-NEEDED Representación Representación en en LISP LISP ð Hay dos maneras: û Representación muy eficiente pero incómoda de manipular: ( Frame1 Frame2 ... FrameN ) donde cada Frame-i es ( <Nombre-frame> Slot1 ... SlotN ) donde cada Slot-i es ( <Nombre-slot> Facet1 ... FacetN ) donde cada Facet-i es ( <Nombre-facet> <valor> ) û Representación muy sencilla de manipular pero menos eficiente: ( E1 E2 ... EN) donde cada Ei es un par ( ( <Nombre-frame> <Nombre-slot> <Nombre-facet> ) <valor> ) Funciones Funciones de de manipulación manipulación de de frames frames ð FPUT permite añadir información al sistema ( FPUT Frame Slot Valor &OPTIONAL (Facet ‘value) ) ð FGET permite recuperarla ( FGET Frame Slot &OPTIONAL (Origen Frame) (Is-a T) ) ð FFIND encuentra los frames que mejor se equiparan con ciertas restricciones ( FFIND ( Slot1 Valor1 ) ( Slot2 Valor2 ) ... ( SlotN ValorN ) ) Inferencia Inferencia en en frames frames ð La inferencia en frames se realiza de distintas maneras: û Con los valores por defecto û A través de la herencia, cuando se solicita un valor que no está en el frame, pero sí en sus antecesores û A través de los demonios, cuando se disparan procedimientos para calcular el valor solicitado û A través de la equiparación, cuando se busca en la base de frames con FFIND Paradigma Paradigma lógico lógico Fco. Javier Alcalá Casado Paradigma Paradigma lógico lógico ð Introducción ð Unificación de predicados ð Encadenamiento de reglas dirigido por el objetivo Introducción Introducción ð Procesamiento realizado por el lenguaje de programación PROLOG ð Representación basada en: û Términos: variables (A, B, X), constantes (juan, 2, caballo) y funciones cuyos argumentos son términos (f(x), padre(juan)) û Predicados: símbolos de n argumentos (que son términos) que toman valor verdadero o falso caballo(X), valioso(veloz), es-padre(veloz, padre(cometa)) û Cláusulas de Horn: hechos o reglas formadas por varios antecedentes (conjunción) y un consecuente consecuente :- antecedente1, antecedente2 ... La disyunción se representa añadiendo reglas Unificación Unificación de de predicados predicados ð La unificación es un proceso por el cual se transforman dos expresiones lógicas para hacerlas idénticas No siempre es posible realizarla ð Algoritmo para unificar dos predicados: û Los símbolos de los predicados han de ser iguales y con el mismo número de argumentos. Si no se termina con FALLO û Por cada término de ambos predicados puede suceder: Ÿ Si un término es una variable y el otro es cualquier término que no contenga a esa variable, se sustituye la variable por el término Ÿ Si los dos términos son constantes con el mismo valor, ya están unificados. Si el valor es distinto se termina con FALLO Ÿ Si los términos son funciones, deberán llamarse igual y tener el mismo número de argumentos. Se aplica recursivamente el algoritmo a los argumentos de la función Ÿ Si no se cumple ningún caso, se termina con FALLO Ejemplos Ejemplos de de unificación unificación de de predicados predicados ð Unificar: û {tos(X), tos(juan)} ⇒ <X,juan> û {amigo(X,Y), amigo(andres,julio)} ⇒ <X,andres> <Y,julio> û {colocado(X,Y,atras), colocado(X,grande,X)} ⇒ <X,atras> <Y,grande> û {B(a,g(X,b),Y), B(Z,g(c,b),d)} ⇒ <X,c> <Y,d> <Z,a> û {A(X,g(Y)), A(c,Y)} ⇒ FALLO û {A(X,g(Y)), A(c,Z)} ⇒ <X,c> <Z,g(Y)> Encadenamiento Encadenamiento de de reglas reglas dirigido dirigido por por el el objetivo objetivo 1. Se parte de una lista L de objetivos O1 O2 ... On 2. Selección 2.1 Seleccionar un objetivo Oi por orden de aparición 2.2 Seleccionar una cláusula Rj por orden de aparición. Renombrar sus variables. Si el consecuente de Rj puede unificarse con Oi, se crea una nueva rama realizando las sustituciones necesarias; si no se puede unificar ⇒ la rama termina en FRACASO 3. Resolución: Oi se sustituye en L por el antecedente de Rj . A todas las cláusulas de L se les aplica las sustituciones de la unificación 4. Si L vacía ⇒ la rama termina en ÉXITO si no, volver al paso 2 El algoritmo termina cuando se han recorrido todas las ramas Métodos Métodos de de Exploración Exploración en en Espacios Espacios de de Estados Estados Fco. Javier Alcalá Casado Métodos Métodos de de exploración exploración en en espacios espacios de de estados estados ð Introducción ð Algoritmos de búsqueda û Expansión de un camino û Esquema básico de un algoritmo de búsqueda û Método de escalada û Primero el mejor û Algoritmo A* ð Representación en árbol Introducción Introducción ð La exploración de espacios de estados es una de las técnicas más importantes en IA ð Se manejan estados (hechos del problema), transiciones (reglas) y funciones heurísticas (metaconocimiento). La inferencia se realiza a través de algoritmos de búsqueda ð Un estado es cada configuración posible de un problema. Se representan con estructuras de datos. Ej: Problema del Metro ⇒ estado: “estar en la estación X” û Los sucesores son los estados que se pueden alcanzar en un único paso desde un estado. Son el resultado de una transición de estado Ej: Metro ⇒ sucesores: “estaciones consecutivas” Introducción Introducción (II) (II) ð Una transición permite obtener una lista de estados a los que se llega desde un estado previo tras la aplicación de operaciones definidas en el dominio del problema. Se describe con un algoritmo y puede tener un coste asociado. Ej: Metro ⇒ coste: “tiempo medio entre estaciones” ð Una función heurística o heurístico es una función matemática que devuelve un valor numérico menor cuanto más cerca está un estado cualquiera del estado objetivo. El valor no tiene por qué ser exacto. Ej: Metro ⇒ función: “distancia euclídea entre estaciones” Introducción Introducción (III) (III) ð Elementos a definir para la exploración de espacios de estados: û Una estructura de datos para los estados û Operaciones aplicables a un estado para obtener nuevos estados (y un coste asociado, si es preciso) û Una función heurística que devuelva la proximidad entre un estado cualquiera y el estado objetivo û Una función que determine si un estado X es o no un estado solución Algoritmos Algoritmos de de búsqueda búsqueda ð Un algoritmo de búsqueda permite encontrar, desde un estado inicial, una secuencia de estados hasta alcanzar el estado objetivo. ð Cada estado intermedio es consecuencia de aplicar una regla de transición al estado precedente ð Se llama camino a una secuencia de estados que lleva de un estado a otro û Camino solución es el que va desde el estado inicial hasta el estado objetivo û Camino parcial es el que va desde el estado inicial hasta un estado que no es solución (estado actual) Expansión Expansión de de un un camino camino ð La expansión de un camino C resulta de añadir a C cada uno de los nuevos estados alcanzables desde el último estado de C. Se excluyen los caminos cíclicos, es decir, los que llegan a un nodo que ya está incluido en C ð EXPANDIR ( C ) û Calcular los sucesores del último estado de C utilizando reglas de transición û Inicializar R = { } û Para cada sucesor Ei que no esté en C Añadir a la lista R un nuevo camino, obtenido de añadir a C el estado Ei û Devolver R Expansión Expansión de de un un camino camino (II) (II) C A E B ð Camino = (A B D) D ð EXPANDIR ( Camino ) Sucesores: B, C, E, F R={} R = { (A B D C) } R = { (A B D C), (A B D E) } R = { (A B D C), (A B D E), (A B D F) } ð En LISP, las listas se crean a la inversa F Esquema Esquema básico básico de de un un algoritmo algoritmo de de búsqueda búsqueda BUSCAR ( INICIO OBJETIVO HEURISTICO COSTE ) 1. Formar la lista CP de caminos pendientes (lista de posibles caminos solución). Inicialmente CP contiene el estado INICIO 2. Mientras CP ≠ { } y estado actual del primer camino ≠ OBJETIVO Ÿ Expandir primer camino obteniendo una nueva lista E Ÿ Quitar de CP el primer camino Ÿ Formar una nueva lista CP combinando CP y E y la información de HEURISTICO y COSTE 3. Si CP = { }, devolver FALLO en caso contrario, devolver como solución el primer camino Método Método de de escalada escalada ESCALADA ( INICIO OBJETIVO HEURISTICO ) 1. Formar la lista CP de caminos pendientes (lista de posibles caminos solución). Inicialmente CP contiene el estado INICIO 2. Mientras CP ≠ { } y estado actual del primer camino ≠ OBJETIVO Ÿ Expandir primer camino obteniendo una nueva lista E Ÿ Quitar de CP el primer camino Ÿ Ordenar E de menor a mayor según el valor devuelto por HEURISTICO Ÿ Añadir E por delante a la lista CP 3. Si CP = { }, devolver FALLO en caso contrario, devolver como solución el primer camino ð Se da prioridad a los nuevos caminos más prometedores Representación Representación en en árbol árbol ð Se coloca en la raíz el estado inicial ð Por cada estado seleccionado se indica en el árbol el número de iteración con un recuadro y se añaden sus descendientes (expansión) ð Se selecciona el siguiente nodo a expandir según el algoritmo de exploración que se esté utilizando ð Junto a cada nodo se anota el valor de la función heurística (para escalada y “primero el mejor”) o de la función de estimación (para A*). En el A* se señalan también las “podas” realizadas por la programación dinámica (PD) Problemas Problemas del del método método de de escalada escalada ð Sensible a mínimos locales: un mínimo local se produce cuando estando en un estado la función heurística se hace mínima localmente. Esto lleva a caminos que no conducen a la solución o a caminos más largos ð Mesetas: se produce cuando la función heurística toma valores similares en todos los caminos pendientes. El progreso hacia la solución es lento ð Importancia del heurístico: un buen heurístico debe dar valores bajos cuando el estado actual esté cerca de la solución. Un heurístico ideal nos guiaría hacia la solución con un coste computacional mínimo y con el menor número de nodos Primero Primero el el mejor mejor PRIMERO_EL_MEJOR ( INICIO OBJETIVO HEURISTICO ) 1. Formar la lista CP de caminos pendientes (lista de posibles caminos solución). Inicialmente CP contiene el estado INICIO 2. Mientras CP ≠ { } y estado actual del primer camino ≠ OBJETIVO Ÿ Expandir primer camino obteniendo una nueva lista E Ÿ Quitar de CP el primer camino Ÿ Añadir E por detrás a la lista CP Ÿ Ordenar la nueva lista CP de menor a mayor según el valor devuelto por HEURISTICO 3. Si CP = { }, devolver FALLO en caso contrario, devolver como solución el primer camino ð La ordenación se realiza en todos los caminos pendientes ð Da mejores resultados que el método de “escalada” con mayor carga computacional Algoritmo Algoritmo A* A* ð A* encuentra la solución óptima siempre que la función heurística cumpla la condición de minorancia: h(e) ≤ h*(e) ∀e h(e) valor del heurístico en el estado e h*(e) coste real del menor camino desde e hasta el estado solución La distancia euclídea cumple la condición de minorancia ð Utiliza dos nuevos elementos: û Programación dinámica: si hay dos caminos que llegan al mismo nodo, se eliminan los de mayor coste û Función de estimación: f(c) = g(c) + h(c) g(c) coste acumulado desde el inicio hasta el estado actual h(c) valor del heurístico desde el estado actual hasta el objetivo f(c) estimación del coste total que tendrá el camino solución Algoritmo Algoritmo A* A* (II) (II) A* ( INICIO OBJETIVO HEURISTICO COSTE ) 1. Formar la lista CP de caminos pendientes (lista de posibles caminos solución). Inicialmente CP contiene el estado INICIO 2. Mientras CP ≠ { } y estado actual del primer camino ≠ OBJETIVO Ÿ Expandir primer camino obteniendo una nueva lista E Ÿ Quitar de CP el primer camino Ÿ Añadir E por detrás a la lista CP Ÿ Ordenar la nueva lista CP de menor a mayor según la función de estimación (HEURISTICO + COSTE acumulado) Ÿ Aplicar programación dinámica: si hay dos caminos que llegan al mismo nodo, se elimina el de mayor coste 3. Si CP = { }, devolver FALLO en caso contrario, devolver como solución el primer camino Exploración Exploración de de Árboles Árboles de de Juegos Juegos Fco. Javier Alcalá Casado Exploración Exploración de de árboles árboles de de juego juego ð Introducción ð Juegos de suma cero ð Implementación de juegos ð Los jugadores y la heurística ð Algoritmo Minimax ð Algoritmo Alfa-beta Introducción Introducción ð Shannon (1950) publicó “Programando un ordenador para jugar al ajedrez” ð El ajedrez plantea problemas similares a los de la deducción lógica: hay que elegir entre varias situaciones posibles y el objetivo no está totalmente definido ð El modelo discreto que define Shannon se conoce como árbol de juego y el modelo matemático como teoría de juegos de suma cero de dos jugadores con información completa û Juego de suma cero: aquél en el que los intereses de los jugadores son contrarios. Si uno gana el otro pierde û Juego de información completa: aquél en el que cada jugador conoce las posibles jugadas que puede realizar el adversario Juegos Juegos de de suma suma cero cero ð Características: û Suelen ser juegos de dos contrarios con turno alternativo û Terminan en dos o tres resultados posibles: ganar, perder o tablas (no se da en todos) û Cada movimiento implica una elección sobre todas las jugadas posibles. La elección sigue criterios determinados por el juego y no depende del azar (como en los dados, cartas...) û En todo momento los jugadores conocen las jugadas ya realizadas y las que se pueden realizar û Cada jugador tiene un nº determinado de movimientos en un momento dado. El árbol resultante es finito Implementación Implementación de de juegos juegos ð Son necesarios 4 elementos: û abstracción de datos: para almacenar y representar el tablero (estado del juego) û generador de movimientos: genera todas las posibles jugadas inmediatas a partir de una situación del juego û función heurística: devuelve un valor, llamado valor estático, que evalúa cómo de favorable es cada jugada para orientar al algoritmo de búsqueda û estrategia de búsqueda: permite decidir qué estrategia es la más apropiada en cada momento Los Los jugadores jugadores yy la la heurística heurística ð Se consideran dos jugadores, MAX y MIN, que intentan maximizar y minimizar la función heurística ð MAX (ordenador) elige la posición que tenga más valor en la evaluación de la función heurística ð MIN (adversario) elige la posición con menos valor ð La función heurística debe asignar valores tanto mayores cuanto mejor sea el estado del juego. Los valores deberán ser positivos para MAX y negativos para MIN ð Si MAX gana, la función devolverá +∞; si gana MIN, -∞ Algoritmo Algoritmo Minimax Minimax ð El objetivo es encontrar una buena jugada rápidamente ð La generación y la exploración del árbol están separadas ð Algoritmo: û Generar el árbol con profundidad n etiquetando cada nivel con MAX y MIN, alternativamente. El primer nivel es MAX û Calcular los valores estáticos para los nodos hoja û Explorar desde el nivel n hasta la raíz: Ÿ Si el nivel es MIN, elegir el menor valor de sus nodos hijos. Si el nivel es MAX, elegir el mayor valor de sus nodos hijos Ÿ Etiquetar el nodo con ese valor û Elegir como mejor jugada la correspondiente al valor elegido por el nodo raíz Algoritmo Algoritmo Alfa-beta Alfa-beta ð Alfa-beta mejora el minimax utilizando dos valores: û alfa (α): asociado a MAX; no puede decrecer; inicio, α = -∞ û beta (β): asociado a MIN; no puede crecer; inicio, β = +∞ ð ALFA-BETA (nodo, profundidad, F, α, β, jugador) Iniciar α, β localmente Si profundidad = 0 ó es final de juego, devolver F Si jugador = MIN Repetir hasta terminar todos los hijos ó α ≥ β V = ALFA-BETA ( HIJOi, profundidad-1, F, α, β , MAX) Si V < β entonces β = V Si α ≥ β, devolver -∞ (corte β); si no, devolver β Si jugador = MAX Repetir hasta terminar todos los hijos ó α ≥ β V = ALFA-BETA ( HIJOi, profundidad-1, F, α, β , MIN) Si V > α entonces α = V Si α ≥ β, devolver +∞ (corte α); si no, devolver α Planificación Planificación de de Tareas Tareas Fco. Javier Alcalá Casado Planificación Planificación de de Tareas Tareas ð Visión general ð Método STRIPS ð Operador STRIPS ð Algoritmo STRIPS Visión Visión General General ð La planificación pertenece al campo de resolución de problemas ð La planificación se basa en la división de un problema en subproblemas más pequeños que se resuelven por separado. La combinación de todas las subsoluciones forma la solución del problema original Barra de pan entera Tenedor en la mano Dejar tenedor Mano libre Coger cuchillo Cuchillo en la mano Cortar pan Pan cortado Visión Visión General General (II) (II) ð La planificación debe encontrar un conjunto de acciones, operaciones o tareas que transformen un estado inicial en un estado objetivo ð La solución del problema estará formada por una sucesión de operaciones denominado plan PLAN = { Dejar Tenedor, Coger Cuchillo, Cortar Pan } Visión Visión General General (II) (II) ð El primer planificador, desarrollado por Newell y Simon (1957), fue el sistema GPS (General Problem Solver). Su objetivo era resolver cualquier tipo de problema ð La principal aportación de GPS a los planificadores de tareas se centra en la organización de los datos: û Selector: atributo que define una característica relevante del entorno del problema (subobjetivos) û Estado: conjunto de selectores que definen una situación del mundo en un instante concreto û Operador: acción que transforma un estado en otro Método Método STRIPS STRIPS ð STRIPS (STanford Research Institute Problem Solver) utiliza la lógica para mejorar la resolución del problema ð Utiliza gran parte de los elementos del sistema GPS ð Realiza una exploración en profundidad sobre el espacio de estados del problema (despliega un árbol) ð Opcionalmente, proporciona un mecanismo de aprendizaje utilizando la información de tareas resueltas previamente (tablas triangulares) Operador Operador STRIPS STRIPS ð Un operador STRIPS consta de los siguientes elementos: û Nombre del operador û Parámetros del operador. Son opcionales û Precondiciones (P): lista de selectores que se tienen que cumplir para poder aplicar el operador û Lista de Adición (A): lista de selectores que se añaden al estado actual al aplicar el operador û Lista de Supresión (S): lista de selectores que se suprimen del estado actual al aplicar el operador Algoritmo Algoritmo STRIPS STRIPS ð STRIPS consiste en seleccionar un operador que permita alcanzar el objetivo al aplicarlo. Las precondiciones pasan a ser subobjetivos que deben alcanzarse ð Se seguirá descomponiendo hasta que todas las precondiciones se cumplan y se pueda aplicar el operador ð Un nodo de exploración contiene dos variables: û ESTADO, que almacena el estado en ese nodo û PILA, que almacena selectores, operadores y conjunciones de selectores ð Un nodo de FALLO es aquél en el cual, para alcanzar un determinado objetivo A, es necesario que A se cumpla Algoritmo Algoritmo STRIPS STRIPS (II) (II) ESTADO = ESTADO_INICIAL; PILA = OBJETIVO REPETIR HASTA que PILA = ø ó todos los nodos sean de FALLO SI la cima de la PILA es un operador ENTONCES aplicarlo y obtener el nuevo ESTADO (suprimiendo y añadiendo selectores), suprimirlo de la cima (PLAN++) SI la cima de la PILA es una conjunción de selectores ENTONCES SI se verifica la conjunción ENTONCES suprimirla de la cima EN CASO CONTRARIO añadir la precondición que falla SI la cima de la PILA es un selector ∈ ESTADO ENTONCES suprimirlo de la cima EN CASO CONTRARIO SI el selector aparece más abajo en la PILA ENTONCES es un nodo de FALLO, la rama se aborta y recorre otra rama en profundidad Determinar operadores que contenga en su lista de adición el selector de la cima de la pila POR CADA operador Añadir la instancia del operador Añadir la conjunción de sus precondiciones Añadir cada una de sus precondiciones SI PILA ≠ ø ENTONCES devolver FALLO, no hay solución EN CASO CONTRARIO hemos ejecutado el PLAN Aprendizaje Aprendizaje Simbólico Simbólico aa partir partir de de Ejemplos Ejemplos Fco. Javier Alcalá Casado Aprendizaje Aprendizaje Simbólico Simbólico aa partir partir de de Ejemplos Ejemplos ð Introducción ð Parámetros del algoritmo ID3 ð Algoritmo ID3 ð Generación de las reglas derivadas del árbol ID3 Introducción Introducción ð El aprendizaje automático se puede clasificar en: û Métodos simbólicos: basados en símbolos Ÿ Sintéticos o inductivos: ID3 Ÿ Analíticos o deductivos û Métodos subsimbólicos: basados en cantidades numéricas ð El objetivo del algoritmo ID3 consiste en clasificar varios elementos, utilizando ejemplos y valores de condición, representándolos en forma de árbol de decisión û Cada ejemplo es un individuo û Los valores de condición son propiedades û Los elementos se clasifican según el valor de una propiedad concreta binaria llamada resultado (con 2 valores posibles) Introducción Introducción (II) (II) ð El árbol de decisión resultante determina el conjunto al que pertenece un individuo según los valores que toman alguna de sus propiedades (no todas) û Cada nodo interno representa una propiedad û Cada rama es un valor posible de esa propiedad û Cada hoja es un valor de la propiedad resultado ð Un individuo nuevo se clasifica atravesando las ramas del árbol hasta llegar a una propiedad resultado ⇒ REGLAS ð Para clasificar los individuos se utiliza la idea de entropía. La entropía mide la cantidad de información necesaria para representar los datos de un conjunto (nº bits). A menor valor de entropía, mayor orden en los datos Parámetros Parámetros del del algoritmo algoritmo ID3 ID3 ð Del conjunto inicial de ejemplos se definen: û û û û û û û nt: c: nc: P: d: b: nb: número total de ejemplos valores posibles para el resultado nº individuos que tienen el valor c como resultado nombre de las propiedades propiedad decisora de la propiedad resultado valores posibles para una propiedad d nº individuos con valor b para una propiedad û nbc: nº individuos con valor b para una propiedad y un valor c para un resultado û Pc: probabilidad de que un individuo tenga como resultado valor c (Pc = nc / nt) probabilidad de que suceda b (Pb = nb / nt) û Pb: û Pbc: probabilidad de que suceda c suponiendo que sucede b (Pbc= n bc / n b ) Parámetros Parámetros del del algoritmo algoritmo ID3 ID3 (II) (II) ð Estos parámetros se utilizan para calcular la entropía: û Entropía de un conjunto nc nc Entropía = ∑ − Pc log 2 Pc = ∑ − log 2 nt nt c c û Entropía del valor de una propiedad ndecisora n Entropía(b) = ∑ − Pbc log 2 Pbc = ∑ − c c bc nb log 2 bc nb û Entropía media de una propiedad decisora nb nbc nbc EntropíaMedia (d ) = ∑ Pb ∗ Entropía(b) = ∑ ∗∑ − log 2 nb nb b∈d b∈d nt c log 2 x = (Recordatorio: ln x ln 2 ; si x=0, x log 2 x = 0 ) ð Un conjunto es homogéneo si todos los ejemplos dan como resultado el mismo valor c Un conjunto es equilibrado si los valores de su propiedad resultado son equiprobables (máxima entropía) Algoritmo Algoritmo ID3 ID3 ID3 ( Conjunto, P ) SI Entropía = 0 Devolver un nodo hoja etiquetado con la clase SI NO Calcular EntropiaMedia(P) Seleccionar la PROPIEDAD con menor EntropiaMedia Hacer PROPIEDAD raíz del árbol actual Borrar PROPIEDAD de P Para cada valor b de PROPIEDAD Crear una rama del árbol etiquetada con b Crear CONJUNTOb con todos los elementos con valor b para PROPIEDAD ID3 ( CONJUNTOb, P ) Generación Generación de de las las reglas reglas derivadas derivadas del del árbol árbol ID3 ID3 ð A partir del árbol ID3 generado se puede obtener un conjunto de reglas para clasificar nuevos individuos ð Cada nodo hoja genera una regla diferente ð Para ello: û Se recorre el árbol desde la raíz hasta las hojas û El antecedente de cada regla se crea tomando la etiqueta de la raíz más la etiqueta de la rama que recorre û Se añade un AND por cada pareja raíz-rama que se recorre û El consecuente de la regla es el nodo hoja Aprendizaje Aprendizaje con con Algoritmos Algoritmos Genéticos Genéticos Fco. Javier Alcalá Casado Aprendizaje Aprendizaje con con Algoritmos Algoritmos Genéticos Genéticos ð Introducción ð Componentes de un Algoritmo Genético û Representación de individuos û Procedimientos generales de elección aleatoria û Operador selección û Operador emparejamiento û Operador mutación ð Algoritmo general Introducción Introducción ð Los algoritmos genéticos son adecuados cuando se dispone de mecanismos para establecer el rendimiento de un sistema, modificando ciertos parámetros ð El problema de aprendizaje consiste en encontrar una configuración adecuada de los parámetros, para que el rendimiento sea óptimo ð Ejemplo: ajuste del flujo de agua de un generador hidroeléctrico para que la producción eléctrica sea máxima ð Los algoritmos genéticos se apoyan en las teorías evolutivas de Charles Darwin (1859, El Origen de las Especies) Introducción Introducción (II) (II) ð En cada generación se crea un nuevo conjunto de individuos utilizando parte del material genético de los mejores individuos de la generación anterior ð Objetivos de los algoritmos genéticos: û abstraer y explicar los procesos adaptativos de los sistemas naturales û diseñar sistemas artificiales basados en estos procesos ð La principal característica es la robustez del sistema ð Surge una nueva rama, la Programación Genética: generación automática de programas que evolucionan para resolver cada vez mejor la tarea encomendada Principios Principios de de Evolución Evolución por por Selección Selección Natural Natural 1. Cada individuo tiende a transmitir sus rasgos a su progenie 2. La naturaleza produce individuos con rasgos diferentes 3. Los individuos más adaptados, cuyos rasgos son más favorables para desenvolverse en el medio, tienden a producir más progenie 4. Durante largos períodos de tiempo se puede acumular la variación produciendo nuevas especies completamente adaptadas a nichos particulares Componentes Componentes de de un un Algoritmo Algoritmo Genético Genético ð Los componentes básicos de un algoritmo genético son los siguientes: û Una representación para los individuos û Una función de calidad, que da una medida del grado de adaptación de un individuo al medio û Un operador selección, con probabilidad de selección de cada individuo proporcional a la calidad (principio 3) û Un operador emparejamiento o reproducción, que producirá nuevos individuos en la siguiente generación (principio 1) û Un operador mutación, capaz de alterar el código de los nuevos individuos, incrementando la riqueza genética de la población (principio 2) Representación Representación de de Individuos Individuos ð Se utiliza la idea de cromosoma, que es una secuencia que determina la estructura de un individuo ð La secuencia es de longitud L y se compone de caracteres que pertenecen a un alfabeto Ω. Cada carácter es un gen ð Dado un cromosoma C, se puede construir el individuo I al que representa aplicando una función ð Normalmente se utiliza el alfabeto binario, Ω = {0,1} Procedimientos Procedimientos Generales Generales de de Elección Elección Aleatoria Aleatoria ð Se utiliza una función random(), devuelve un real ∈ [0,1) ð Hay tres situaciones en las que es necesario realizar elecciones aleatorias: A) Ejecutar una acción con probabilidad p: IF (random() < p) THEN <acción> B) Elegir entre N elementos equiprobables: Ÿ Generar random() y ver dónde cae Ÿ Elegir el elemento correspondiente al tramo en el que caiga el valor aleatorio E1 0 E2 E3 1/N 2/N 3/N ... 1 Procedimientos Procedimientos Generales Generales de de Elección Elección Aleatoria Aleatoria (II) (II) C) Elegir entre N elementos no equiprobables: Ÿ Calcular las probabilidades acumuladas Ÿ Generar random() y ver dónde cae k ak = ∑ pi i =1 E1 0 E2 a1 E3 a2 a3 ... 1 Operador Operador Selección Selección ð Cada vez que se necesita, se extraen ciertos individuos de la población. Para ello, se calcula la probabilidad de selección de cada individuo proporcional a la calidad ð Existen dos métodos: estándar y del rango ð Método estándar: û Establecer la calidad de cada individuo de la población û Calcular la probabilidad de selección de cada individuo dividiendo cada calidad por la calidad total û Elegir un individuo entre N elementos no equiprobables (procedimiento C) Operador Operador Selección Selección (II) (II) ð Método del rango: û Fijar una probabilidad a priori de elección, p û Establecer la calidad de cada individuo de la población û Ordenar los individuos según su calidad (de mayor a menor) û Para cada individuo i desde 1 hasta N-1 Ÿ Elegir, con probabilidad p, el individuo i (procedimiento A) Si se ha elegido uno, salir y devolver dicho individuo û Si no se ha elegido ninguno, devolver el individuo N Operador Operador Emparejamiento Emparejamiento ð Este operador intercambia información genética entre dos individuos seleccionados ð Dados 2 individuos a emparejar: û Ejecutar el emparejamiento con probabilidad Pe (procedimiento A). Si no hay que emparejar, salir. û Elegir un punto de corte de las cadenas entre 1 y L-1 (procedimiento B) û Las cadenas que representan a los individuos se parten en dos trozos y se intercambian, dando lugar a dos individuos nuevos Operador Operador Mutación Mutación ð Altera aleatoriamente el código genético de un individuo para variar ligeramente sus características ð Permite que aparezcan rasgos en los nuevos individuos que no existían antes en la población original ð La probabilidad de aplicación de este operador debe ser pequeña ð Dado 1 individuo a mutar: û Para cada gen del cromosoma, hacer: Ÿ Con probabilidad Pm (procedimiento A), cambiar el valor del gen por un nuevo valor. El nuevo valor se elige (procedimiento B) sobre los elementos del alfabeto Ω Algoritmo Algoritmo General General EVOLUCIONAR (NI Pe Pm N) û Generar una POBLACION aleatoria de NI individuos û Repetir hasta haber realizado N iteraciones Ÿ Hacer NUEVA_POBLACION = { } Ÿ Repetir hasta que NUEVA_POBLACION tenga NI individuos Aplicar operador SELECCIÓN para extraer 2 individuos de POBLACION Aplicar operador EMPAREJAMIENTO con probabilidad Pe a los individuos seleccionados. Esto genera 2 nuevos individuos Aplicar operador MUTACION con probabilidad Pm a cada individuo generado en el paso anterior Añadir el resultado a NUEVA_POBLACION Ÿ Copiar NUEVA_POBLACION en POBLACION û Devolver el individuo con mayor calidad de POBLACION