• Nenhum resultado encontrado

Um estudo sobre a utilização de redes neurais recorrentes para composição musical

N/A
N/A
Protected

Academic year: 2021

Share "Um estudo sobre a utilização de redes neurais recorrentes para composição musical"

Copied!
47
0
0

Texto

(1)

UNIVERSIDADE FEDERAL FLUMINENSE

RONNALD REZENDE MACHADO

UM ESTUDO SOBRE A UTILIZAÇÃO DE REDES NEURAIS

RECORRENTES PARA COMPOSIÇÃO MUSICAL

Niterói

2018

(2)

RONNALD REZENDE MACHADO

UM ESTUDO SOBRE A UTILIZAÇÃO DE REDES NEURAIS

RECORRENTES PARA COMPOSIÇÃO MUSICAL

Trabalho de Conclusão de Curso submetido ao Curso de Tecnologia em Sistemas de Computação da Universidade Federal Fluminense como requisito parcial para obtenção do título de Tecnólogo em Sistemas de Computação.

Orientadora:

Aline Paes

NITERÓI

2018

(3)
(4)

RONNALD REZENDE MACHADO

UM ESTUDO SOBRE A UTILIZAÇÃO DE REDES NEURAIS

RECORRENTES PARA COMPOSIÇÃO MUSICAL

Trabalho de Conclusão de Curso submetido ao Curso de Tecnologia em Sistemas de Computação da Universidade Federal Fluminense como requisito parcial para obtenção do título de Tecnólogo em Sistemas de Computação.

(5)

Dedico este trabalho aos meus pais, a minha filha e a minha esposa.

(6)

AGRADECIMENTOS

Aos meus pais por terem me proporcionado a melhor educação possível dentro de suas possibilidades.

A minha filha e a minha esposa, não só pelo afeto, mas também por me ensinarem coisas que eu não seria capaz de aprender sozinho em mil vidas.

A Roberto e a Roseli pelo tratamento que sempre me deram.

Aos meus colegas de trabalho pela troca de experiências e boas influências.

A Professora Aline Paes por ter me aceitado como seu orientando.

Aos grandes filósofos, escritores e compositores que me fizeram companhia ao longo dos últimos anos.

A todos os homens e mulheres que ao longo da história da humanidade contribuíram de maneira direta ou indireta para a construção do maravilhoso corpo de conhecimento ao qual tive contato durante a graduação.

(7)

“Cogito, ergo sum”

(8)

RESUMO

O uso de computadores para a composição musical desperta interesse desde a década de 50 quando pesquisadores da Universidade de Illinois desenvolveram um algoritmo capaz de gerar uma nova composição. Com o passar das décadas e o avanço na computação, outras técnicas para composição musical através do computador foram exploradas, sobretudo fazendo uso de Redes Neurais Artificiais. O presente trabalho apresenta um estudo sobre o tema que culmina na criação de um software capaz de gerar uma nova composição baseado em uma das Sonatas para piano de Ludwig van Beethoven.

(9)

ABSTRACT

The use of computers for musical composition has aroused interest since the 1950s when researchers at the University of Illinois have developed an algorithm capable of generating a new composition. With the passing of the decades and the advance in the computation, other techniques for musical composition through the computer were explored, mainly making use of Artificial Neural Networks. The present work presents a study on the theme that culminates in the creation of software capable of generating a new composition based on one of Ludwig van Beethoven 's Piano Sonatas.

(10)

LISTA DE ILUSTRAÇÕES

Figura 1: Ruído X Som... 17

Figura 2 : Exemplos de propriedades do som ...18

Figura 3 : Exemplo de partitura ...21

Figura 4 : Clave de sol e clave de fá ... 21

Figura 5 : Compassos ... 21

Figura 6 : Tempos musicais ... 22

Figura 7 : Batidas por Minuto ... 22

Figura 8 : MIDI X Nota ... 23

Figura 9 : Neurônio Artificial por McCulloch e Pitts ...24

Figura 10 : Função Heaveside ...24

Figura 11 : Funções de ativação ...25

Figura 12 : Redes com propagação para frente ...26

Figura 13 : Rede Neural Recorrente ...26

Figura 14 : Rede LSTM ... 28

Figura 15 : Portão de esquecimento...28

Figura 16 : Portão de entrada – Etapas 1 e 2 ...28

Figura 17 : Portão de entrada – Etapas 3 ...29

Figura 18 : Portão de saída ... 29

Figura 19 : Cadeia de Markov ... 30

Figura 20 : Camada de Saída ... 36

Figura 21 : Função Softmax ... 37

Figura 22 : Arquitetura proposta para a geração de composições musicais ...38

Figura 23 : Normalização ... 39

Figura 24 : Função de mapeamento ...42

Figura 25 : Elementos e compasso ... 44

Figura 26 : Atualização das entradas ...44

(11)

LISTA DE TABELAS

Tabela 1: Notas... 19 Tabela 2: Frequências... 20 Tabela 3 : Representação dos dados...40

(12)

LISTA DE GRÁFICOS

(13)

LISTA DE ABREVIATURAS E SIGLAS

RNA – Rede Neural Artificial RNR – Rede Neural Recorrente

BPTT – Back Propagation Through Time LSTM – Long Short-Term Memory

(14)

SUMÁRIO – etapa final

RESUMO ... 8 ABSTRACT ... 9 LISTA DE ILUSTRAÇÕES ... 10 LISTA DE TABELAS ... 11 LISTA DE GRÁFICOS ... 12

LISTA DE ABREVIATURAS E SIGLAS ... 13

1 INTRODUÇÃO ... 15

2 FUNDAMENTAÇÃO TEÓRICA ... 17

3 TRABALHOS RELACIONADOS ... 30

4 PROCESSO DE COMPOSIÇÃO ARTIFICIAL ... 33

(15)

1 INTRODUÇÃO

No processo de composição um músico busca encontrar coerência entre os elementos musicais. Ciente da grande gama de alturas, timbres, intensidades e durações disponíveis o músico tende a fazer uso do conhecimento adquirido por estudo, experiência ou uma combinação de ambos para que a sua inspiração ou intenção tome forma através das vibrações sonoras. Mesmo não sendo um processo exato algumas convenções musicais foram estabelecidas, não só para que o conhecimento musical pudesse ser transmitido através do tempo mas também como forma de diminuir o nível de abstração, tornando possível um melhor entendimento do fenômeno musical.

