Introducción a la Computación Evolutiva Quinta Clase: Programación Evolutiva Programación Evolutiva • Desarrollada en USA durante los años ’60 • Autores principales: D. Fogel • Aplicada típicamente a: – PE tradicional: tareas de machine learning mediante máquinas de estado finito – PE contemporánea: optimización (numérica) • Características atribuidas: – Framework muy abierto: se acepta cualquier representación y cualquier operador de mutación – Es difícil definir una variante algorítmica como versión estándar de PE • Características especiales: – No utiliza cruce genético – Auto-adaptación de parámetros estándar (PE contemporánea) 1 Características representativas de PE Representación Vector de valores reales Cruce Ninguno Mutación Perturbación Gaussiana Selección de Padres Deterministica Selección de Sobrevivientes Probabilística (µ+µ) Especialidad Auto-adaptación de los grados de mutación Perspectiva histórica de la PE • PE fue desarrollada originalmente para simular a la evolución como un proceso de aprendizaje – Con el objetivo de generar inteligencia artificial • Inteligencia: capacidad de un sistema de adaptar su comportamiento para lograr objetivos predefinidos en un ambiente dado (comportamiento adaptado) • La capacidad para predecir el ambiente fue considerada como un requisito para lograr adaptabilidad (comportamiento inteligente o adaptado) • Por lo tanto, la capacidad para predecir el ambiente es clave para lograr inteligencia 2 Predicción mediante Máquinas de Estado Finito • Inicialmente en PE, los predictores fueron evolucionados en la forma de máquinas de estado finito • Máquina de Estado Finito (MEF) – – – – – Estados (S) Entradas (I) Salidas (O) Función de transición δ : S x I → S x O Transforma una cadena de símbolos de entrada en una cadena de símbolos de salida • Pueden ser usadas para predicciones (ej.: predecir el siguiente símbolo de entrada en una cadena de entrada) Ejemplo de MEF • Considerar la MEF con: – – – – S = {A, B, C} I = {0, 1} O = {a, b, c} δ especificada por el diagrama 3 Ejemplo de una MEF como un predictor • • • • • • • Considerar la siguiente MEF Tarea: predecir la siguiente entrada Calidad: % de in(i+1) = outi Estado inicial: C Secuencia de entrada: 011101 Lleva a la salida: 110111 Calidad lograda: 3 aciertos de 5 Ejemplo de aplicación: Evolucionar MEFs para predecir números primos • La tarea es predecir si la siguiente entrada en una secuencia de números naturales es un número primo o no lo es • Para esta tarea: – I = N = {1,2,3,…, n, …} – O = {0,1} – Predicción correcta: outi= P(in(i+1)) • P(n) = 1 si n es primo, 0 de otra manera – Fitness: precisión de la predicción sobre la secuencia de entrada de números naturales consecutivos 1, 2, 3, …, 202 • 1 punto por cada predicción correcta • Ningún punto por cada predicción incorrecta 4 Ejemplo de aplicación: Evolucionar MEFs para predecir números primos • Selección de Padres: cada MEF en la población actual es mutada una vez para generar un hijo • Operadores de mutación considerados (se selecciona uno aleatorimente): – – – – – Cambiar un símbolo de salida Cambiar la dirección de una transición (cambiar el siguiente estado) Agregar un estado Eliminar un estado Cambiar el estado inicial • Selección de Sobrevivientes: elegir a los mejores µ individuos de (µ padres + µ hijos) • Resultados: la mejor MEF obtenida logra valores de precisión superiores a 81% • Mediante este ejemplo se puede apreciar que un proceso evolutivo simulado es capaz de crear buenas soluciones para una tarea inteligente PE Actual • Por razones históricas, la PE ha sido asociada durante mucho tiempo a tareas de predicción y al uso de MEF como su representación • A partir de los ’90, las variantes de PE para optimización de vectores de parámetros reales se han vuelto más frecuentes – Estas variantes se han posicionado como variantes estándar de PE 5 PE Actual • Actualmente, se considera a la PE como un framework muy abierto en términos de … – Representación – Operadores de mutación • PE aplica auto-adaptación de los parámetros de mutación • A continuación, se presenta una variante algorítmica representativa de PE más que una variante estándar de PE Representación • La PE es frecuentemente utilizada para optimizar funciones de parámetros continuos • En este caso, los cromosomas consisten de dos partes: – Variables: x1,…, xn (xi ∈ R) – Grados de mutación: σ1,…,σn • Estructura general de los individuos en PE 〈 x1,…, xn, σ1,…,σn 〉 6 Mutación • Se presenta el operador más asociado con la representación anterior • Este operador transforma … 〈 x1,…,xn, σ1,…,σn 〉 → 〈 x’1,…,x’n, σ’1,…,σ’n 〉 • Mediante las siguientes operaciones σi’ = σi • (1 + α • N(0,1)) x’i = xi + σi’ • Ni(0,1) α ≈ 0.2 Mutación • Otras variantes propuestas y tratadas: – Se han propuesto otras formas de modificar los grados de mutación – Utilización de varianzas en lugar de desviaciones estándar como parámetros de mutación – Mutar al vector σ luego de mutar al vector x – Utilizar otras distribuciones en lugar de la Gaussiana 7 Cruce • En PE no se utiliza cruce genético • Actualmente, los argumentos de PE en contra del cruce son más conceptuales que técnicos – Se considera que un punto en espacio de búsqueda no es un individuo de una especie – Se considera que un punto en el espacio es la abstracción de una especie en si misma – En consecuencia, el cruce no tiene sentido ya que éste no puede ser aplicado sobre diferentes especies • Muchos debates históricos sobre “mutación vs. cruce” • Prevalece el enfoque pragmático Selección de Padres • En PE, a partir de cada miembro de la población se genera exactamente un hijo mediante mutación • Por lo tanto, la selección … – Es determinística – Independiente del fitness 8 Selección de Sobrevivientes • Operador de selección (µ + µ ) – Consiste en elegir a los mejores µ individuos de (µ padres + µ hijos) • Variante estocástica del operador anterior – P(t): µ parents, P’(t): µ offspring – Cada solución a ∈ P(t) ∪ P’(t) es comparada con otras q soluciones elegidas al azar – En cada comparación, si a supera a su oponente entonces obtiene un punto – Las µ soluciones con la mayor cantidad de puntos se transforman en la siguiente población • Parámetro q permite configurar la presión selectiva (cuanto más alto es q mayor presión selectiva) • En general, se recomienda q = 10 Ejemplo de Aplicación: Función de Ackley (Bäck et al ’93) • La función de Ackley (utilizada con n = 30): 1 n 2 f ( x) = −20 ⋅ exp − 0.2 ⋅ ∑ xi n i =1 1 n − exp ∑ cos(2πxi ) + 20 + e n i =1 • Representación: – 30 variables reales (-30 < xi < 30 ) – 30 varianzas como grados de mutación • • • • • Mutación: se muta a las variables primero y luego a las varianzas Tamaño de población: 200 Selección de sobrevivientes: q = 10 Terminación: al alcanzar las 200000 evaluaciones de fitness Resultados: mejor solución promedio tiene un fitness de 1.4 • 10 –2 9 Ejemplo de Aplicación: Jugadores de damas (Fogel ’02) • Fogel abordó el desarrollo de un programa para jugar a las damas • Para poder jugar a las damas, el programa analiza el valor a futuro de los posibles movimientos – Calcula cuán prometedor es un estado del tablero que se logra mediante un cierto movimiento • A un estado del tablero se le asigna un valor mediante una red neuronal – La salida de la red representa cuán prometedor es el estado desde la perspectiva del jugador que recién ha movido • El estado del tablero es presentado a la red como un vector de 32 elementos (32 posiciones en el tablero) • De esta manera, la red define una “estrategia” para jugar el juego, y esta estrategia es evolucionada con PE Ejemplo de Aplicación: Jugadores de damas (Fogel ’02) • Para las redes neuronales se utilizó una estructura fija que tiene un total de 5046 pesos – Dichos pesos son evolucionados mediante PE • Representación: – Vector de 5046 números reales para las variables (pesos) – Vector de 5046 números reales para los σ‘s • Mutación: – El vector σ fue mutado antes que el vector de variables – Las variables fueron mutadas utilizando la adición de ruido Gaussiano • Tamaño de la población: 15 10 Ejemplo de Aplicación: Jugadores de damas (Fogel ’02) • Selección de sobrevivientes – q=5 – Cada programa (cada red neuronal) juega vs. otros programas, y se le asigna +1, 0, -2 si gana, empata y pierde respectivamente – Las 30 soluciones (15 padres y 15 hijos) fueron ordenadas de acuerdo al puntaje que obtuvieron mediante los 5 juegos – Las mejores 15 soluciones se transformaron en la siguiente población Ejemplo de Aplicación: Jugadores de damas (Fogel ’02) • Luego de 840 generaciones (6 meses), la mejor estrategia lograda fue evaluada vs. oponentes humanos via internet • Resultados: – Luego de una serie de partidos, el programa fue calificado como un jugador “experto” por el sitio web – Superó al 99.61% de todos los jugadores calificados en el sitio web • Este trabajo es interesante en el contexto de inteligencia artificial – Las estrategias evolucionan compitiendo (jugando) entre ellas sin necesidad de intervención humana 11