34
Angel García Baños Escuela de Ingeniería de Sistemas y Computación Universidad del Valle 04 de febrero de 2008 COMPUTACIÓN EVOLUTIVA (CE) PROGRAMACIÓN GENÉTICA EVOLUCIÓN GRAMATICAL PROGRAMACIÓN POR EXPRESIÓN GENÉTICA

ce-03_PG_GE_GEP

Embed Size (px)

Citation preview

  • Angel Garca BaosEscuela de Ingeniera de Sistemas y ComputacinUniversidad del Valle

    04 de febrero de 2008

    COMPUTACIN EVOLUTIVA(CE)

    PROGRAMACIN GENTICAEVOLUCIN GRAMATICAL

    PROGRAMACIN POR EXPRESIN GENTICA

  • OTROS ALGORITMOS OTROS ALGORITMOS EVOLUTIVOSEVOLUTIVOS

  • PROGRAMACIN GENTICAPROGRAMACIN GENTICA

  • 4AGB

    GPGP

    GP (Genetic Programing), ideada por Koza en 1990.

    Se trata de disear programas usando tcnicas evolutivas (GAs). Aunque se puede hacer con cualquier lenguaje, con LISP hay algunas ventajas: Los programas y los datos tienen la misma forma

    (Expresiones-Simblicas). Entonces, es fcil manipular programas.

    Las expresiones simblicas son equivalentes al rbol de anlisis (parse-tree). Las operaciones del algoritmo gentico deben hacerse sobre este rbol.

    Es interpretado (no hace falta recompilar cada vez que hay un cambio en el programa).

  • 5AGB

    GPGP

    Para resolver un problema con GP hay que definir: Conjunto de funciones (que requieren argumentos). Conjunto de terminales (variables, constantes o funciones

    que no requieren argumentos). Ejemplo:

    Conjunto de funciones = { AND, OR, NOT } Conjunto de terminales = { D0, D1 } Una posible expresin simblica: (AND (OR D1 D0) (NOT (AND D0 D0)))

    AND

    NOTOR

    D0D1 AND

    D0D0RBOL DE ANLISIS (PARSING)

  • 6AGB

    GPGP

    Deben cumplirse las condiciones de suficiencia y cerradura (clausura).

    La propiedad de clausura requiere que cada una de las funciones del conjunto de funciones sea capaz de recibir como argumento cualquier dato (valor y tipo) que pueda retornar cualquier funcin, y cualquier dato (valor y tipo) del conjunto de terminales.

    Por ejemplo, el lgebra de Boole es cerrada: Conjunto de funciones = { AND, OR, NOT } Conjunto de terminales = { nil, T }

    Pero no ocurre as con la aritmtica.

  • 7AGB

    GPGP Para cerrar la aritmtica hay que redefinir ciertos

    operadores:(defun % (numerador denominador)

    La funcin de division protegida (if (= 0 denominador) 1 (/ numerador denominador)))

    (defun srt (argumento)La funcion raiz cuadrada protegida(sqrt(abs argumento)))

    (defun gt (primer segundo)La funcion mayor-que con resultado numerico(if (> primero segundo) 1 -1)))

  • 8AGB

    GPGP En Common LISP hay un problema adicional: ciertas

    operaciones (ejecucin condicional y ejecucin iterativa) no se pueden implementar con facilidad.

    Ello es debido a que LISP evala todos los argumentos antes de pasarlos a una funcin. Por ejemplo:

    (IF-HAY-COMIDA (AVANZA) (GIRA-DERECHA)) Se realizarn las dos cosas, independientemente de la

    condicin. Para evitarlo, el IF se implementa con una MACRO:(defmacro ifltz (condicion then else)

    (if (< (eval ,condicion) 0)(eval ,then)(eval ,else)))

  • 9AGB

    GPGP La poblacin inicial de individuos (expresiones simblicas)

    se puede generar as: Cada funcin tiene tantas ramas como argumentos. Los

    terminales no tienen ramas. Se elige al azar una funcin, que servir como raz. Se van aadiendo a sus ramas otras funciones o

    terminales elegidos al azar, hasta que no queden ramas libres.

    (+ (* A B) C) A B

    +

    * C+

    +

    *

  • 10AGB

    GPGP Hay varias formas de realizar la inicializacin:

    Full: Crear los programas con todos los caminos de longitud L. Para ello, en los nodos intermedios se seleccionan aleatoriamente solo funciones, y cuando se llega a la longitud L deseada, se seleccionan aleatoriamente solo terminales.

    Grow: Crear los programas con caminos de longitud variable, menor que L. Para ello, en los nodos intermedios se seleccionan aleatoriamente funciones y terminales, , y cuando se llega a la longitud L deseada, se seleccionan aleatoriamente solo terminales.

    Ramped half-and-half: se crean un nmero igual de programas con una profundidad especificada entre 2 y el mximo L. Por ejemplo, si se desea L=6, el 20% de la poblacin tendr profundidad 2, el 20% 3, el 20% 4, el 20% 5 y el 20% tendr profundidad 6.

  • 11AGB

    GPGP El mtodo Ramped half-and-half: crea la mayor diversidad

    de formas. Es conveniente eliminar individuos que salgan repetidos en

    la generacin 0 (en las dems no). La aptitud de un programa se calcula ejecutndolo y

    midiendo lo mal o bien que cumple con sus objetivos. Ello indica el punto dbil de GP: requiere mucho cmputo.

    Los operadores de reproduccin son: Cruce (intercambiar dos sub-rboles al azar de dos individuos). Mutacin (eliminar al azar un sub-rbol y generar all otro al azar). Permutacin (similar al cruce, pero dentro del mismo individuo). Edicin (eliminar bloques intiles) Ej: (+ 1 2) 3 y (AND X X) X Encapsulacin (definir funciones). Ej: (+ A (* B C))

    (defun E0 () (* B C)) y cambiar por (+ A (E0))

  • 12AGB

    GPGP

    RESUMEN CARACTERSTICAS: Requiere mucha potencia de cmputo (computacin paralela

    o distribuida). El usuario debe de saber cuales funciones primitivas son

    mas apropiadas para un determinado problema. Y lo mismo con las variables. Si hay funciones y/o variables superfluas, aumenta mucho el tiempo para encontrar la solucin. Y si faltan funciones y/o variables, no encontrar la solucin.

    Las constantes (PI, 1, 2, 3, etc.) se suelen generar al azar, e incluso as el GP puede encontrar la solucin.

    Si la funcin de aptitud cambia suavemente en el tiempo, el GP puede encontrar la solucin ptima para cada momento.

    El programa solucin suele tener muchos intrones (code bloat).

  • 13AGB

    GPGP Puede disear automticamente la estructura de un

    programa: ADF: funciones automticamente definidas. Por medio de

    operadores de: Encapsulacin (Creacin de una funcin). Borrado de una funcin. Adicin de un argumento. Borrado de un argumento.

    Generacin automtica de bucles (ADL) y recursiones (ADR). Variables internas automticamente definidas (arrays, colas,

    listas...). Constantes automticamente generadas.

  • 14AGB

    GPGP

    APLICACIONES: Integracin, derivacin e inversin simblicas. Prediccin de secuencias. Compresin de datos con prdidas (imgenes...). Descubrimiento de leyes a partir de datos empricos

    (leyes de Kepler...). Demostracin de identidades matemticas. Diseo en ingeniera (civil, etc...). Estrategias en robots (hormigas artificiales). Regresin simblica. Diseo de circuitos digitales (multiplexor...).

  • 15AGB

    GPGP Comportamiento emergente (hormigas artificiales,

    agentes, robots...). Diseo de controladores y automatismos (pndulo

    invertido, parquear un trailer...). Diseo de estrategias ptimas en juegos (Pac-Man). Diseo de arquitecturas internas (para path planning

    de robots...). Generacin de secuencias seudoaleatorias. Clasificacin de datos (Clustering, Data Mining...).

  • EVOLUCIN GRAMATICALEVOLUCIN GRAMATICAL

  • 17AGB

    GEGE

    GE (grammatical evolution): evolucin gramatical, ideada por Michael ONeill y Conor Ryan en 1997.

    Gramticas BNF (Backus-Naur Form): Contienen un conjunto de smbolos terminales (+, -,

    1,2,3...) y un conjunto de smbolos no terminales. Y hay reglas de produccin que permiten generar los smbolos no terminales en funcin de ellos mismos y de los terminales.

    Una gramtica puede expresarse por medio de una tupla {N,T,P,S} donde N es el conjunto de smbolos no terminales, T el conjunto de smbolos terminales, P el conjunto de reglas de produccin que mapean los elementos de N en T, y S es el smbolo inicial, que debe ser miembro de N.

  • 18AGB

    GEGE

    Ejemplo:N = {expresion, op, pre_op, var}T = {sin, cos, tan, log, +, -, /, *, X, () }S = P =(1) ::= [0] | ( ) [1] | ( ) [2] | [3](2) ::= + [0] | - [1] | * [2] | / [3](3) ::= sin [0] | cos [1] | tan [2] | log [3](4) ::= X [0]

  • 19AGB

    GEGE

    Es habitual no usar toda una especificacin BNF de un lenguaje, sino solo un subconjunto de inters.

    En GE, el fenotipo es un programa de computador escrito en cualquier lenguaje (especificado a su vez en BNF). El genotipo es un conjunto de strings binarios de longitud variable. Los codones son grupos de 8 bits (por ejemplo).

    La expresin se consigue tomando secuencialmente los codones y usndolos para tomar decisiones sobre una secuencia de reglas BNF.

    Ejemplo de regla BNF: := if () { ; } else { ; } [0] | ; [1] | variable = ; [2]

  • 20AGB

    GEGE

    Si tomamos un codn (nmero entre 0 y 255) y sacamos su mdulo 3 (porque hay 3 reglas de produccin), el resultado puede salir 0, 1 o 2 y, segn salga, se elegir una de las tres reglas de produccin.

    Y as sucesivamente hasta lograr un programa completo (con todas las reglas resueltas en nodos terminales) o hasta que se acaben los codones.

    Si se acaban los codones: Se pueden volver a comenzar a extraer desde el principio,

    reusndolos. Aunque algunos investigadores hacen esto, no es una buena idea.

    Se dice que el programa resultante no es ejecutable, y se le asigna el menor valor de adaptacin posible.

  • 21AGB

    GEGE

    Degeneracin del cdigo gentico: Como los codones software son de 8 bits, pero hay menos

    reglas de produccin, se emplea el operador mdulo. Entonces, diversos codones pueden dar lugar a la misma

    regla de produccin (ej: 3, 6, 9, etc.. ya que 3 MOD 3 = 6 MOD 3 = 9 MOD 3 etc).

    A esto se le llama degeneracin del cdigo gentico y es un fenmeno que ocurre tambin en biologa, donde hay 43= 64 posibles codones (61 que dan lugar a aminocidos y 3 de STOP). Pero solo se producen 20 aminocidos. O sea que, en promedio, hay 3 codones que producen el mismo aminocido.

    La degeneracin no tiene ninguna importancia en GE.

  • 22AGB

    GEGE

    Se ha descubierto que de los tres nucletidos, los dos primeros codifican el aminocido, mientras que el tercero no suele tener importancia.

    Ello tiene sus consecuencias: si se produce una mutacin sobre el tercer nucletido, no suele producir cambios en el fenotipo del individuo.

    La teora de la "evolucin neutral" de Kimura dice que son esas mutaciones silenciosas las responsables de la gran diversidad gentica que hay.

  • 23AGB

    GEGE

    En GE se han introducido nuevos operadores: Duplicacin: seleccionar al azar unos cuantos genes

    consecutivos y copiarlos al final del cromosoma. Ello sirve para:

    Permitir mutaciones mortales (el gen que muta puede ser imprescindible, pero como existe una copia, no hay problema).

    Evolucionar nuevas funciones. Producir mas cantidad de lo mismo.

    Poda: si un cromosoma no necesit usar todos sus genes para generar un programa, se aplica este operador con una cierta probabilidad. La poda consiste en quitar los genes no usados. De esta manera se eliminan los intrones (genes que no se expresan).

  • 24AGB

    GEGE

    Los intrones sirven para dos cosas: Permiten acumular mutaciones sin daar el organismo (lo cual es

    bueno). Mas del 90% del ADN humano son intrones. Vuelven mucho ms lento el proceso evolutivo (lo cual es malo).

    Por ello, el operador de poda se aplica con baja probabilidad (0.01%).

    En GE hay problemas de dependencias similares a los de GP (programacin gentica): cuanto mas lejos de la raz est un gen, mas probable es que su expresin se vea alterada por los genes que estn antes.

  • PROGRAMACIN POR PROGRAMACIN POR EXPRESIN GENTICAEXPRESIN GENTICA

  • 26AGB

    GEPGEP

    GEP (gene expression programing): Programacin por expresin gentica, ideado por Ferreira (Univ. Azores) en 2000. Muy similar a GE, aunque con mas detallitos.

    En biologa, un gen comienza con un codn de comienzo, contina con la secuencia de codones que codifican la funcionalidad del gen, y termina con un codn de finalizacin.

  • 27AGB

    GEPGEP

    En GEP se separa el genotipo del fenotipo. En GAs y GPs no se hace esa separacin (funcionan como los primitivos ARN).

    En GEP se mantiene una poblacin de cromosomas, compuestos por genes de tamao fijo codificados como cadenas de smbolos. Los cromosomas se reproducen como en GA (cruce, mutacin, etc.). Luego cada gen se convierte a un ET (expression tree = rbol de expresin), que consiste en un programa de computador.

    En GEP un gen no es un smbolo, sino una secuencia de smbolos de longitud fija.

    Lo que usualmente ocurre es que quedan smbolos no usados (no expresados) en el gen.

  • 28AGB

    GEPGEP

    De esta manera, cualquier secuencia de smbolos en un gen da lugar a un ET sintcticamente correcto. Por ejemplo, la expresin:

    Se representa en el siguiente ET: (siendo Q la raz cuadrada). El gen que lo representa ser (leyendo el ET de arriba abajo y de izquierda a derecha): Esta representacin no es prefija ni postfija, sino

    una expresin-K.

    *

    -+

    Q

    dcba

    ( ) ( )dcba + *

    Q * + - a b c d

  • 29AGB

    GEPGEP

    Al revs, partiendo de un gen cualquiera:

    Equivale al siguiente ET: (obsrvese que no se usan los 5 ltimos smbolos)

    Cuyo fenotipo es la expresin:

    ( )( ) ( )aabaa ***+

    *

    *+

    Q

    aQ*a

    a b a

    Q * + * a * Q a a b a Q - + + a

  • 30AGB

    GEPGEP

    Cada gen est formado por una cabeza y una cola. La cabeza contiene smbolos que representan funciones y

    terminales, mientras que la cola contiene solo terminales. La longitud de la cabeza (h) se elige dependiendo del

    problema. La longitud de la cola (t) depende de h y del nmero de

    argumentos (n) de la funcin que tenga mas argumentos: t = h*(n-1)+1

    Con estas reglas se garantiza que no quede el gen corto (es decir, que no queden funciones sin suficientes argumentos) y que el programa tenga una longitud acotada (que no pueda crecer indefinidamente, como ocurre en GP).

  • 31AGB

    GEPGEP

    La ventaja de GEP es que los genes son de longitud fija, mientras que los genotipos son de longitud variable.

    Y que no hacen falta operadores especiales de reproduccin, ya que los tpicos de GA valen. Y los resultados de estos operadores son siempre genes vlidos: El cruce automticamente da lugar a un gen vlido. La mutacin hay que hacerla con la restriccin de que en

    la cola solo pueden aparecer smbolos terminales.

  • 32AGB

    GEPGEP

    Por ejemplo, si las funciones son {Q, +, -, *, /} y los terminales son {a, b}, entonces n=2.

    Suponiendo que queramos h=7, sale t=8 y la longitud total del gen ser h+t=15.

    Q * + * a / Q a a b a a a b a0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

    Cabeza: funciones y terminales

    Cola: solo terminales

  • 33AGB

    GEPGEP

    Un cromosoma est compuesto por un nmero fijo de genes. Cada gen codifica un ET. Los ETs se relacionan a travs de una nica operacin codificada al final del cromosoma.

    Cada gen puede evolucionar aisladamente de los dems, dentro del mismo cromosoma. Ello facilita el surgimiento de los bloques constructivos.

  • 34AGB

    GEPGEP

    Ejemplo (3 genes de h=4, n=2 => t=5 y longitud gen=9):

    Q * + * a b a a a b a a b a a a a a + * a b b a a b a F

    1er. gen 2o. gen 3er. gen Operacin final

    *

    *+

    Q

    aaba

    b

    a*

    +

    bb

    F

    Nota: F = IF