Inspiradas no funcionamento do cérebro humano as Redes Neurais Artificiais são sistemas capazes de reconhecer padrões a partir de exemplos. Por ter tal propriedade as RNAs vem sendo usadas com sucesso em problemas que envolvem identificação de padrões, como no reconhecimento de imagens ou no reconhecimento de voz[1].

Estudos envolvendo RNAs e composição musical já foram realizados tendo diferentes perspectivas sobre a representação dos sons e arquiteturas de RNAs. O trabalho em questão tem por objetivo verificar se a solução proposta é capaz de compor músicas com coerência tendo como base a Sonata para piano n.º 14, Op. 27 n.º 2 de autoria de Ludwig van Beethoven. Cada componente das músicas de treinamento é tratado como uma cadeia de caracteres contendo uma dimensão, ou seja, apenas a dimensão da altura é considerada durante a fase de treinamento da RNA.

No capítulo 2 serão introduzidas definições teóricas sobre o fenômeno musical bem como sobre as RNAs. No capítulo 3 serão apresentados alguns trabalhos relacionados ao tema, onde é possível observar que soluções que fazem uso de Redes Neurais Recorrentes do tipo LSTM conseguem obter bons resultados na composição, sobretudo em dependências de longo prazo como pontuado por Eck e Schmidhuber[15].

A Arquitetura da RNA proposta no trabalho possui três camadas, sendo duas camadas do tipo LSTM e uma camada final do tipo completamente conectada. Ao longo das interações na fase de treinamento a RNA apresentou um bom decaimento de erro. Detalhes da arquitetura, treinamento, desenvolvimento,

(16)

execução e manipulação dos dados obtidos e exemplos gerados(visual e auditivo) são encontrados no capítulo 4. No capítulo 5 serão apresentadas a conclusão e propostas para trabalhos futuros.

(17)

2 FUNDAMENTAÇÃO TEÓRICA

O objetivo deste capítulo é apresentar alguns conceitos e definições sobre Teoria Musical e também introduzir conceitos básicos sobre Redes Neurais Artificiais.

Por fazer parte do campo da arte, a música é associada diretamente com criatividade e inspiração. Poucos se atentam ao fato de que a harmonia musical é estruturada e que as composições musicais seguem uma determinada lógica. Segundo Bohumil Med [2] música é “a arte de combinar os sons simultânea e sucessivamente, com ordem, equilíbrio e proporção do tempo” e Maura Penna[3] define a música como “uma forma de arte que tem como material básico o som” . O som é a vibração das partículas de ar, que viajam para os ouvidos a partir da vibração do objeto que o produz. Essas vibrações de som no ar são conhecidas como ondas sonoras. O que faz um som diferente do outro é a forma de sua onda. A figura 1 compara a forma de onda de um ruído com o de uma nota musical e podemos ver que notas musicais possuem forte regularidade em sua forma de onda enquanto sons não musicais possuem grandes variações[2].

Figura 1: Ruído X Som

(18)

2.1 PROPRIEDADES DO SOM MUSICAL

Todo som musical possui simultaneamente as seguintes propriedades: • Duração - É a prolongação do som, ou seja, é o que se propaga no ar através

das ondas sonoras.

• Intensidade - É a propriedade do som ser forte ou fraco, dependendo da

força empregada na sua repercussão.

• Altura - É medida em Hertz e é a propriedade do som de ser grave, médio ou agudo como observado na figura 2.

• Timbre - É a característica do som de cada instrumento. É o timbre que nos permite reconhecer a origem do som, de que instrumento esse som partiu.[2]

Figura 2 : Exemplos de propriedades do som

2.2 NOTAÇÃO MUSICAL

Com o intuito de representar a música através da escrita foram adotadas algumas convenções, que serão descritas a seguir.

2.2.1 NOTAS

A nota é a representação escrita da altura. Até o século XI a nota era a única característica que possuía representação escrita[2]. O conceito de nota é 18

(19)

representado pelas letras do alfabeto e os acidentes1 são representados por

#(sustenido) e ♭(bemol).

Tabela 1: Notas

A Lá

A# - B♭ Lá Sustenido -Si bemol

B Si

C Dó

C#-D♭ Dó sustenido - Ré bemol

D Ré

D# - E♭ Ré sustenido - Mi bemol

E Mi

F Fá

F# - G♭ Fá Sustenido - Sol bemol

G Sol

G# - A♭ Sol sustenido - Lá bemol

A representação das notas referenciadas na tabela 1 é incompleta pois a mesma não é capaz de representar todas as frequências diferentes que uma mesma nota pode ter.

Por exemplo a nota Lá pode ser encontrada nas seguintes frequências: 55.0Hz, 110.0Hz, 220.0Hz, 440.0Hz, 880.0Hz, 1760.0Hz e 3520.0Hz, ou seja, quando uma determinada frequência encontra a proporção 2:1 temos a mesma nota em questão, porém com altura diferente.

1

É o menor intervalo existente entre dois sons que o ouvido humano ocidental pode perceber e classificar.

(20)

Tabela 2: Frequências

2.2.2 ESCALA NATURAL E ACORDE

