(Melanie) ¡Hola!
Nuestra invitada esta semana es Stephanie Forrest,
que es profesora de Ciencias de la Computación
en la Universidad de Nuevo México,
donde dirige el laboratorio de Computación Adaptativa.
Stephanie también es profesora externa
en el Intituto Santa Fe y co-dirige la Junta Científica del Instituto
Steph ha trabajado por muchos años en la intersección
entre ciencias de la computación y biología y es una experta en algoritmos genéticos
los cuales hemos estado estudiando en esta unidad. Bienvenida, Steph.
(Stephanie) Muchas gracias, Es muy bueno estar aquí.
(Melanie) Sé que has estado estudiando algoritmos genéticos por mucho tiempo
incluso hemos trabajado juntas en proyectos de algoritmos genéticos
pero quería conocer tu opinión sobre por qué los algoritmos genéticos son relevantes en el estudio
de sistemas complejos.
Bueno, lo primero es que los algoritmos genéticos pueden ser vistos
como un modelo simple de evolución darwiniana.
Entonces, desde una perspectiva de modelación, capturan
uno de los procesos más importantes
y misteriosos en la tierra - la evolución.
Lo segundo es que este modelo de evolución darwiniana
también puede ser visto como una estrategia de diseño.
Es una estrategia de diseño que se ha usado mucho en la naturaleza
pero que también se ha adaptado como algoritmo computacional
para ayudar a diseñar sistemas de ingeniería.
Así que los algoritmos genéticos son usados mucho en ingeniería también.
(Melanie) Entonces, para seguirte,
¿Por qué dices que la evolución es misteriosa?
Bueno, primero
no la puedes ver, ese es el problema
Entonces, es un proceso
que regresando a Dawrin, se propuso
como una explicación para entender cómo
el mundo en el que vivimos llegó a ser
Pero eso no es un proceso que podamos observar.
Es muy difícil estudiarlo experimentalmente.
Ya hay ahora algunos sistemas experimentales que se pueden estudiar en tubos de ensayo,
como virus y bacterias que evolucionan,
podemos estudiar esos experimentalmente.
Pero creo que, cuando confrontamos el mundo a nuestro alrededor
para mí, es un misterio cómo el mundo acabó
siendo así, y aunque yo
tiendo a creer que el mundo fue producido por la evolución
no siempre es trivial entender cómo
pudo haber pasado eso mecánicamente.
(Melanie ) Cierto.
Y supongo que otra cosa misteriosa
sobre la evolución son las grandes transiciones
en donde al sistema que está evolucionando
le ocurre un gran cambio en su organización
y la acción evolutiva
sucede en un nivel de organización distinto.
Y yo creo que aún hoy
la mayoría de la gente que estudia evolución no diría que entienden como
suceden esos cambios.
(Melanie) Entonces, dijiste que esos
algoritmos genéticos son un modelo para la evolución. ¿Crees que nos podrían ayudar
a entender la evolución biológica?
Sí.
¿Cómo? Te preguntarás. Bueno, han sido usados
para modelar muchos tipos de procesos evolutivos
que ocurren naturalmente - no sólo biológicos, por cierto.
Pero en el ámbito de las ciencias sociales, puedes pensar
en algoritmos genéticos que modelen como las innovaciones
se propagan en una comunidad.
Se han escrito libros sobre la difusión de las innovaciones
y la idea es que las ideas y modas
se propagan en las poblaciones en un proceso no
distinto a la evolución darwiniana.
(Melanie) ¿Así que peinas que
la evolución darwiniana es una idea útil, no solo en biología, sino también en otros campos?
Absolutamente.
No diría que es la única idea.
(Melanie) Por supuesto.
Pero creo que es una idea importante, y ciertamente relevante en el estudio
de la mayoría de los sistemas complejos.
(Melanie) ¿En qué estás trabajando ahora?
¿Con qué estás emocionada? ¿Particularmente en el campo de algoritmos genéticos?
Como hace 10 años me interesó
mi propio campo... Bueno, siempre me ha interesado mi propio campo,
pero particularmente me interesó el software.
Y pensar en como
las infraestructuras de software, esto es, grandes colecciones de software
por ejemplo, todos los programas que están en
los discos de las computadoras que están conectadas a internet - en cómo esas
colecciones tan grandes cambian en el tiempo y
si son sujetas o no, al proceso de evolución.
Y a partir de eso me interesó particularmente
si se podía o no evolucionar software.
Por ejemplo, ¿podríamos diseñar un programa en lugar de
contratar a un programador que lo escriba?
¿Podríamos usar el proceso evolutivo para
producir programas?
Y aunque no puedo decir que yo
haya resuelto ese problema exactamente, esto me llevó
a lo que es potencialmente un problema más fácil
que es, usar la evolución para evolucionar
reparaciones en defectos o errores del software.
La idea es que me das un
programa con errores,
hago varias copias, típicamente
40 copias del programa, y cada una de las copias
tiene mutaciones al azar, a diferencia de las
mutaciones genéticas, y luego
usamos un algoritmo genético para seleccionar
miembros de la población que son más adecuados, es decir
que pasan la prueba. En nuestro caso la adecuación se mide en términos de pruebas con regresiones
Y después de unas cuantas generaciones
la evolución produce misteriosamente
un programa que en muchos casos repara los errores.
(Melanie) Fántasitco. Eso es impresionante. ¿Dejarás sin trabajo a los programadores?
Bueno...
Podría ser. Digo, yo creo que
el software es un gran cuello de botella
y el mantenimiento del software también.
Entonces, si ves la economía de la computación y
en dónde se gasta el dinero, el 90% del costo
del software se va a mantenimiento.
El mantenimiento es principalmente depurar de errores,
arreglar problemas que han sido identificados.
Un estudio de hace algunos años
estimó que el costo de
los errores del software eran del
0.6% del P.I.B. del E.U.A., lo que tiene
un impacto económico significativo. Entonces aunque
no le quitemos el trabajo a todos los programadores, podemos acelerar
su productividad, ya sea que nuestro programa proponga
soluciones al error que luego puedan revisar y decidir si
la aceptan, o que el programa sustituya la tarea de
arreglar pequeños errores y le dejen al programador los
errores más complejos e interesantes.
Eso sería un resultado aceptable. (Melanie) Entonces, ¿a cuánto está esto
de ser un producto comercial? (Steph) Bueno, aún está
lejos de ser un producto comercial. Pensamos sobre su comercialización, pero
hasta ahora sólo lo hemos dejado como código abierto,
de dominio público, entonces todos nuestros programas
están disponibles en nuestro sitio web.
Debo mencionar que no estoy haciendo esto yo sola. Lo hago en colaboración con
un profesor de la Universidad de Virginia, que sabe mucho más que yo sobre ingeniería de
software y lenguajes de programación. Su nombre es Westley Weimer
I ambos nos hemos
sorprendido de como ha funcionado
este proyecto. Recientemente
completamos un estudio grande de más de 150 errores
seleccionados al azar y
arreglamos confiablemente más del 50% en el primer intento.
(Melanie) Vaya, eso es impresionante. Es más de lo que la mayoría de la gente puede hacer.
Mejor que lo que yo puedo hacer, que es vergonzoso admitir
(Melanie) Bueno, ya no lo necesitas, ahora que tienes tu algoritmo genético que la haga por ti.
Cierto, pero su uso
y cómo podemos introducirlo a la computación popular
aún es una pregunta abierta para nosotros.
(Melanie) Mencionaste que esta idea
de algoritmos genéticos creando programas,
no sólo corrigiendo sus errores. Se que hay un campo amplo llamado
Programación Genética, que ha intentado hacer esto.
¿Qué tan difícil crees que es este problema? Vimos un ejemplo en
nuestra clase, creando un programa simple
para mover a un robot en
en una pantalla y que hicera
ciertas cosas. Pero la pregunta es, ¿qué tan difícil
es escalar esto a programas verdaderamente complejos?
¿Crees que esto podría suceder?
No creo que vaya a suceder inmediatamente. En realidad,
me gustaría señalar que el problema que aborda la programación genética
es el problema de comenzar de ceros.
Una de las razones por las cuales nosotros fuimos
tan exitosos en la reparación de errores
es porque iniciamos con un programa que está
99.999% bien
Está bien en todo lo demás, pero tiene un error.
Y nosotros sólo intentamos resolver ese error.
En la programación genética se empieza en el otro lado
y no sé que lado vaya a
ser mejor eventualmente. Mi teoría
es que tomemos lo que se ha hecho con programas funcionales
o parcialmente funcionales y viendo hacia el futuro
pensar en cómo se puede añadir funcionalidad a un programa
que ya está funcionando.
Probablemente esa es la diferencia entre la evolución y el origen de la vida, no sé.
(Melanie) Bien, muchas gracias. Ha sido excelente hablar contigo.
Por nada. Es divertido y los sistemas
complejos son maravillosos. (Melanie) Bien. ¡Gracias!