¿Puede la IA impulsar la tradición?
MiliaGAN explora cómo generar melodías para el bertsolarismo con redes generativas adversarias: tradición vasca, experimentación y mucho aprendizaje.
Proyecto de aprendizaje compartido por la comunidad. El artículo documenta el equipo, el método y los resultados; no acredita que el prototipo esté listo para su uso fuera del entorno de aprendizaje.

Tradición, del latín tradere, transmitir, es el acto de compartir una conducta o creencia de generación en generación. Y como tal, este patrimonio pasa a formar parte de nosotros mismos, de nuestra identidad.
La innovación, por el contrario, es la introducción de nuevas ideas, de nuevas formas o enfoques que cambian la forma en que se hacían las cosas antes. Estos nuevos enfoques suelen verse como una amenaza a la tradición, ya que la adopción de nuevos métodos o comportamientos tiende a cambiar la forma en que se hacían las cosas, la tradición.
Sin embargo, ¿las cosas tienen que ser siempre así? ¿Se puede utilizar la innovación para aprovechar y difundir la tradición entre la sociedad?
Donostia. 2021
Bertso, doinu y neurri: un vistazo a la tradición vasca
Entre los diversos tesoros que la cultura vasca ha sabido mantener vivos se encuentran bertsoak, versos improvisados con rima que se cantan siguiendo un doinu, una melodía, que tiene que coincidir con ciertos neurri, o longitud del verso.
Estos bertsos suelen cantarse ante un público. Los bertsolaris, improvisadores de versos en euskera, cantan sobre temas propuestos por quien modera la sesión, el gaijartzaile, e interactúan con otros bertsolaris, a menudo con humor mordaz, buscando el aplauso del público.
¿Cómo es una sesión actual de bertsos? El siguiente vídeo nos da una idea.

¿Te has fijado en que la base que utilizan ambos bertsolari es la misma? Esta base se llama doinu(a). Los doinus se transmiten de generación en generación, y es muy importante que los bertsolaris los conozcan bien, porque necesitan utilizar el doinu sugerido por el gaijartzaile (moderador) u otros bertsolaris para cantar sus versos.
¿Podemos improvisar sobre la improvisación?
Los bertsos son como el rap, y las batallas de rap se suceden sobre la marcha, no hay un guión a seguir. Esto significa que la capacidad del bertsolari para improvisar se convierte en la piedra angular del bertso. Sin embargo, la base, el doinu, ya es conocida por todos, es algo fijo, rígido.
Lo cual es una lástima, ¿no? Si la improvisación forma parte del gran arte del bertsolari… ¿Por qué no ofrecer un doinu improvisado para que la experiencia del bertso sea aún más desafiante y única?
Con estas ideas y lo que acabábamos de aprender sobre deep learning, a @jperezvisaires y @klopetx se nos ocurrió lo mismo: si algo podía generar nuevos doinus, quizá fuera una red generativa adversaria.
¿Se podría revolucionar el bertsolarismo con el uso de la IA?
Bueno... tal vez no tanto, pero valió la pena intentarlo.
GAN: donde tecnología y tradición podrían encontrarse
En Saturdays.AI conocimos arquitecturas como las redes convolucionales, recurrentes y los autoencoders, además de enfoques como el aprendizaje por refuerzo y las redes generativas adversarias. Nos preguntamos si una GAN podría crear nuevos doinus y qué necesitaríamos para intentarlo.
¡Datos! Por supuesto.
Recopilando los datos
Por suerte, Bertsozale Elkartea mantenía una web con unos 3.000 doinus y sus metadatos. El contenido está en euskera, por si quieres echarle un vistazo.
Y ya sabes lo que se dice:
Es más fácil pedir perdón que obtener permiso...
Así que extrajimos los datos de la web mediante scraping. Gracias a Bertsozale por su trabajo, y disculpas por sobrecargar sus servidores y obtener los datos sin pedir permiso formalmente.
Primero descargamos los metadatos y seleccionamos melodías según su tipo y número de sílabas. Escogimos las de zortziko txiki, con siete sílabas en el primer verso y seis en el siguiente. Así redujimos la lista a unas 200 melodías.
formato midi
«Espera un momento: ¿descargar qué exactamente?»
Afortunadamente para nosotros, tuvimos la oportunidad de descargar el doinus en formato mp3 o midi.
«¿MIDI? Conozco el MP3, pero midi me recuerda a la palabra francesa para mediodía…»
MIDI (Musical Instrument Digital Interface) es un estándar para intercambiar mensajes musicales. Un flujo MIDI 1.0 admite 16 canales. Los mensajes describen eventos como el inicio y fin de una nota, su altura y su velocidad de pulsación. En esencia, el archivo indica qué notas tocar, cuándo y durante cuánto tiempo; no contiene la grabación del sonido.