Por definição a escala natural é uma sequência de sete notas diferentes entre si e uma oitava nota que é a repetição da primeira e são majoritariamente separadas por uma ou duas notas[2]. A escala natural do elemento ré se dá por: (D-E-F#-G-A-B-C#-D).

A primeira nota se chama tônica pois, é ela quem dá o nome à escala, a terceira nota se chama mediante e está localizada entre as notas mais importantes que são a quinta e a primeira. Encerrando o conjunto das notas mais importantes na escala natural temos a quinta nota que é chamada de dominante.

O acorde é um conjunto de duas ou mais notas tocadas de uma só vez. O conjunto de notas F#-A) representam o acorde ré maior e o conjunto de notas (D-F-A) formam o acorde ré menor. Muitos tipos de acordes podem ser formulados a partir da escala natural.

Uma representação musical escrita mais complexa pode ser encontrada através das partituras.

Nota1 Frequência(Hz) Nota2 Frequência Nota3 Frequência Nota4 Frequência Nota5 Frequência Nota6 Frequência Nota7 Frequência

A 55 A 110 A 220 A 440 A 880 A 1760 A 3520 A /B♯ ♭ 58.27 A /B♯ ♭ 116.54 A /B♯ ♭ 233.08 A /B♯ ♭ 466.16 A /B♯ ♭ 466.16 A /B♯ ♭ 932.32 A /B♯ ♭ 1864.64 B/C♭ 61.74 B/C♭ 123.48 B/C♭ 246.96 B/C♭ 493.92 B/C♭ 493.92 B/C♭ 987.84 B/C♭ 1975.68 B /C♯ 65.41 B /C♯ 130.82 B /C♯ 261.64 B /C♯ 523.28 B /C♯ 523.28 B /C♯ 1046.56 B /C♯ 2093.12 C /D♯ ♭ 69.3 C /D♯ ♭ 138.6 C /D♯ ♭ 277.2 C /D♯ ♭ 554.4 C /D♯ ♭ 554.4 C /D♯ ♭ 1108.8 C /D♯ ♭ 2217.6 D 73.42 D 146.84 D 293.68 D 587.36 D 587.36 D 1174.72 D 2349.44 D /E♯ ♭ 77.78 D /E♯ ♭ 155.56 D /E♯ ♭ 311.12 D /E♯ ♭ 622.24 D /E♯ ♭ 622.24 D /E♯ ♭ 1244.48 D /E♯ ♭ 2488.96

E/F♭ 82.41 E/F♭ 164.82 E/F♭ 329.64 E/F♭ 659.28 E/F♭ 659.28 E/F♭ 1318.56 E/F♭ 2637.12

E /F♯ 87.31 E /F♯ 174.62 E /F♯ 349.24 E /F♯ 698.48 E /F♯ 698.48 E /F♯ 1396.96 E /F♯ 2793.92

F /G♯ ♭ 92.5 F /G♯ ♭ 185 F /G♯ ♭ 370 F /G♯ ♭ 740 F /G♯ ♭ 740 F /G♯ ♭ 1480 F /G♯ ♭ 2960

G 98 G 196 G 392 G 784 G 784 G 1568 G 3136

G /A♯ ♭ 103.83 G /A♯ ♭ 207.66 G /A♯ ♭ 415.32 G /A♯ ♭ 830.64 G /A♯ ♭ 830.64 G /A♯ ♭ 1661.28 G /A♯ ♭ 3322.56

(21)

2.2.3 PARTITURAS

A partitura é estruturada por cinco linhas horizontais paralelas e a maioria das notas e seus respectivos tempos são alocados sobre essas linhas ou entre elas. Linhas extras podem ser adicionadas para representar notas mais altas ou notas mais baixas como pode ser observado na figura 3. Uma clave é colocada no início para dar nome as notas.

Figura 3 : Exemplo de partitura

Para facilitar a leitura podem ser usadas outras claves como demonstrado na figura 4. Elas podem ser de três tipos: Sol(mais comum), Fá e Dó.

Figura 4 : Clave de sol e clave de fá

Linhas verticais dividem a partitura em pequenas seções chamadas de compassos. O valor do compasso é representado por uma fração após a clave como exemplificado na figura 5.

Figura 5 : Compassos

(22)

Os valores que representam a duração dos sons musicais no compasso são chamados de figuras e estão representados na figura 6.

Figura 6 : Tempos musicais

Para determinar com absoluta certeza a duração exata do tempo, os compositores e executantes usam um aparelho denominado Metrônomo criado por Mazel em 1810. As oscilações geradas pelo METRÔNOMO são contadas por minuto (BPM) e determinam o andamento da música. Nas partituras essa informação aparece no topo opcionalmente iniciada pelas iniciais M.M, a figura musical base e um valor numérico como observado na figura 7.

Figura 7 : Batidas por Minuto

2.2.4 REPRESENTAÇÃO DIGITAL

Existem diversas formas digitais para a representação dos elementos musicais, como encontrado nos padrões MIDI, MUSICXML e ABCnotation. O trabalho em questão faz uso do padrão MIDI(interface digital para instrumentos musicais) pois, é o padrão mais popular. No padrão MIDI cada nota é representada por um valor numérico (Numero MIDI) acompanhada de outros valores como a duração das notas como demonstrado na figura 8.

(23)

Figura 8 : MIDI X Nota

2.3 REDES NEURAIS ARTIFICIAIS – RNAS

Inspiradas no funcionamento do cérebro humano as Redes Neurais Artificiais oferecem uma alternativa à computação algorítmica, pois são sistemas de processamento paralelo e distribuído formadas por unidades de processamento mais simples, chamados neurônios artificiais, que por sua vez calculam determinadas funções matemáticas. Esses neurônios situam-se em camadas, sendo interligadas por conexões, as quais são associadas a pesos. Estes pesos armazenam o conhecimento representado na rede, servindo posteriormente como parâmetros. A RNA possui a capacidade de aprender por meio de exemplos que são conhecidos por dados de treinamento. Mediante a fase de treinamento, a rede armazena um padrão de aprendizado capaz de generalizar um determinado problema[4].

2.3.1 NEURÔNICO ARTIFICIAL

Proposto por McCulloch e Pitts em 1943[5] o neurônio artificial tenta simular uma célula do sistema nervoso através de funções matemáticas. Os dados 23

(24)

de treinamento tem contato com o neurônio por n entradas. O processamento desses dados consiste em uma combinação linear das entradas onde cada entrada está associada a um peso w que reflete a importância da entrada x como observado na figura 9.

Figura 9 : Neurônio Artificial por McCulloch e Pitts

O resultado dessa combinação linear é o valor b = x1w1+x2w2+…+xnwn . A ativação do neurônio se dá pela função de ativação que depende do valor resultante da soma ponderada das entradas. A função usada no modelo de McCulloch e Pitts, figura 10, foi a função Heaveside (função de escada) que consiste em y =1 se b ≥ 0 e y=0, caso contrário.

Figura 10 : Função Heaveside

A função escada não é a única maneira de se produzir saída em um perceptron. Na Figura 11 estão alguns outros tipos de ativações populares.

(25)

Figura 11 : Funções de ativação

2.3.2 ARQUITETURA DAS REDES NEURAIS ARTIFICIAIS

O potencial e flexibilidade do cálculo baseado em redes neurais vêm da criação de conjuntos de neurônios que estão interligados entre si. Esse paralelismo de elementos com processamento local cria a “inteligência” global da rede. Um elemento da rede recebe um estímulo nas suas entradas, processa esse sinal e emite um novo sinal de saída que por sua vez, é recebido pelos outros elementos[6].

As redes neurais artificiais se diferenciam pela sua arquitetura e pela forma como os pesos associados às conexões são ajustados durante o processo de aprendizado. A arquitetura de uma rede neural restringe o tipo de problema no qual a rede poderá ser utilizada e é definida pelo número de camadas (camada única ou múltiplas camadas), pelo número de nós em cada camada, pelo tipo de conexão entre os nós (redes com propagação para frente e redes recorrentes ) e por sua topologia[7] .

2.3.3 REDES COM PROPAGAÇÃO PARA FRENTE

No caso das redes de propagação para frente o fluxo de informação é unidirecional. Neurônios que recebem a informação simultaneamente agrupam-se em camadas. Camadas que não estão ligadas às entradas e nem às saídas da rede chamam-se camadas ocultas ou escondidas.

(26)

Figura 12 : Redes com propagação para frente

Na figura 12 é possível observar uma rede de propagação para frente capaz de realizar uma classificação binária para dados de entrada com três parâmetros. Os dados de treinamento são apresentados a camada de entrada que distribui para a camada oculta. As camadas ocultas e a camada de saída são responsáveis por calcular os pesos da rede, tornando a classificação possível.

2.3.4 REDES NEURAIS RECORRENTES – RNRs

Redes Neurais Recorrentes têm ligações entre os neurônios sem restrições, ou seja, são redes em que camadas anteriores podem se alimentar da saída das camadas posteriores a elas como observado na figura 13. Ao contrário das redes sem realimentação, o comportamento dinâmico desempenha o papel fundamental nesse modelo. Em alguns casos os valores de ativação da rede passam por um processo de relaxação até chegarem a um estado estável.

Figura 13 : Rede Neural Recorrente

(27)

2.3.5 BACKPROPAGATION THROUGH TIME - BPTT

Backpropagation Through Time, ou BPTT é um algoritmo de treinamento usado para atualizar os pesos das RNRs.

Uma rede neural recorrente é exposta a uma entrada a cada passo e prevê uma saída. Conceitualmente, o BPTT trabalha passando por todos os passos de entrada. Cada passo tem uma entrada, uma cópia da rede e uma saída. Os erros são calculados e acumulados para cada passo. Após esse processo, a rede é recuperada e os pesos são atualizados.

Espacialmente, cada passo da RNR pode ser visto como uma camada adicional dada a dependência da ordem do problema e o estado interno do passo anterior é tomado como entrada no passo seguinte. O BPTT pode ser computacionalmente caro à medida que o número de passos aumenta. Caso as sequências de entrada sejam compostas por milhares de passos, então este será o número de derivadas necessárias para uma única atualização de peso. Isso pode fazer com que os pesos desapareçam ou explodam (gradiente que desaparece) tornando a aprendizagem lenta e a habilidade do modelo pouco precisa.

2.3.6 LONG SHORT-TERM MEMORY – LSTM

Redes do tipo LSTM tem como principal motivação resolver o problema do gradiente que desaparece encontrado nas redes BPTT. O fluxo de erro constante implementado através das célula LSTM são fundamentais para que o decaimento do erro ao longo do tempo não aconteça. Isso permite que a rede aprenda uma grande quantidade de padrões sem degradação no decorrer do tempo[8].

O fluxo de erro constante nas LSTMs é possível por meio de estruturas chamadas portões como mostrado na figura 14[9]. Uma célula LSTM possui três portões compostos por ao menos uma camada sigmoid e uma operação de multiplicação.

(28)

Figura 14 : Rede LSTM

A primeira camada sigmoid intitulada “portão de esquecimento” faz uso da nova entrada em conjunto com a saída da célula anterior para determinar qual informação vai ser mantida e qual informação será descartada. O processo é ilustrado na figura 15[9].

Figura 15 : Portão de esquecimento

A segunda camada sigmoid chamada de “portão de entrada” trabalha em conjunto com a camada tanh com o objetivo de definir qual informação será guardada na célula e esse processo ocorre em três etapas. A primeira etapa envolve uma operação com a camada sigmoid onde é definido qual valor será atualizado. Na segunda etapa um vetor com os novos valores é criado. O processo pode ser observado na figura 16[9].

Figura 16 : Portão de entrada – Etapas 1 e 2

A terceira etapa envolvendo o portão de entrada consiste na atualização do estado da célula. O estado anterior da célua é multiplicado por ft sendo possível deletar os dados escolhidos nos passos anteriores. Em adição os resultados

(29)

gerados pelas etapas 1 e 2 do portão de entrada são múltiplicados. Esse processo pode ser observado na figura 17[9].

Figura 17 : Portão de entrada – Etapas 3

A terceira camada sigmoid chamada de “portão de saída” também trabalha em conjunto com uma camada tanh porém com o objetivo de definir qual será a saída da célula LSTM[9]. Os valores resultantes são definidos pela saída da camada sigmoid multiplicada pela saída da camada tahn como observado na figura 18[9].

Figura 18 : Portão de saída

3 TRABALHOS RELACIONADOS

A composição de músicas fazendo uso do computador teve início com Hiller e Issacson em 1959. Para alcançar esse feito, eles desenvolveram um 29

(30)

software baseado nas Cadeias de Markov[10] como pode ser observado na figura 15.

As cadeias de Markov consistem em uma máquina de estados, onde o próximo estado depende de um ou mais estados anteriores. O número de eventos anteriores que são considerados em cada estágio é conhecido como a ordem da cadeia, ou seja, uma cadeia de ordem 1 é aquela que leva em consideração o primeiro estado anterior, a de ordem 2 leva os dois estados anteriores em consideração e assim sucessivamente.

Figura 19 : Cadeia de Markov

Com o avanço do hardware, outras técnicas para composição autônoma foram utilizadas posteriormente, sobretudo técnicas que fazem uso de Redes Neurais Artificiais.

3.1 COMPOSIÇÕES USANDO REDES NEURAIS ARTIFICIAIS

Em 1991 Todd[11] fez uso de uma rede neural recorrente (do tipo Back Propagation Through Time - BPTT) para construir um compositor. Usando essa capacidade, o autor explora a nota em função do tempo, ou seja, a música é gerada sequencialmente onde a nota N+1 depende da nota N também em relação ao espaço que ocupa na composição. A rede foi construída de modo que a camada de 30

(31)

entrada possui neurônios adicionais, denomidados de neurônios de planejamento que são responsáveis por definir qual sequência a rede irá aprender dentro das possibilidades disponíveis.

Mozer[12] - 1994, fez uso das Redes Neurais Recorrentes como base para um sistema denominado CONCERT. Além da rede proposta por Mozer fazer uso do algoritmo BPTT a camada de saída é tratada como uma probabilidade da nota em questão ser ativada ou não. Nesse trabalho, os componentes musicais são representados por informações psicológicas elaboradas por Shepard [13]. Visando compensar a deficiências das redes com BPTT com as dependências de longo prazo, Mozer também usou um esquema simplificado de codificação para representar a duração da nota com base em três escalas de fração.

Com base na RNA proposta por Todd em 1991, Franklin[14] - 2001, desenvolveu uma segunda fase de treinamento baseada no reforço de aprendizagem. Nessa fase, um valor escalar foi calculado baseado em regras musicais para determinar a qualidade da saída. Caso exista algum erro explícito a informação é substituída.

Em 2012 Eck e Schmidhuber [15] observaram em seu trabalho que redes neurais recorrentes utilizadas anteriormente para a geração de músicas têm problemas com dependências de longo termo, devido ao gradiente que desaparece, e por consequência, as composições tendem a apresentar uma falta de coerência em longas sequências.

Sendo assim, Eck e Schmidhuber propuseram o uso de redes do tipo LSTMs que minimizam o decaimento de erro ao longo do tempo e consequentemente habilitam o gerenciamento das dependências de longo prazo permitindo assim, sequências maiores e com maior similaridade com o dado de treinamento. Duas redes do tipo LSTM foram usadas, uma para aprender a melodia e outra para aprender os acordes. Os dados de treinamento foram músicas no estilo blues.

Franklin[16] - 2006, usou uma rede LSTM para que a mesma aprendesse músicas no estilo Jazz. Ele usou uma representação de acordes baseado no modelo proposto por Mozer.

Corrêa[17] - 2008, implementou dois tipos de redes neurais recorrentes para a composição (BPTT e LSTM) e comparou a velocidade do treinamento bem 31

(32)

como suas composições e chegou a conclusão de que as redes LSTM apresentaram um melhor resultado final.

Em 2013 Coca, Corrêa e Zhao[18] propuseram uma rede LSTM para composição musical que recebe como inspiração uma melodia adicional independente. Além disso, é usado um medidor de qualidade da melodia que permite que o sistema rode enquanto os parâmetros de qualidade na medição forem satisfeitos.

A abordagem dada por Liu e Ramakrishman[19] - 2014, consiste em um arcabouço que usa LSTM em conjunto com a heurística chamada de resilient backpropagation (Rprop). Nesse artigo, fica evidenciada a capacidade da Rede LSTM em aprender a estrutura e as características das músicas corretamente. O experimento demonstrou que a rede é capaz de criar novas composições após dezenas de interações com os dados de treinamento.

Em 2016 Colombo, Muscinelli, Seeholzer, Brea e Wulfram Gerstner[20] implementaram uma versão simplificada da rede LSTM que se chama Gated Recurrent Unit – GRU. Para treinamento da rede foi usada uma grande quantidade de músicas irlandesas e o objetivo foi treinar o algoritmo para duas tarefas, a primeira consistiu em completar uma composição monofônica e a segunda para gerar uma composição monofônica completamente nova.

(33)

4 PROCESSO DE COMPOSIÇÃO ARTIFICIAL

4.1 CONSIDERAÇÕES INICIAIS

Esse capítulo expõe o processo de desenvolvimento do software para a geração de composições musicais. O trabalho em questão transforma os elementos musicais2 em uma lista de palavras e é inspirado na arquitetura de RNR proposta por

Andrej Karpathy[21] desenvolvida fazendo uso do framework Torch[22] e no trabalho de Lars Eidnes[23] que tinha por objetivo a geração de texto fazendo uso de RNRs do tipo LSTM; A RNR proposta tem como foco a geração de músicas com coerência estrutural baseada nas três músicas que compõem os dados de treinamento. A quantidade de notas e acordes presentes nos dados de treinamento é de 5715 e a quantidade de notas e acordes singulares é de 753.

A arquitetura desenvolvida possui aproximadamente 15 milhões de parâmetros e a rede é treinada de modo que a cada duzentos elementos musicais os valores dos parâmetros sejam atualizados. Objetivando uma otimização na generalização e no tempo de treinamento, foram omitidas as informações de duração dos elementos musicais para a rede.

2

Notas e acordes.

(34)

4.2 DESCRIÇÃO GERAL DO SOFTWARE

O software foi desenvolvido em Python3 com o auxílio das seguintes bibliotecas:

• Keras[24] em combinação com o TensorFlow para a geração das

Redes Neurais.

• Music21 para a leitura dos arquivos de entrada em formato MIDI

bem como para a escrita das composições geradas.

• Numpy para as manipulações algébricas.

• Pickle para o armazenamento em disco das músicas que foram

lidas através do Music21 e posteriormente convertidas em uma estrutura de dados do tipo lista.

• Glob para uma navegação facilitada entre as pastas.

• HDF5 para o armazenamento dos pesos da RNA na fase de treinamento que posteriormente são usados na fase da geração da composição.

4.3 REPRESENTAÇÃO DOS ELEMENTOS MUSICAIS

Fazendo uso da biblioteca Music21 cada nota e acorde foi lido e transformado em uma string. A nota é representada pela sua sigla na notação escrita e concatenada com a sua altura, por exemplo, a nota dó sustenido na quarta casa tem a forma de“C#4” .Os acordes são representados pelo conjunto dos número MIDI de cada nota concatenado com a palavra “|chord”. O recurso da concatenação foi usado para flexibilizar a manipulação no momento da escrita do arquivo MIDI e por não afetar a rede neural de modo algum.

Visando a diminuição dos dados de treinamento, a duração de cada elemento musical foi omitida. Na fase de geração da composição, a duração denominada colcheia é atribuída a cada elemento musical. Essa decisão não influencia na coerência musical.

(35)

4.4 ARQUITETURA DA REDE NEURAL ARTIFICIAL

A RNA proposta possui dois tipos de camadas distintas e entre elas um método de regularização. O primeiro tipo de camada é composto pelo modelo de RNR do tipo LSTM. A camada de saída é do tipo completamente conectada e possui a mesma dimensão dos elementos musicais únicos , ou seja, 1X753. A camada em questão é responsável por determinar qual saída corresponde a sequência de entradas apresentadas.

4.4.1 CAMADA LSTM

As camadas em pauta consistem em duas camadas LSTMs com 512 nós cada. A diferença fundamental entre essas duas camadas LSTMs está nos tipos de saída. A primeira camada tem como saída uma sequência no mesmo formato dos dados de entrada. Essa sequência alimenta a segunda LSTM que por sua vez tem como saída uma matriz que se conecta a camada completamente conectada(dense). Como não existe um regra formal para a definição do número de nós e o número de camadas, a RNA proposta buscou inspiração no modelo de Andrej Karpathy no trabalho The Unreasonable Effectiveness of Recurrent Neural Networks [21].

4.4.2 REGULARIZAÇÃO COM DROPOUT

Objetivando uma melhor performance da RNA, um método de dropout é associado as LSTMS. O dropout é a técnica que consiste na retirada aleatória de alguns nós em conjunto com suas conexões durante o treinamento. A técnica de 35

(36)

dropout é capaz de melhorar a generalização da RNA[25]. O dropout foi definido a uma taxa de 0.5, ou seja, 50%.

4.4.3 CAMADA DE SAÍDA

É composta pela camada completamente conectada(dense). A referida camada possui uma dimensão de 1x753 nós e cada nó está conectado com cada uma das 753 saídas possíveis.

Figura 20 : Camada de Saída

(37)

4.4.4 FUNÇÃO DE ATIVAÇÃO

A composição musical é um problema de classificação tendo em vista que dado uma sequência de elementos musicais se faz necessário escolher um entre os 753 elementos musicais possíveis, portanto a função de ativação usada é a softmax por ser a técnica padrão para problemas de classificação [26]. A técnica softmax normaliza suas entradas para produzir saídas Y de modo que a soma dos valores de saída seja 1. Essa função é usada para produzir saídas que podem ser interpretadas como distribuições de probabilidade.

Figura 21 : Função Softmax

4.4.5 PARÂMETROS

Com a arquitetura proposta a RNA possui um total de aproximadamente 15 milhões de parâmetros . A quantidade de parâmetros se baseia na seguinte fórmula: ((Número de nós na rede LSTM x quantidade de entradas) x total de redes lstm) x (quantidade de saídas)) ou seja, ((512x200) x 2) x (753)).

