Introducción a la Computación Evolutiva Cuarta Clase: Programación Genética Programación Genética • Desarrollados en USA durante los ´90 • Autores principales: J. Koza • Aplicados típicamente a: – Tareas de machine learning (predicción, clasificación, etc.) • Características atribuidas: – Compite con redes neuronales y técnicas similares – Necesita poblaciones de gran tamaño (miles de individuos) – Lento • Características especiales: – Cromosomas no lineales: árboles – En general, no se utilizan mutaciones 1 PG: Resumen de Características Representación Árboles Cruce Intercambio de sub-árboles Mutación Cambio aleatorio en los árboles Selección de Padres Proporcional al Fitness Selección de Sobrevivientes Todos los hijos reemplazan a los padres Ejemplo inicial: puntuación crediticia • Los bancos necesitan distinguir entre solicitantes de créditos aptos y no aptos • En base a la información histórica sobre los clientes, es posible crear un modelo de clasificación ID Salario ID-1 Nro. de hijos 2 ID-2 0 30000 Soltero 1 ID-3 1 40000 Divorciado 1 45000 Estado civil Categoría (OK? Casado 0 … 2 Ejemplo inicial: puntuación crediticia • Un modelo posible podría ser el siguiente: IF (NH = 2) AND (S > 80000) THEN good ELSE bad • En general, el modelo tendrá la siguiente forma: IF formula THEN good ELSE bad • La fórmula es lo único desconocido en esta regla • El objetivo es hallar la fórmula que clasifique correctamente al mayor número de clientes conocidos • El espacio de búsqueda es el conjunto de todas las fórmulas posibles (fenotipos) • El fitness de una fórmula es el porcentaje de clientes correctamente clasificados por el modelo que ella establece • Las fórmulas son representadas (genotipos) mediante árboles sintácticos (parse trees) Ejemplo inicial: puntuación crediticia La fórmula IF (NH = 2) AND (S > 80000) THEN good ELSE bad Puede ser representada mediante el siguiente árbol AND = NH > 2 S 80000 3 Ejemplo inicial: puntuación crediticia • Esta representación difiere de las utilizadas en AGs en dos aspectos importantes: – Los cromosomas son estructuras no lineales, mientras en AGs ellos son generalmente vectores lineales – Los cromosomas pueden diferir en tamaño, medido por el número de nodos del árbol, mientras en AGs la longitud del cromosoma es generalmente fija • Este nuevo tipo de representación requiere de nuevos operadores de variación que sean válidos para árboles • Como los esquemas de selección son independientes de la representación, cualquier esquema de selección utilizado en otros AEs puede ser aplicado en PG Representación basada en árbol • Los árboles representan expresiones en una sintaxis formal dada • Dependiendo del problema … – Expresiones aritméticas – Fórmulas en lógica de predicados de primer orden – Código escrito en un lenguaje de programación y 2 ⋅ π + ( x + 3) − 5 + 1 (x ∧ true) → (( x ∨ y ) ∨ (z ↔ (x ∧ y))) i =1; while (i < 20) { i = i +1 } 4 Representación basada en árbol y 2 ⋅ π + ( x + 3 ) − 5 +1 Representación basada en árbol (x ∧ true) → (( x ∨ y ) ∨ (z ↔ (x ∧ y))) 5 Representación basada en árbol i =1; while (i < 20) { i = i +1 } Representación basada en árbol • En AGs, EEs, y PE los cromosomas son estructuras lineales (strings de bits, strings de números enteros o reales, permutaciones) • Los cromosomas en forma de árboles son estructuras no lineales • En AGs, EEs, y PE el tamaño de los cromosomas es fijo • Los árboles en PG pueden variar en cuanto a su profundidad y amplitud 6 Representación basada en árbol • Las expresiones simbólicas son definidas mediante … – – • Un conjunto de símbolos terminales T Un conjunto de funciones F (incluyendo la aridad de cada símbolo de función) Adoptando la siguiente definición recursiva 1. 2. 3. • Cada t ∈ T es una expresión correcta f(e1, …, en) es una expresión correcta si f ∈ F, aridad(f) = n y e1, …, en son expresiones correctas No existen otras formas de expresiones correctas En la definición anterior, no se distingue entre diferentes tipos de expresiones. Cada función puede tomar cualquier expresión como argumento (terminal o función) – Esta característica es conocida como la propiedad de clausura Esquema de creación de hijos • Diferencia entre AGs y PG – En el esquema de un AG, en cada ciclo se utiliza cruce y mutación de manera secuencial (son aplicados en base a una probabilidad dada) – En el esquema de un PG, en cada ciclo se utiliza cruce o mutación (son elegidos en base a una probabilidad dada) 7 AG Esquema de creación de hijos PG Mutación • Mutación más común: reemplazar un sub-árbol elegido aleatoriamente por un árbol generado aleatoriamente 8 Mutación • Mutación tiene dos parámetros – Probabilidad pm de elegir a la mutación vs. el cruce – Probabilidad de elegir a un nodo interno del padre como la raíz del sub-árbol a ser reemplazado • Se suele recomendar fuertemente que pm sea 0 (Koza ’92) o que adquiera un valor muy bajo como, por ejemplo, 0.05 (Banzhaf et al. ’98) • El tamaño del hijo puede exceder el tamaño del padre Cruce • Cruce más común: intercambiar entre los padres dos sub-árboles elegidos aleatoriamente • El cruce tiene dos parámetros – Probabilidad pc de elegir al cruce vs. a la mutación – Probabilidad de elegir un nodo interno dentro de cada padre como punto de cruce • El tamaño de los hijos puede exceder al tamaño de los padres 9 Cruce Padre 1 Padre 2 Hijo 1 Hijo 2 Selección de Padres • Selección de padres: típicamente, en PG se utiliza selección proporcional al fitness • Para poblaciones de gran tamaño (1000 o más): se utiliza un método llamado “over-selection” – La población es ordenada por fitness y luego dividida en dos grupos • Grupo 1: contiene a los mejores de la población (x %) • Grupo 2: contiene al resto de la población (100-x)% – Cuando los padres son seleccionados … • El 80% de las operaciones de selección se realizan sobre el Grupo 1 • El otro 20% se realiza sobre el Grupo 2 – Los valores de x son definidos empíricamente y dependen del tamaño de la población • Para un tamaño = 1000, 2000, 4000, 8000 x = 32%, 16%, 8%, 4% • La presión selectiva se incrementa dramáticamente para las poblaciones más grandes – Motivación del método: incrementar la eficiencia 10 Selección de Sobrevivientes • Típicamente: se utiliza el esquema generacional (la población actual es reemplazada por los hijos generados a partir de ella) • Recientemente: el esquema steady-state se ha vuelto popular debido a su elitismo implícito Inicialización • Método más común: “ramped half and half” – Se elige un nivel de profundidad máximo para los árboles (Dmax) – Luego, cada miembro de la población es creado a partir de los conjuntos F y T usando alguno de los dos métodos siguientes (se decide qué método usar en base a una probabilidad 0.5) – Método Full (cada rama del árbol tiene una profundidad Dmax): el contenido de … • Los nodos que se encuentran a un nivel d < Dmax es elegido aleatoriamente de F • Los nodos que se encuentran a un nivel d = Dmax es elegido aleatoriamente de T – Método Grow (cada rama del árbol puede tener una profundidad diferente, deben ser ≤ Dmax): el contenido de … • Los nodos que se encuentran a un nivel d < Dmax es elegido aleatoriamente de F ∪ T • Los nodos que se encuentran a un nivel d = Dmax es elegido aleatoriamente de T 11 Efecto Bloat • Un efecto de variar los tamaños de los cromosomas en PG es que dichos tamaños tienden a crecer a lo largo del tiempo (evolución) – El tamaño promedio de los árboles existentes en la población crece durante el proceso de búsqueda • Este fenómeno es conocido como bloat • Es necesario tomar medidas para reducir el rango de crecimiento de los árboles – Prohibir a los operadores de variación que generen hijos cuyo tamaño sea superior a un tamaño máximo prefijado – Introducir un término de penalidad en la fórmula de fitness que reduzca el fitness de los cromosomas más grandes – Utilizar técnicas multiobjetivo Problemas que involucran ambientes físicos o simulados • Árboles (programas) que son realmente ejecutables • La ejecución de una expresión puede cambiar el ambiente → el cálculo del fitness de la expresión depende de dichos cambios • Ejemplo: controlador de un robot • El cálculo del fitness de una expresión, desarrollado principalmente por simulación, es muy costoso en relación al tiempo requerido • Esta desventaja es compensada por la alta calidad de los resultados evolucionados (ej.: excelente desempeño de un equipo de robots que juegan al fútbol mediante un controlador evolucionado) 12 Ejemplo de Aplicación: Regresión Simbólica • Dados algunos puntos en R2, (x1, y1), … , (xn, yn) • Encontrar una función f(x) tal que ∀i = 1, …, n : f(xi) = yi • Solución PG posible: – Representación • F = {+, -, *, /, exp, sin, cos} • T = {x} ∪ R (sólo una variable y algunas constantes) – Fitness • Lo más natural es basar el fitness de un cromosoma f sobre alguna medida del error de ajuste (debe ser minimizado) • Una medida de error válida es : n err ( f ) = ∑ ( f ( xi ) − yi ) 2 i =1 Ejemplo de Aplicación: Regresión Simbólica • Operadores de variación: los operadores de mutación y cruce vistos • Operadores de selección: los operadores vistos para AGs • Inicialización: ramped half and half – Tamaño de la población: 1000 individuos • Condición de terminación: – Alcanzar una función f con n “aciertos” • Un acierto ocurre si | f(xi) – yi | < 0.0001 – Alcanzar un número máximo de evaluaciones de fitness (ej.: 50000) 13 Discusión • La PG es: Una variante de AGs con una representación diferente (árboles)? Programación de computadoras mediante selección natural? Evolución automática de programas de computadora? 14