Programación Genética: Introducción y Aspectos Generales

7

Click here to load reader

description

La programación genética es una herramienta de la computación evolutiva que ha tenido un desarrollo relativamente reciente, principalmente con base en los trabajos de Koza a finales de los años 80’s e inicios de los 90’s. A diferencia de las otras técnicas se fundamenta en la evolución de programas, un concepto llamado inducción de programación o programación automática. Su implementación consta de cinco pasos: 1) selección de terminales, 2) selección de las funciones, 3) identificación de la función de evaluación, 4) selección de los parámetros del sistema y 5) selección de la condición de terminación. La estructura subyacente a la evolución es estructurada jerárquicamente. La población inicial está compuesta de árboles de programas construidos aleatoriamente que son llevados al proceso de evolución: evaluación, selección, reproducción, entrecruzamiento y mutación hasta llegar a la condición de terminación.

Transcript of Programación Genética: Introducción y Aspectos Generales

Page 1: Programación Genética: Introducción y Aspectos Generales

1

Programación Genética:

Introducción y Aspectos Generales

John Sprockel

Maestría de Ingeniería de Sistemas y Computación, Universidad Javeriana

[email protected]

Resumen. La programación genética es una herramienta de la computación evolutiva que ha tenido un desarrollo

relativamente reciente, principalmente con base en los trabajos de Koza a finales de los años 80’s e inicios de los

90’s. A diferencia de las otras técnicas se fundamenta en la evolución de programas, un concepto llamado

inducción de programación o programación automática. Su implementación consta de cinco pasos: 1) selección

de terminales, 2) selección de las funciones, 3) identificación de la función de evaluación, 4) selección de los

parámetros del sistema y 5) selección de la condición de terminación. La estructura subyacente a la evolución es

estructurada jerárquicamente. La población inicial está compuesta de árboles de programas construidos

aleatoriamente que son llevados al proceso de evolución: evaluación, selección, reproducción, entrecruzamiento y

mutación hasta llegar a la condición de terminación.

Palabras Clave: inteligencia artificial, computación evolutiva, programación automática, inducción de

programación, árboles de decisiones.

1 Introducción

La Programación Genética es un método automático independiente del dominio para resolver problemas.

Comenzando con miles de programas de ordenador creados al azar, se aplica el principio darwiniano de la selección

natural, la recombinación (crossover), la mutación, la duplicación de genes, la supresión de genes, y ciertos

mecanismos de la biología del desarrollo. Por lo tanto, genera una población mejorada a lo largo de muchas

generaciones [1]. Tiene que ver principalmente con la programación automática. Las estructuras susceptibles de

evolución son como tal los mismos programas de computación. Puede considerarse una forma de descubrimiento de

programas o inducción de programas [2]. Comienza a partir de una declaración de alto nivel de los requisitos de un

problema y trata de producir un programa de computadora que resuelve el problema. El usuario se comunica el

problema humano de alto nivel de los estados en el sistema de programación genética mediante la realización de

ciertas medidas preparatorias.

2 Historia

Aunque se le atribuye a Koza [3] el desarrollo de la técnica, podemos observar que esta no hubiera sido posible sin

contar con los desarrollos conceptuales que lo antecedieron y son visibles en la figura 1.

Page 2: Programación Genética: Introducción y Aspectos Generales

2

Figura 1. Evolución histórica de los conceptos de la programación genética

3 Componentes y Pasos

Los cinco principales pasos preparatorios para la versión básica de la programación genética requiere que el usuario

humano especifique [1]:

i. El conjunto de terminales (por ejemplo, las variables independientes del problema, las funciones de

argumento cero y constantes al azar) para cada rama del programa a ser evolucionado.

ii. El conjunto de funciones primitivas para cada rama del programa a ser evolucionar.

iii. La medida de la aptitud o Fitness (explícita o implícitamente para medir la aptitud de los individuos en la

población). En otras palabras, determinar la función de evaluación.

iv. Selección de los parámetros para el control de la ejecución.

v. El criterio de terminación y el criterio para designar el resultado.

Propiedad de Clausura (Cierre)

Es un requerimiento importante. Consiste en que cada función en el conjunto de funciones debe ser capaz de aceptar

como argumento cualquier otra salida de una función y algún terminal en el conjunto terminal. Todo el conjunto de

estructuras posibles debe ser formado recursivamente de los conjuntos de función y de terminales [2].