(38)

Figura 22 : Arquitetura proposta para a geração de composições musicais

4.5 TREINAMENTO

O treinamento de uma RNA consiste em atualizar os pesos de cada neurônio a medida que a iteração com os dados de treinamento acontece. Neste trabalho um mini-batch size de tamanho duzentos é usado, ou seja, a cada duzentos elementos musicais apresentados (X) um determinado resultado é fornecido a rede(Y). Como o treinamento é computacionalmente muito custoso dado o número de nós, foi usado um computador com processador Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz e placa de vídeo GK104GL [GRID K520] através da Amazon Web Services durante essa fase. No computador citado, a fase de treinamento durou cerca de 18 horas.

(39)

4.5.1 DADOS DE TREINAMENTO

Os dados de treinamento são compostos pela Sonata para piano n.º 14, Op. 27 n.º 2 de autoria de Ludwig van Beethoven e possui três peças separadas. A sonata n.º 14 foi escolhida por possuir uma grande combinação de elementos musicais. O número total de entradas (notas e acordes) é de 5715 e o número de entradas singulares, ou seja, notas e acordes únicos é de 753.

4.5.2 TRATAMENTO DOS DADOS

Após as músicas terem sido tratadas inicialmente pela biblioteca Music21 e transformadas em uma lista de strings com todos os elementos , uma função de mapeamento é criada com o objetivo de transformar a lista inicial em uma lista numérica. Como exemplo a lista de strings com os valores [“C1”,”D4”,”C1”,”E2”, “31,33,35|chord”] é mapeada como [1,2,1,3,4] .