Ejemplo de midi.
Alimentando a nuestro pequeño monstruo generativo
Una vez que los datos estuvieron listos, solo necesitábamos alimentar la GAN.
Y nuestra experiencia de usar midi directamente para GAN se resume perfectamente en el siguiente poema:
Usamos MIDI como entrada;
bueno, al menos lo intentamos.
Nos topamos con problemas
y cambiamos de camino.
Ya sabes, todo el mundo utiliza el Deep Learning con imágenes, ¿por qué deberíamos hacer lo contrario?
Entonces, en lugar de usar midis directamente, creamos imágenes con ellos, porque, debido a la naturaleza de los archivos midi, es bastante sencillo visualizarlos/representarlos como imágenes.
Una vez en el dominio de imágenes más cómodo, fue más fácil trabajar con el problema, ya que hay mucho más contenido relacionado con imágenes y redes neuronales convolucionales.
estructura GAN
Hagamos una pausa. Hemos hablado de generar sonidos nuevos con GAN, pero ¿qué es exactamente una GAN?
Las GAN fueron introducidas por Goodfellow y colaboradores y son esencialmente dos modelos separados que se entrenan juntos con un propósito opuesto. Uno de los modelos, el generador, genera nuevas muestras de datos a partir de una semilla aleatoria; el segundo modelo, el discriminador, intenta decir si los datos son originales (reales) o si fueron creados por el modelo generativo (falso). Debido a su comportamiento, normalmente se les compara con un falsificador y un policía. El falsificador sigue mejorando la calidad de las obras mientras el policía mejora en detectar cuáles son reales o falsas.

La estructura de una GAN alimentada con doinus.
Durante el entrenamiento, el generador intenta crear representaciones de nuevos doinus que el discriminador no distinga de las reales. Esa competencia puede mejorar las muestras generadas, aunque engañar al discriminador no garantiza por sí solo que la música resulte interesante para una persona.

MiliaGAN, la parte generadora de GAN.
Pan comido, ¿verdad?
SPOILER: Nada salió como se esperaba.
Ronda 1: Si lo que uno tiene que decir no es mejor que el silencio…
Empezamos a alimentar a nuestro monstruo (bueno, monstruos en realidad).
Esperamos hasta que el entrenamiento convergiera.
Y flipamos con el doinus resultante.

