Le réseau de neurones profonds MuseNet écrit de la musique

Le 29 mai, nous commencerons le cours sur les réseaux neuronaux Python , qui traite de l'apprentissage machine en profondeur et vous apprend à résoudre les tâches les plus complexes gérées par un ingénieur de l'apprentissage profond. Pour montrer à quel point le travail est intéressant et multiforme dans le domaine de l'apprentissage automatique, nous vous suggérons de vous familiariser avec une série de traductions d'articles sur le thème des réseaux de neurones en Python.



Qu'est-ce que MuseNet?


Nous avons créé et présenté MuseNet - un réseau neuronal profond qui peut créer des compositions musicales de quatre minutes en utilisant dix instruments différents. MuseNet expérimente en combinant différents styles musicaux: du country aux chefs-d'œuvre de Mozart et aux tubes immortels des Beatles.

La base du réseau n'est pas facilement notre perception et notre compréhension de la musique, mais la possibilité de trouver des échantillons d'harmonie, de rythme et de style dans des centaines de milliers de fichiers MIDI, puis de créer vos propres œuvres. MuseNet Neural Network utilise la même technologie que le GPT-2 - un modèle à grande échelle formé pour prédire les meilleures séquences à la fois en texte et en audio. Connaître de nombreux styles permet au réseau de créer des combinaisons de musique complètement uniques de différentes générations.

Compositeur et jetons instrumentaux


Nous avons créé des jetons pour les compositeurs et divers instruments de musique afin de donner à MuseNet un contrôle maximal sur les échantillons créés par le réseau. Au cours de la formation, des jetons de compositeurs et d'instruments sont ajoutés à chaque échantillon, ce qui aide le réseau à apprendre à utiliser ces informations dans les prévisions.

Structure à long terme


MuseNet utilise les noyaux recalculés et optimisés de Sparse Transformer pour former le réseau à 72 niveaux. À notre avis, la génération de musique est un créneau très réussi pour tester et développer des capacités de transformateur clairsemé.

Collecte et traitement des données


Nous avons collecté des données pour la formation de MuseNet dans une grande variété de sources. Les projets ClassicalArchives et BitMidi nous ont beaucoup aidés, et ils ont mis leurs collections colossales à notre disposition. Nous avons également utilisé des collections de musiques diverses trouvées sur Internet: jazz, musique pop, musique africaine, indienne et arabe. De plus, nous avons utilisé la collection MAESTRO .

La formation se déroule sur des données série, en tenant compte de l'ensemble des jetons, nous demandons au réseau de prédire le prochain jeton. Nous avons essayé d'utiliser plusieurs méthodes différentes pour encoder des fichiers MIDI. Au début, nous avons pensé à une approche par accords, qui considérait chaque combinaison de notes qui sonnent simultanément comme un accord séparé et assignait le jeton correspondant. Nous avons également essayé de condenser les motifs musicaux, en nous concentrant sur le début de chaque note.

bach piano_strings start tempo90 piano:v72:G1 piano:v72:G2 piano:v72:B4 piano:v72:D4 violin:v80:G4 piano:v72:G4 piano:v72:B5 piano:v72:D5 wait:12 piano:v0:B5 wait:5 piano:v72:D5 wait:12 piano:v0:D5 wait:4 piano:v0:G1 piano:v0:G2 piano:v0:B4 piano:v0:D4 violin:v0:G4 piano:v0:G4 wait:1 piano:v72:G5 wait:12 piano:v0:G5 wait:5 piano:v72:D5 wait:12 piano:v0:D5 wait:5 piano:v72:B5 wait:12 

Pendant la formation, nous:

  • On déplace les notes sur une échelle de hauteur (pendant l'entraînement, le nombre de transpositions diminue);
  • Nous ajoutons et réduisons à la fois le son global et le son des échantillons individuels;
  • Nous travaillons avec le timing: nous accélérons et ralentissons des fragments individuels de la composition;
  • Nous utilisons pour travailler avec des jetons de mixage .

De plus, nous utilisons quelque chose comme un critique musical intégré: nous lui demandons d'évaluer la composition et de décider si cet échantillon est créé à partir des données présentées ou s'il est ancien. Une telle estimation permet de sélectionner des échantillons lors de la génération.

Intégration


Pour que le modèle ait un contexte plus structurel, nous avons ajouté des intégrations. En plus des intégrations positionnelles standard, nous avons ajouté des intégrations qui suivent le flux de temps dans les échantillons. Cela vous permet d'intégrer correctement et simultanément des notes qui sonnent simultanément. Nous avons également ajouté deux intégrations structurelles qui permettent à MuseNet de comprendre dans quelle section de la composition globale un échantillon particulier doit être situé.

MuseNet donne déjà des concerts


Les personnes intéressées peuvent se familiariser avec le travail de MuseNet, le réseau de neurones donne même ses propres concerts en ligne sur Twitch . Pour ceux qui sont intéressés par la création de réseaux de neurones en Python et l'apprentissage machine profond, nous organisons un webinaire ouvert où nous parlerons du programme de cours et des compétences que les étudiants recevront.

Source: https://habr.com/ru/post/fr451912/


All Articles