Em posse da lista numérica os dados são normalizados, ou seja, os dados são convertidos em uma escala entre 0 e 1 através da seguinte fórmula:

Figura 23 : Normalização

onde z corresponde ao valor do dado normalizado. Isso é feito pois os dados normalizados ajudam a RNA a ter melhor desempenho[27].

Para a camada de saída(Y), o dado é transformado fazendo uso da técnica one-hot-enconding que consiste em representar os dados dos elementos musicais em uma matriz binária. Esta matriz binária é necessária para que a camada de saída que faz uso da função softmax funcione da forma correta.

(40)

Tabela 3 : Representação dos dados

Lista original [“C1”,”D4”,”C1”,”E2”, “31,33,35|chord”]

Lista numérica [1,2,1,3,4] Lista normalizada [0.25,0.50,0.25,0.75,1.0] One-hot-Encoding {[1,0,0,0], [0,1,0,0], [1,0,0,0], [0,0,1,0], [0,0,0,1]} 4.5.3 FUNÇÃO DE PERDA

A função de perda é uma medida da quantidade de erro que a RNA produz em relação aos dados de treinamento. A técnica usada é a de entropia cruzada . A entropia cruzada é escolhida por trabalhar de forma satisfatória com problemas que abordam múltiplas saídas[28].