Sí, esta no es una imagen erróneamente negra, es un midi "tímido" sin notas.
Sí, un MIDI vacío. Nuestra GAN parecía haber decidido que era mejor callar que decir algo peor que el silencio. Se nos puso en modo Simon & Garfunkel y estrenó su propia versión de The Sound of Silence.
¿Por qué?
Las imágenes que intentábamos crear eran muy escasas, con muchos ceros y solo algunos unos en las notas que se tocaban. Inicialmente, el generador aprendió que apagando todos los píxeles, podía engañar al discriminador tonto al principio. Sin embargo, durante el entrenamiento, en algún momento, incluso el discriminador más tonto fue capaz de detectar que una imagen en blanco no era un doinu real, lo que significaba que todos los esfuerzos realizados por el generador para producir imágenes en blanco a partir del ruido ahora eran inútiles. El generador no pudo adaptarse lo suficientemente rápido para engañar al nuevo discriminador y el entrenamiento divergió.
Para resolver el problema de las imágenes dispersas, tomamos el argmax de todas las columnas, esencialmente convirtiendo una imagen de 128 × 1024 en un vector de 1 × 1024. Esto fue posible porque los doinus sólo tocan una nota a la vez.
Lección: simplifica la representación de los datos cuando tenga sentido. Hazle la vida más fácil a tu red neuronal.
Ronda 2: ¡Maldita sea! ¿A quién le importa mezclar diferentes doinus?
Inicialmente, queríamos que el generador se centrara en crear un solo tipo de doinu; el doinu más popular: zortziko txikia. Solo teníamos alrededor de 180 muestras utilizables de este tipo de doinu, y pronto se hizo evidente que entrenar GAN requiere una cantidad sustancial de datos solo para obtener resultados apenas aceptables. Entonces, en lugar de centrarnos en una pequeña fracción de los doinus, decidimos tomar toda la base de datos al final. Esto significó mezclar todo tipo de doinus diferentes, pero obtuvimos un conjunto de datos de alrededor de 2700 muestras; Todavía es muy pequeño para el entrenamiento GAN, pero vale la pena intentarlo.
Sí, toda la base de datos, con distintos metros, rimas y demás.
Lo
metimos
todo.
Además, redujimos la resolución de las imágenes para que fueran menos escasas, para evitar el problema del shy gan.
Y redujimos aún más la resolución midi. Necesitábamos simplificar si queríamos lograr algún tipo de progreso.
Y, sorprendentemente, ocurrió la magia.
Lecciones aprendidas
Entonces, ¿qué hemos aprendido tras la creación de nuestro pequeño monstruo, MiliaGAN?
- Nos faltaban datos para entrenar bien esta GAN. Ampliar el conjunto nos ayudó, aunque la cantidad no sustituye la calidad. El aprendizaje con pocos ejemplos en GAN era una línea de investigación que nos interesaba explorar.
- El tiempo de entrenamiento importa, pero solo si el proceso es estable. En nuestras pruebas, prolongar un entrenamiento estable permitió mejorar algunos resultados; entrenar más tiempo no garantiza una mejora en todos los casos.
- Simplificar la representación de los datos fue decisivo para nosotros. En este problema, transformar matrices dispersas en vectores redujo la tendencia a producir salidas vacías. No es una regla universal, sino una lección de este experimento.
Observaciones finales
El proyecto MiliaGAN ha sido una gran oportunidad para aprender técnicas de DeepLearning y, en particular, las Redes Generativas Adversariales. Sólo ha sido posible gracias a la ayuda del AI Saturdays que creó un entorno ideal para aprender IA y compartir proyectos e ideas. Gracias también al resto de fellows por su ayuda y sus aportaciones. Sin esta comunidad, MiliaGAN no habría sido posible.
En lo personal, el proyecto ha sido un reto y una gran fuente de diversión. Combina dos partes de nuestra identidad: la cultura y nuestra vena friki. Además, es la primera vez que Jon y Kermán unimos fuerzas en un proyecto tecnológico tan loco. No es nuestro primer proyecto disparatado, pero esa es otra historia.
¿MiliaGAN revolucionará el mundo del bertsolarismo? Francamente lo dudamos, pero bueno, si alguna vez alguien pregunta, nos divertimos y aprendimos.
¡Más inteligencia artificial!
Saturdays.AI acerca la IA a más personas a través del aprendizaje en comunidad y de proyectos con impacto social. Nuestro lema es AI4ALL IS AI4GOOD.
Una historia de la comunidad Saturdays.AI. Publicado originalmente el 22 de noviembre de 2021.
← Más historias de la comunidad