Turing (1950-1953) “búsqueda genética o evolucionaria”

Smith (1980) sistema de clasificación para encontrar estrategias en poker

Cramer (1985) representación de programas con arboles en un genotipo

Hicklin (1986) y Fujiki y Dickinson (1987) consideraron métodos para evolucionar programas en LIPS. Y Dickmanns, Schmidhuber y Winkklohofer (1987) en PROLOG.

Koza (1989, 1992) importancia de la programación genética para inducción de programas en un amplio rango de campos.

Page 3: Programación Genética: Introducción y Aspectos Generales

3

Figura 2. Procedimientos en la programación genética.

La medida de la aptitud o fitness es el mecanismo primario para la comunicación de la declaración de alto nivel de

los requisitos del problema para el sistema de programación genética. En él se especifica lo que se debe hacer.

Cuando se utiliza la programación genética para sintetizar automáticamente los programas de ordenador, los

programas suelen estar representados como raíces, los árboles de punto marcados con sucursales ordenados. El

conjunto de funciones puede consistir simplemente las funciones aritméticas ordinarias de suma, resta,

multiplicación y división, así como un operador de bifurcación condicional. Por otro lado, cuando se utiliza para

sintetizar automáticamente una estructura especializada tal como un controlador, el conjunto de funciones consta de

las funciones especializadas que forman los integradores de controladores, diferenciadores, ganancias, sumadores,

restadores, clientes potenciales, retrasos, etc. En el caso de utilizarse para sintetizar automáticamente circuitos

eléctricos, debe superar un obstáculo adicional representacional porque en los circuitos están etiquetados gráficos

cíclicos. Puede hacerlo mediante el establecimiento de una correspondencia entre los árboles del programa que

utiliza habitualmente la programación genética y los grafos etiquetados cíclicos afín a los circuitos. Se utiliza un

proceso de desarrollo para mapear los árboles en los circuitos. Este proceso de desarrollo comienza con un embrión

simple (a menudo compuesto por un único cable modificable). A continuación, desarrollar un circuito eléctrico

análogo de la aplicación progresiva de las funciones de construcción de circuitos en un árbol de alambre programa

inicial del embrión modificable (y para tener éxito modificable cables y componentes modificables).

Una revisión de Koza [1] expone que después de que el usuario ha realizado los pasos de preparación, la

programación genética ejecuta una serie de bien definidas e independientes de pasos. Específicamente, la ejecución

se inicia mediante la generación de una población inicial de composiciones (típicamente al azar) de funciones del

problema y terminales; existen varias técnicas para la inicialización de los árboles (ver figura 3). Entonces, la

programación genética iterativamente realiza los siguientes pasos secundarios (referido aquí como una generación)

en la población de los programas hasta satisfacer el criterio de terminación. En primer lugar, ejecutar cada programa

en la población y asignarle un valor de fitness.

Page 4: Programación Genética: Introducción y Aspectos Generales

4

Figura 3. Métodos para la inicialización de los árboles de decisión.

En segundo lugar, se crea una nueva población mediante la aplicación de los programas de las siguientes

operaciones para los individuos seleccionados en la evolución de la población. Las operaciones se aplican a los

programas seleccionados de la población con una probabilidad basada en la aptitud (con reselección permitida):

Reproducción: Copia el programa seleccionado para la nueva población.

Crossover: Crea un programa nuevo descendiente de la nueva población mediante la recombinación de las

piezas elegidas al azar de dos programas seleccionados. En el caso de los árboles de decisiones se describen

dos técnicas para su realización: la tradicional (ver figura 3) y la recombinación de crías.

Figura 4. Operadores de recombinación en árboles de decisión.

Mutación: Crea un programa nuevo descendiente de la nueva población mutando aleatoriamente una parte

elegida al azar del programa seleccionado. En los árboles de decisiones se cuentan con técnicas de macro-

mutación (se selecciona un punto y se muta todo el sub-árbol a partir de esa instancia) y micro-mutación

Método de Crecimiento

(“Grow”)

•Formas Irregulares

•Se especifica la profundidad máxima (Dmáx )

Método Completo

(“full”)

• Árboles Regulares

• Se especifíca la misma Dmáx

Rampa Mitad y Mitad

•Introduce diversidad en la pobl inicial

•Usando ambas tecnicas

Escoger los padres