4.5.4 HIPERPARÂMETROS

Os dados tratados anteriormente servem de input para que a RNA seja

treinada. Nessa fase o número de passagem pelos dados de treinamento(época)

bem como o número de dados necessários para que os pesos da redes sejam atualizados (mini-batch size) são definidos. Assim como o número de camadas ocultas, não existe consenso sobre o número ideal que os hiperparâmetros devem receber, portanto na RNA proposta o número de épocas e o mini-batch size foram definidos como duzentos para cada hiperparâmetro inspirados no trabalho realizado por Andrej Karpathy [21] e Lars Eidnes [23].

(41)

Gráfico 1 : Decaimento do erro

Como mencionado na seção 4.5.3 a função de perda é uma medida da quantidade de erro que a RNA produz em relação aos dados de treinamento. No Gráfico 1 é possível verificar que o erro diminui com o passar das rodadas, e isso deixa claro que a arquitetura proposta para a RNA funcionou de forma satisfatória. Após duzentas duzentas passagens completas pelos dados de treinamentos o menor erro encontrado foi na rodada cento e noventa e nove com o valor de 0.4666.

Na fase de treinamento todos os dados de entrada disponíveis são usados para que a rede aprenda qual é a probabilidade de cada elemento musical ser escolhido dado uma determinada sequência, sendo assim, não existe nenhum conjunto de teste ou treinamento.

