El blog de Blax ya no es accesible. No es que sea una noticia, el último apunte que señalé del espacio que mantenía era de 2006, pero no deja de ser una pérdida. Afortunadamente, tras el 50.º aniversario de Eurielec hemos retomado el contacto unas cuantas personas de las que pululábamos por el garito con cierta asiduidad, y esto es lo que dejaba caer el otro día el caballero en cuestión: dadabots, un proyecto de creación de redes neuronales que generan pistas de sonido a partir de audio sin compresión. En concreto, puso un enlace a una emisión continua de death metal técnico generado a partir de música de Archspire, un grupo he mencionado un par de veces.
Como cuentan en una entrevista en The Outline, los autores del proyecto son CJ Carr y Zack Zukowski, dos antiguos alumnos de la Northeastern University que se conocieron en un curso de la Berklee College of Music. Han publicado varios discos generados de esta manera en bandcamp, y hace año y medio publicaron su trabajo en arxiv. En su web lo resumen de manera más coloquial:
Empezamos con el código de investigación original de SampleRNN en theano. Es una red LSTM jerárquica. Las LSTMs pueden ser entrenadas para generar secuencias. Secuencias de lo que sea. Podría ser texto. Podría ser el tiempo. Lo entrenamos con las formas de onda brutas de discos de metal. A medida que va escuchando, intenta adiviar la siguiente fracción de milisegundo. Juega a este juego millones de veces a lo largo de varios días. Tras el entrenamiento, le pedidos que genere su propia música, como se puede preguntar a una máquina de predicción meteorológica que invente siglos de patrones climatológicos aparentemente plausibles.
Alucina 10 horas de música de esta manera. Eso es demasiado. Así que hicimos otra herramienta para explorarla y organizarla. Encontramos los trozos que nos gustan y [con ellos] componemos un álbum para consumo humano.
Entrenar redes es un desafío. Hay muchos hiperparámetros que probar. ¿Cómo de grande es? ¿Cuál es el ritmo de aprendizaje? ¿Cuántos niveles de la jerarquía? ¿Qué optimizador del alogritmo de gradiente descendente? ¿Cómo muestra de la distribución? Si lo haces mal, suena como ruido blanco, silencia o apenas nada. Es como elaborar cerveza. ¿Cuánto de levadura? ¿Cuánto de azúcar? Estableces los parámetros al principio y no sabes si va a saber bien hasta mucho después.
Entrenamos cientos de redes hasta que encontramos buenos hiperparámetros, y lo publicamos para que todo el mundo lo usara.
Recuerdo que los casos que veía hace años de uso de RNNs para componer música partían casi siempre de datos MIDI, y es curioso ver como la evolución de los sistemas y el aumento de la capacidad computacional permite trabajar volúmenes mucho mayores datos.