Seleccionar un sub-árbol

Intercambiar los sub-árboles

Page 5: Programación Genética: Introducción y Aspectos Generales

5

(solo se altera un simple nodo). En la representación lineal se selecciona una instrucción la cual se muta

puntualmente, o bien, se cambia en bloque (ver figura 4).

Operaciones que Alteran la Arquitectura: Crea un programa nuevo descendiente de la nueva población

mediante la alteración de la arquitectura del programa, mediante la creación, duplicación o eliminación de

una subrutina, iteración del bucle, recursividad, o elemento.

A.

B.

C.

Figura 4. Representación de mutación en una representación lineal. A. Secuencia original. B. Mutación puntual en

una instrucción. C. Cambio en bloque de una secuencia de instrucciones a partir de un punto.

Finalmente, el individuo con la carrera de mejor aptitud es designado como el resultado de la ejecución. Este

resultado podría resolver (o aproximadamente solucionar) el problema.

Hay que tener en cuenta que la estructura con la cual se lleva a cabo la evolución es un programa de computador

jerárquicamente estructurado. El espacio de búsqueda son los programas válidos, los cuales pueden ser vistos como

espacios de árboles arraigados [4].

4 Presentación de un artículo de ejemplo

El trabajo de Podgorelec y Kokol [4], si bien es antiguo (publicado en 1999), se convierte en un excelente ejemplo

de la aplicación de la programación genética en la selección de la mejor herramienta, en este caso árbol de

decisiones, aplicada al diagnóstico de una enfermedad congénita cardiaca de alta prevalencia, el prolapso de la

válvula mitral.

Se tomó una población de 900 personas menores de 18 años representativas de la población de Maribor (Slovenia),

de los cuales 631 accedieron a la realización de un ecocardiograma. Se usó una población de 500 personas para el

conjunto de entrenamiento y los restantes 131 para el conjunto de pruebas. Previamente habían escogido 103

parámetros compuestos a partir de datos generales, características clínicas, de laboratorio, electrocardiograma,

imágenes y finalmente el ecocardiograma para generar con ellos el mejor árbol de decisiones de la forma tradicional

(figura 5), el cual fue comparado con un programa de decisiones automáticamente evolucionado.

X1 X2 X4 X5 X6

X1 X2 X4 X5* X6

X1 X2 X4 X8 X9

Page 6: Programación Genética: Introducción y Aspectos Generales

6

Figura 5. Parte del árbol de decisiones para la clasificación del prolapso mitral.

Figura 6. Parte del programa de decisiones para la clasificación del prolapso mitral.

Figura 7. Partición del espacio de descripción i) ejes paralelos en el árbol de decisiones ii) líneas oblicuas en el

programa de decisiones.

Los resultados demostraron que el programa contaba con una mayor certeza, sensibilidad y especificidad que el

árbol tradicional (ver tabla 1).

Page 7: Programación Genética: Introducción y Aspectos Generales

7

Tabla 1. Comparación de la complejidad entre el árbol y el programa

Si bien es insuficiente la información acerca del cómo se seleccionó la población y de cómo se diseñaron los árboles

de decisiones y los detalles de la metodología de la programación genética (terminales, funciones, fitness,

parámetros y criterios de terminación), demuestra que puede construirse y evolucionarse una estrategia para la toma

de decisiones en medicina que conlleva una mayor certeza en su ejecución.

Referencias

[1] Koza J, Keane M, Streeter M (2003). What's AI done for me lately? Genetic programming's human-competitive results.

IEEE Intelligent Systems. Vol: 18, nro 3, pp 25-31.

[2] Dumitrescu D. Evolutionary Computation, CRC Press, 2000.

[3] J.R. Koza, Genetic Programming: On the Programming of Computers by Means of Natural Selection, MIT Press, 1992

[4] Podgorelec, V., Kokol, P., & Zavrsnik, J. (1999). Medical diagnosis prediction using genetic programming (pp. 202–

207). Presented at the 12th IEEE Symposium on Computer-Based Medical Systems, 1999. Proceedings., IEEE

Comput. Soc. doi:10.1109/CBMS.1999.781271.

[5] Rusell N. Inteligencia Artificial: Un Enfoque Moderno, Prentice Hall, 2004.

[6] Jones MT. Artificial Intelligence: A Systems Approach, INFINITY SCIENCE PRESS LLC, 2008