4.6 GERAÇÃO DAS COMPOSIÇÕES

Nessa etapa uma RNA idêntica a RNA de treinamento é criada e os pesos dos neurônios são preenchidos com o arquivo binário gerado na fase de treinamento. Em seguida, uma estrutura de repetição é inicializada e uma sequência de duzentos elementos musicais é apresentada a RNA que gera um elemento musical a cada passo dado. Um valor de duração único (colcheia) é atribuído a cada elemento musical gerado e ao final da repetição um arquivo MIDI é gerado e o programa chega ao fim.

(42)

4.6.1 TRATAMENTO DA SAÍDA DA REDE

Levando em conta o custo computacional e o tempo para a conclusão do processo de treinamento da RNA o script de geração foi escrito separadamente. Uma vez em posse dos pesos corretos a RNA proposta gera novas composições de forma rápida.

No novo script a RNA construída é idêntica a RNA treinada e os pesos são carregados através do arquivo binário que foi salvo ao fim da fase de treinamento. Com o conjunto de treinamento normalizado a estrutura de repetição é inicializada e uma sequência de duzentas unidades é escolhida ao acaso para que seja exposta a RNA em sua camada de entrada. A saída da RNA é um conjunto de valores correspondente a camada de saída da RNA, uma matriz de 1x753 contendo a probabilidade de cada elemento musical ser a saída, dado a sequência de entrada. Uma vez que a matriz de probabilidades é conhecida e o maior valor de probabilidade é capturado, uma função de mapeamento responsável por transformar o dado numérico em string com o elemento musical é executada.

Figura 24 : Função de mapeamento

(43)

4.6.2 NOTAS X ACORDES

Com a string de saída em mãos uma verificação condicional é usada com o objetivo de verificar se o elemento musical em questão é uma nota ou um acorde. A condicional verifica se a string em questão possui a palavra “|chord” em seu conteúdo.

Caso o resultado seja verdadeiro, uma função é chamada para que a palavra “|chord” seja retirada da string, outra função é executada e uma lista contendo os valores MIDI é criada. Com a lista de valores MIDI preenchida, um objeto acorde da biblioteca Music21 é criado para que em sequência a estrutura de repetição responsável por preencher o objeto acorde com os valores encontrados na lista seja executado . Após isso, o valor de tempo musical denominado colcheia é atribuído ao objeto acorde através da biblioteca Music21 e o objeto em questão é inserido na lista de saída. Por exemplo, a string “31,33,35|chord” passa pelos seguintes passos:

1. a string “31,33,35|chord” contém a palavra |chord?; 1. se sim então a string recebe o valor “31,33,35”; 2. a lista recebe os valores 31,33 e 35;

3. Enquanto existirem elemento na lista, atribuir o valor ao objeto acorde; 4. O objeto acorde recebe o valor de tempo musical denominado colcheia;

Caso o resultado seja falso, um objeto nota criado com a biblioteca Music21 é gerado e recebe o valor contido na string em conjunto com o valor de tempo musical chamado de colcheia.

No fim da avaliação condicional da string um tempo musical é atribuído ao andamento. Já que a música é composta sequencialmente.

(44)

Figura 25 : Elementos e compasso

Esse passo é necessário para delimitar onde o elemento musical se encontra na composição, delimitando assim os compassos.

4.6.3 ATUALIZAÇÃO DOS VALORES DE ENTRADA

Os passos descritos em 4.6.1 e 4.6.2 ocorrem até que a estrutura de repetição que controla tais passos receba o valor de trezentas rodadas. Ao final de cada rodada a lista contendo os duzentos valores de entrada é atualizada de modo que o valor gerado na rodada corrente seja adicionado ao final da lista e o primeiro valor da mesma seja removido como ilustrado na figura 22.

Figura 26 : Atualização das entradas

(45)

4.7 GERAÇÃO DO ARQUIVO MIDI

Após os passos descritos em 4.6.1, 4.6.2 e 4.6.3 o valor de batidas por minuto é definido em cento e sessenta e um arquivo MIDI é gerado tendo como parâmetro de entrada a lista com os objetos criados através da biblioteca Music21. Um trecho da composição gerada ao fim do processo pode ser observada na figura 23 e uma versão audiofônica do arquivo gerado se encontra disponível na internet3.

Figura 27 : Exemplo de composição

3

https://soundcloud.com/fxpxqx/lstm_sunrise

(46)

5 CONCLUSÃO

