Apresento a você a tradução do artigo
“Criamos música: quando soluções simples superam o aprendizado profundo em eficácia” sobre como a inteligência artificial é usada para criar música. O autor não usa redes neurais para gerar música, mas aborda a tarefa com base no conhecimento da teoria da música, com base na melodia e harmonia. Outra característica do artigo é o método de comparação de obras musicais baseadas em matrizes de auto-similaridade. Essa abordagem, é claro, não é exaustiva, mas é útil como uma etapa intermediária para gerar música de alta qualidade usando métodos de aprendizado de máquina.

Hoje, o uso da inteligência artificial na criatividade tornou-se cada vez mais comum para fins comerciais e de entretenimento e já deixou de surpreender o público. Por um lado, essas são ferramentas para mudar o estilo de uma imagem como Prizma. Por outro lado, uma rede neural, cujo produto foi vendido como uma imagem no leilão da Christie por 432,5 mil dólares. Não podemos deixar de recordar nosso especialista doméstico na geração de música através do aprendizado de máquina, Ivan Yamshchikov, que há vários anos apresentou o projeto de Defesa Neural (mais detalhes podem ser encontrados
aqui , e esta é
uma entrevista com Ivan em Habré ). Outro bom exemplo de uso de redes neurais para gerar música é o artigo
"Os Androids sonham com o punk elétrico?" Como eu ensinei a rede neural a escrever música ”de Artezio .
Além de entender a teoria do aprendizado de máquina, o uso da inteligência artificial para resolver problemas criativos também requer experiência no domínio da arte. Isso torna o projeto na junção das duas áreas particularmente multifacetado e interessante, mas também vulnerável a críticas de dois lados, porque o projeto pode ser pego no fogo cruzado de comentários de críticos de arte e cientistas de dados.
Expandindo meus horizontes como parte do tópico do uso da inteligência artificial na música, deparei-me com um artigo
"Criamos música: quando soluções simples superam o aprendizado profundo em eficiência" , uma tradução que gostaria de apresentar à comunidade Habr. Uma das vantagens deste artigo para mim foi que o autor não usa redes neurais como uma caixa preta, mas aborda a tarefa de gerar música com base no conhecimento da teoria musical, com base na melodia e na harmonia. Neste artigo, nem as redes neurais recorrentes (RNN, LSTM) nem as redes contraditórias generativas (GANs) são usadas - todos esses métodos oferecem resultados surpreendentes (por exemplo, no artigo
"Os Androids sonham com Pank elétrico? Como eu ensinei a rede neural a escrever música" ) e os usamos ativamente na solução de nossos problemas no
CleverData . O autor enfatizou modelos baseados em cadeias de Markov que permitem trabalhar com as probabilidades de transição do estado atual de uma obra musical para a seguinte. Os métodos utilizados pelo autor têm uma vantagem adicional: o autor não precisou sacrificar a interpretabilidade do resultado pelo uso de um algoritmo popular e da moda.
Outra característica do artigo que chamou minha atenção foi um método interessante para comparar obras musicais baseadas em matrizes de auto-similaridade. Se a estrutura de uma música puder ser representada como uma matriz de auto-similaridade, outra medida quantitativa de comparação de músicas será exibida.
* * *
Resumo : como me deparei com um problema, usando o aprendizado profundo para criar música, e como o resolvi, criando minha própria solução.
Planejar
Desafio : como tive problemas ao usar técnicas de aprendizado profundo para criar música pop.
Solução : como criei minha própria máquina de fazer música que poderia competir com o aprendizado profundo, mas com base em soluções mais simples.
Avaliação : como eu criei uma métrica de avaliação que poderia provar matematicamente que minha música é "mais parecida com pop" do que aquela criada por meio do aprendizado profundo.
Generalização : como encontrei uma maneira de aplicar minha solução a problemas não relacionados à produção musical.
Cereja no Bolo
Criei um modelo probabilístico simples que gera música pop. Além disso, usando métricas objetivas, posso dizer com segurança que a música criada pelo meu modelo é mais parecida com a música pop do que a criada usando técnicas de aprendizado profundo. Como eu fiz isso? Em parte, consegui isso concentrando-me no que é a essência da música pop para mim: na relação estatística entre harmonia e melodia.
Uma melodia é um vocal, um motivo. Harmonia é acordes, uma sequência de acordes. No piano, a melodia é tocada com a mão direita e a harmonia com a esquerda.Desafio
Antes de aprofundar no relacionamento deles, deixe-me primeiro descrever o problema. O projeto começou com o meu desejo de tentar criar música através do aprendizado profundo - IA, como os leigos chamam. Rapidamente cheguei ao LSTM (memória de longo prazo), uma das versões da rede neural recorrente (RNN), que é muito popular para gerar textos e fazer música.
Mas quanto mais eu leio o assunto, mais eu comecei a duvidar da lógica do uso da RNN e suas variações para criar música pop. Essa lógica parecia basear-se em várias suposições sobre a estrutura interna da música (pop), com as quais eu não podia concordar completamente.
Uma suposição específica é uma relação independente entre harmonia e melodia (para uma definição das duas, veja acima).
Por exemplo, considere a publicação da Universidade de Toronto em 2017,
Song from Pi: A Musically Plausible Network for Pop Music Generation (Han Chu et al.). Neste artigo, os autores claramente "sugerem ... os acordes
não dependem da melodia" (itálico meu). Com base nessa premissa, os autores construíram um modelo complexo de RNN multicamada. Uma camada separada é selecionada para a melodia, na qual as notas são criadas (camada chave, camada pressionada), independentemente da camada de acordes (Camada de acordes). Além da independência, este modelo em particular assume que a harmonia se baseia na melodia. Em outras palavras, a harmonia depende da melodia ao gerar notas.
Modelo RNN proposto por Han Chu. Cada camada é responsável por um aspecto separado da música.Essa maneira de modelar parece muito estranha para mim, porque é completamente diferente da maneira como as pessoas se aproximam para escrever música pop. Como pianista de uma escola clássica, nunca pensei em compor uma melodia sem antes indicar harmonia. A harmonia define e corta uma melodia. O Axis of Awesome, em seu vídeo viral, já demonstrou a veracidade dessa ideia.
Este vídeo demonstra a principal característica da música pop ocidental: essa harmonia, esses quatro acordes afetam fortemente qual será a melodia no final. Na linguagem da ciência de dados, a probabilidade condicional controla e determina a relação estatística entre harmonia e melodia. Isso acontece porque as notas da melodia dependem naturalmente das notas da harmonia. Assim, pode-se argumentar que as notas de harmonia indicam inerentemente quais notas melódicas podem ser selecionadas em uma música específica.
Solução
Eu gosto de encontrar soluções originais para problemas complexos. Por isso, decidi construir meu próprio modelo, o que poderia, à sua maneira, refletir a rica estrutura dos dados musicais. Comecei focando em uma força probabilística predeterminada que governa o relacionamento entre diferentes tipos de notas musicais. Por exemplo, mencionei acima a relação "vertical" entre harmonia e melodia.
Dados (Processando)
Como dados, usei 20 músicas pop ocidentais diferentes no formato midi (uma lista completa de músicas pode ser encontrada
aqui ).
Usando a biblioteca python music21, analisei os arquivos midi usando a cadeia Markov. Isso me permitiu destacar as relações estatísticas entre os diferentes tipos de notas na minha entrada. Em particular, calculei as probabilidades de transição das minhas notas musicais. Em essência, isso significa que, observando a transição de notas de uma para outra, podemos calcular a probabilidade de que essa transição ocorra. (Explicação mais detalhada abaixo)
Midi: versão digital da músicaPrimeiro, extraí as probabilidades “verticais” da transição entre notas de harmonia e notas de melodia. Também calculei todas as probabilidades de transição “horizontal” entre as notas da melodia de acordo com o conjunto de dados. Eu executei este procedimento para notas de harmonia. A tabela abaixo mostra um exemplo de três matrizes de transição diferentes entre diferentes tipos de notas nos dados da música.
Opções de transição, opções. Superior - entre as notas de harmonia e melodia. Meio - entre as notas da melodia. Inferior - entre as notas de harmonia.Modelo
Com base nesses três modelos de probabilidade, meu modelo atuará da seguinte forma:
- Seleciona uma nota de harmonia arbitrária disponível;
- Seleciona uma nota de melodia com base em uma nota de harmonia usando a primeira matriz probabilística;
- Seleciona a nota da melodia com base na nota da melodia anterior, de acordo com a segunda matriz de probabilidade;
- Repita o passo 3 até atingir um determinado fim;
- Seleciona uma nova nota de harmonia, contando com a nota anterior de harmonia, usando a terceira matriz de probabilidade;
- Repita as etapas 1 a 4 até atingir a conclusão.
Um exemplo específico da aplicação do algoritmo:
- O programa selecionou uma nota harmônica (F).
- Esta nota possui 4 variações de notas de melodia. Utilizando a primeira matriz de transição, o sistema seleciona a nota (C), dada a alta probabilidade de seu uso (24,5%).
- Esta nota (C) vai para a segunda matriz de transição, interrompendo a seleção na nota da melodia (A), com base em sua frequência (88%).
- A etapa 3 será repetida até que o processo atinja um ponto final predefinido;
- Uma nota de harmonia (F), referente à terceira matriz probabilística, seleciona a próxima nota harmônica. Será (F) ou (C), dada sua semelhança.
- As etapas 1 a 4 serão repetidas até o processo ser concluído.
Aqui você pode ouvir um exemplo de música pop criada desta maneira:
Classificação
É aqui que a parte difícil começa - como avaliar diferentes modelos. No final, meu artigo sugere que probabilidades simples podem ser mais úteis que redes neurais. Mas como avaliamos a diferença entre o meu modelo e o modelo construído por uma rede neural? Como podemos objetivamente dizer que minha música é mais parecida com pop do que com música escrita pela AI?
Para responder a essa pergunta, precisamos primeiro determinar o que é música pop. Já expressei minha primeira definição: a relação estatística entre harmonia e melodia. Mas há outro fator determinante na música pop - é claramente marcado o começo, o meio, o fim da música (introdução, dístico, ponte, refrão, conclusão etc.), repetidos ao longo da música.
Por exemplo, é mais provável que a linha "deixe ir, deixe ir, não aguente mais ..." é mais provável que seja encontrada na parte do meio do que no final ou no começo. E será repetido três vezes durante a música.
Com isso em mente, podemos recorrer à chamada matriz de auto-similaridade. Simplificando, a matriz de auto-similaridade expressa matematicamente o começo, o meio e o fim de uma música. Abaixo está a matriz da música Falling Slowly do filme Once.
Cada segmento pequeno representa uma nota. Cada bloco grande a 45 graus representa uma parte da música.
O primeiro cluster escuro representa o início da música, o próximo amarelo representa o próximo segmento da música. O primeiro e o terceiro aglomerados são de cores semelhantes, pois são semelhantes entre si, assim como o segundo e o quarto.
Eu verifiquei vinte músicas pop dessa maneira e depois criei uma cópia da máquina (na medida do possível) de suas estruturas.
Resultados
Os resultados falam por si. Antes de usar a matriz de auto-similaridade, meu programa produzia sons sem uma estrutura interna repetitiva. No entanto, depois de copiar a estrutura dos dados de origem, minha música começou a ficar assim:
Antes e depois da aplicação da matriz de auto-similaridadeCompare com a matriz de auto-similaridade da música criada por uma rede neural da Universidade de Toronto:
É assim que diferentes modelos podem ser comparados e avaliados - com base em suas matrizes de auto-similaridade!
Generalização
A última parte da tarefa que me propus foi uma generalização. Com esta palavra, quero dizer: como podemos universalizar meu modelo, com base em dados de entrada, para que possa ser aplicado a outras situações não relacionadas à geração de música pop? Em outras palavras, há mais alguma coisa estruturalmente semelhante ao meu gerador de pop?
Depois de muito pensar, percebi que há outra invenção da humanidade, de estrutura semelhante - as letras das músicas pop!
Por exemplo, aqui está um trecho de Eu vou ser Edward McCain:
Eu serei seu ombro chorando
Eu serei amor suicida
Ficarei melhor quando for mais velho
Eu serei o maior fã da sua vidaAnalisaremos os ossos usando as mesmas técnicas de aprendizado de máquina. Podemos contar 'eu serei' como a primeira palavra-fonte no modelo de linguagem. Ele será usado para gerar 'seu', de onde sai 'chorando', de onde 'ombro' já aparece.
Surge então uma pergunta muito importante: a primeira palavra da próxima frase depende da última palavra da anterior? Em outras palavras, existe uma relação entre a última palavra de uma frase e a primeira da próxima?
Eu acredito que a resposta é não. A frase termina com 'ombro', a próxima começa com a repetição da primeira - 'eu serei'. Isso se deve ao fato de que as primeiras palavras de cada sentença são repetidas intencionalmente, o que significa que entre as primeiras palavras de cada sentença há uma relação condicional semelhante. Essas primeiras palavras se tornam o ponto de ativação da sequência das seguintes palavras.
Eu acho que essa é uma descoberta incrível. Parece que tanto a música pop quanto as letras têm uma estrutura interna que depende do conteúdo. Realmente ótimo?
Assista ao projeto no github* * *
Obviamente, a abordagem proposta no artigo não pode ser considerada exaustiva. Separadamente, vale a pena notar que os métodos de trabalho com textos agora estão passando por uma melhora e estão se desenvolvendo ativamente, de modo que o olhar do autor para a letra não surpreenda os especialistas em PNL (Natural Language Processing). No entanto, o artigo original do autor parece uma etapa intermediária útil para gerar música de alta qualidade usando métodos de aprendizado de máquina.
Recentemente, várias aplicações baseadas em redes neurais que geram música foram oferecidas ao público em geral. Por exemplo, é possível gerar música techno no site:
eternal-flow.ru . O autor da solução também oferece um aplicativo móvel para gerar música. Há outro aplicativo para gerar música em dispositivos móveis:
mubert.com . Uma solução interessante é dedicada a um gênero de death metal mais dinâmico. Seus criadores, DadaBots, transmitem no YouTube um
fluxo contínuo de música gerado por uma rede neural . Ao mesmo tempo, o DadaBots não para por aí e abre ao público
a música artificial no estilo do punk e do rock progressivo . E, é claro, não se pode ignorar os resultados do OpenAI, que oferece a todos que desejam experimentar música em uma ampla estrutura de gênero, de Mozart a Beatles. No
openai.com, você pode ouvir como seria o desenvolvimento do tema Harry Potter no estilo de Frank Sinatra ou Pyotr Ilyich Tchaikovsky.
O sucesso das redes neurais modernas na geração da música dá esperança de que, no futuro próximo, a inteligência artificial seja capaz de competir em igualdade de condições com os seres humanos em outra área além de Go e Dota2. Talvez tenhamos sorte de estar à altura do momento em que um candidato de redes neurais possa falar no Eurovision e competir com os participantes do couro pela vitória.
Os trabalhos do Grupo de Empresas LANIT podem ser encontrados aqui.