domingo, 18 de febrero de 2007

Computación evolutiva


Como ejemplo de la simbiosis hombre/máquina que proponía en el artículo anterior, vamos a hablar de una rama de la Inteligencia Artificial denominada Computación Evolutiva.

En pocas palabras, lo que pretende la Computación Evolutiva es la simulación de los procesos de selección natural en un ordenador, respetando los principios básicos que rigen la evolución de las especies, a saber:

  1. Los individuos tienden a transmitir sus rasgos a sus descendientes.
  2. Los individuos más adaptados tienen más probabilidades de sobrevivir.
  3. La naturaleza introduce ocasionalmente nuevos rasgos, fruto del azar.

Para respetar estos principios básicos utilizaremos tres operadores, o tres procesos computacionales: emparejamiento (para el principio 1), selección (principio 2) y mutación (principio 3).

Con esto en mente, pensemos en un ejemplo sencillo: propongámonos construir un generador de melodías, el Electrobardo, por homenajear a Stanislaw Lem.

Una melodía es una secuencia de notas, cada una con su duración, que podemos representar como una cadena de símbolos (no quiero bajar demasiado a detalles de implementación; al informático le sobrarán, y al no informático no le dirían gran cosa). ¿Cómo podemos (más o menos burdamente) introducir aquí los tres operadores definidos?

Operador emparejamiento: 2 cadenas (melodías) se cortan en dos trozos y se pegan cruzados. De este modo, la melodía hija 1 se construye como el primer trozo de la melodía padre 1 y el segundo trozo de la melodía padre 2. La melodía hija 2 se construye de modo similar.

Operador mutación: aleatoriamente se modifica algún símbolo de la cadena (alguna nota o alguna duración) por otro.

Y aquí viene la clave de la participación humana; el criterio, el gusto musical, la sabiduría milenaria, con el…

Operador selección: el humano escucha las melodías, asignando una puntuación (o un orden de calidad) según lo buena o mala que considere a la melodía.

Ya sólo nos queda juntar las piezas. Construimos un conjunto de N melodías aleatorias, generando notas y duraciones sin ton ni son. Llamaremos a este conjunto de melodías la población inicial. Las presentamos al humano para que las valore, y con esta valoración seleccionamos (con una probabilidad proporcional al valor de cada melodía) un par de melodías. Las emparejamos, las mutamos y las guardamos como miembros de la siguiente generación. Repetimos el proceso hasta completar N nuevas melodías, que presumiblemente estarán más adaptadas (al criterio impuesto por el humano) que las anteriores.

Repetimos todo este proceso una y otra vez hasta que encontramos, si somos Bach, una cantata, si somos Satie, una gymnopedie, y si somos de la SGAE, la melodía que gana Eurovisión.

Dejo a los lectores como ejercicio plantear la construcción del verdadero Electrobardo de Stanislaw Lem, que en lugar de melodías componía poemas, a ver si alguno gana el Loewe, que este año quedó aparatosamente desierto.


Publicado originariamente en Computación creativa y otros sueños (Libro de Notas) el 25/12/2004