Composições musicais envolvem um grande número de combinações entre seus elementos, tornando a tarefa do compositor complexa e altamente abstrata. Fazendo uso de Redes Neurais Recorrentes com duas camadas LSTM em sua arquitetura, um software para composição musical desenvolvido em python foi proposto tendo como dados de treinamento a Sonata para piano n.º 14, Op. 27 n.º 2 de autoria de Ludwig van Beethoven.

Ao longo do desenvolvimento desse trabalho pude ampliar meus conhecimentos sobre os algoritmos de treinamento das RNAs bem como sobre suas possíveis arquiteturas. Um outro ponto relevante reside no desafio de representação de dados multidimensionais em uma RNA. Essa experiência ratificou o meu desejo em dar prosseguimento nos estudos formais na área de inteligencia artificial.

Ao final do processo de treinamento e geração da saída é possível observar que a rede proposta é capaz de gerar novas composições com coerência musical e guardando semelhança com os dados de treinamento mesmo tendo em vista os 753 elementos musicais possíveis.

Do ponto de vista computacional, a tarefa de composição enfrenta uma barreira relevante já que o treinamento da rede LSTM é muito custoso. Baseado na Lei de Moore é possível especular que dentro de alguns anos será possível executar o treinamento de RNAs semelhantes a proposta nesse trabalho em computadores de menor custo, tornando assim o uso de tal tecnologia uma opção popular na tarefa de composição musical.

Algumas sugestões para a continuidade desse trabalho incluiriam uma segunda RNA na fase de treinamento nos mesmos moldes da proposta aqui, porém essa segunda RNA seria responsável apenas pela duração dos elementos musicais. Também seria interessante que os dados de treinamento fossem rotulados com suas características emocionais, sendo possível na parte da composição selecionar o quão alegre ou triste a música composta deveria ser.

(47)

Bibliografia

1: Google Cloud API, https://cloud.google.com/products/machine-learning/, 2: Bohumil Med, Teoria da Música, 1996

3: Maura Penna, Música(s) e seu ensino, 2008 4: Simon S. Haykin, Redes Neurais, 1999

5: Warren S. Mcculloch, Walter Pitts, A Logical Calculus Of The Ideas Immanent In Nervous Activity 6: Thomas Walter Rauber, Redes Neurais Artificiais, 2006

7: Haykin S., Redes Neurais, Princípios E Prática, 2001

8: F.Gers, Long Short-Term Memory In Recurrent Neural Networks, Ph.D Tesis, Ecole Polytechnique Fédérale De Lausanne Epfl, 2001

9: Christopher Olah, Understanding Lstm Networks, 2015, 10: Karlin, Samuel, A First Course In Stochastic Processes , 2014

11: Peter M Todd, A Connectionist Approach To Algorithmic Composition, 1989

12: Michael C. Mozer, Neural Network Music Composition By Prediction: Exploring The Benefits Of Psychoacoustic Constraints And Multi-Scale Processing, 1994

13: Shepard, Roger N., Geometrical Approximations To The Structure Of Musical Pitc, 1989 14: Franklin, J. A., Multi-Phase Learning For Jazz Improvisationand Interaction., 2000 15: Eck, D. And J. Schmidhuber, Learning The Long-Termstructure Of The Blues, 2002 16: Franklin, J. A, Predicting Reinforcement Of Pitch Sequences Via Lstm And Td, 2016

17: Débora Cristina Corrêa, Sistema Baseado Em Redes Neurais Para Composição Musical Assistida Por Computador, 2008

18: Andres E. Coca ; Debora C. Correa ; Liang Zhao, Computer-Aided Music Composition With Lstm Neural Network And Chaotic Inspiration, 2013

19: I-Ting Liu, Bhiksha Ramakrishnan, Bach In 2014: Music Composition With Recurrent Neural Network, 2014

20: Colombo, Muscinelli, Seeholzer, Brea E Wulfram Gerstner, Algorithmic Composition Of Melodies With Deep Recurrent Neural Networks, 2016

21: Andrej Karpathy, The Unreasonable Effectiveness Of Recurrent Neural Networks, 2015, 22: Pytorch, https://pytorch.org/

23: Lars Eidnes, Auto-Generating Clickbait With Recurrent Neural Networks, 2015, 24: Keras, https://keras.Io/,

25: N. Srivastava, G. E. Hinton, A. Krizhevsky, I. Sutskever, And R. Salakhutdinov, Dropout: A Simple Way To Prevent Neural Networks From Overfitting, 2014

26: Yichuan Tang, Deep Learning Using Linear Support Vector Machines , 2014

27: Sergey Ioffe, Christian Szegedy, Batch Normalization: Accelerating Deep Network Training Byreducing Internal Covariate Shift, 2015

28: P.-T. De Boer, D.P. Kroese, S. Mannor, And R.Y. Rubinstein, A Tutorial On The Cross-Entropymethod, 2005

Referências

Documentos relacionados

Informações fornecidas por SUZUKI, Tomi, LURIE, David. The Cambridge History of Japanese Literature. Editora da Universidade de Cambridge, Reino Unido, 2016, p.. segundo, que os

Results: The mean results of septal and lateral parts of the mitral annulus Pulsed wave TDE showed that myocardial systolic wave (Sm), myocardial early diastolic wave (Em) and Em

Neste trabalho, não se teve a pretensão de fazer uma análise exaustiva da situação dos grãos na Região do Cerrado do Nordeste, mas apenas informar, de forma quantitativa, como

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças

Actualmente, não eXiste nenhum agente qui mlco- terapêutico que seja universalmente aceite contra a as cosferlose nas abelhas melíFeras, nem estão todaVia def inidos

A autoavaliação visa à implantação de uma cultura de avaliação num processo reflexivo, sistemático e contínuo sobre a realidade institucional; a análise

Primeiramente, através da síntese de redes de equipamentos de transferência de massa utilizando a Análise Pinch, pode-se chegar a reduções significativas na emissão de

âmbito do contrato individual de trabalho entre o Réu e a falecida B. c) A B, muito antes de falecer e durante a vigência do seu contrato de trabalho, exigiu repetidamente e por