Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7....

18
Deep Learning for Music Generation Music Classification Programa de Pós-Graduação em Informática (PPGI) UNIRIO Marcos de Pinho Cotrim Jean-Pierre Briot 02/07/2019

Transcript of Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7....

Page 1: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Deep Learning for Music Generation

Music Classification

Programa de Pós-Graduação em Informática (PPGI)

UNIRIO

Marcos de Pinho CotrimJean-Pierre Briot02/07/2019

Page 2: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Agenda

• Objetivo

• Metodologia

• Preparação dos dados (representação)

• Arquitetura

• Conclusões

• Trabalhos futuros

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 2 / 18

Page 3: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Objetivo

Classificação de melodias

Três compositores possíveis (Bach, Chopin e Mozart)

Utilizando redes neurais artificiais (ANN)

Input: melodias (Music21, XML, MIDI)

Output: compositor mais provável

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 3 / 18

Page 4: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Aprendizado supervisionado

Classificação é uma tarefa de aprendizado supervisionado

Modelo aprende a partir de exemplos de input/output

Exemplos de algoritmos de classificaçãoLogistic Regression

Naive Bayes

Support Vector Machines (SVM)

Decision Trees

Random Forest

Nearest Neighbors (KNN)

Artificial Neural Networks (ANN)

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 4 / 18

Page 5: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Metodologia

Aquisição dos dados (music + labels)

Train/Test split (training set + test set)

Preparação dos dados (representation)

Construção do modelo

Treino do modelo (training set)

Avaliação final do modelo (test set)

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 5 / 18

Aquisição dos dados

Train/TestSplit

trainingdataset(70%)

testdataset(30%)

Preparação dos dados

Avaliação do modelo

Construção do modelo

Preparação dos dados

Treino

(cross-validation)

Page 6: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Aquisição dos dados

Corpus do Music21 contém poucas músicas de Mozart e Chopin

Necessidade de aquisição de músicas de outras fontes

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 6 / 18

Compositor Music21

Bach 413

Mozart 16

Chopin 1

Page 7: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Preparação dos dados (representação)

Problema

Como transformar uma música em um vetor de [0..1]?

Como transformar diferentes músicas em vetores de [0..1] de mesma dimensão?

Representação escolhida

Many-hot encoding (acordes)

Piano roll (simplicidade)

Fatias de tempo

Duração fixa (nota de menor duração)

Tamanho fixo (intervalo entre maior e menor nota)

Quantidade fixa de fatias de tempo (duração total fixa)

Quantidade fixa de partes por música (4 partes)

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 7 / 18

Quantidade de partes em cada música do corpus do Music21

Page 8: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Preparação dos dados (representação)

1. A partir de todas as músicas do training set, obter:

1. Quantidade de partes mais frequente (p)

2. Média de duração das músicas (tT)

3. Nota mais baixa (nB)

4. Nota mais alta (nA)

5. Nota de menor duração (dM)

2. Definir quantidade de partes por música (fixa) → p

3. Definir quantidade de fatias de tempo por parte (fixa) → f = tT / dM

4. Definir tamanho do vetor de representação de cada fatia de tempo →m = nA - nB

5. Definir tamanho do vetor de representação de cada música = V(m.f.p)

6. Codificar (encode) cada fatia de tempo de cada parte de cada música

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 8 / 18

Page 9: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 9 / 18

4 partes

Page 10: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 10 / 18

F#3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

G3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

G#3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

A3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 ...

A#3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

B3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

C4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

C#4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

... 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

F#4 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

G4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

G#4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

A4 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

... 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

D5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

1/32

man

y-h

ot

enco

din

g

tempo

Trecho de 1 parte

Page 11: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 11 / 18

Cada música representada como um vetor de tamanho n (fixo), em que:

n = nº de partes x nº fatias de tempo x tamanho da fatia

Dataset representado como uma matriz (m x n) em que:m = número de músicasn = tamanho do vetor de representação de cada música (fixo)

0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 ...

0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 ...

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 ...3 músicas

Page 12: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Feedforward Architecture

Input layerNº de neurons = tamanho do vetor de representação de cada música

Hidden layersNº de neurons

Activation function (sigmoid, tanh, relu)

Output layer3 neurons = Bach, Chopin e Mozart (multi-class single label)

Activation function = softmax

Interpretation = argmax

Loss function = categorical cross-entropy

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 12 / 18

Page 13: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 13 / 18

58%

32%

10%

input layer(n = vetor)

hidden layer#1

hidden layer#2

hidden layer#3

output layer(n = 3)

Activation = softmaxMulti-class single labelSelection = argmax

Activation = sigmoid, tanh, relu

Page 14: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Construção do modelo

Cross-validation para tuning do modelo em diferentes configurações de:

Número de neurônios em cada camada oculta

Quantidade de camadas ocultas

Função de ativação nas camadas ocultas (sigmoid, tanh, relu)

Análise das curvas de aprendizado

Quantidade de épocas

Selecionar modelo com boa acurácia mas, principalmente, estável

Capacidade de generalização (bias-variance tradeoff)

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 14 / 18

Page 15: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Avaliação do modelo final

Treino do modelo final

Training dataset completo

Predição (avaliação)

Test dataset (unseen data)

Métricas

Matriz de confusão

Acurácia

F1-Score

Log-Loss

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 15 / 18

Aquisição dos dados

Train/TestSplit

trainingdataset(70%)

testdataset(30%)

Preparação dos dados

Avaliação do modelo

Construção do modelo

Preparação dos dados

Treino

(cross-validation)

Page 16: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Conclusões

Poucos exemplos de música de Chopin e Mozart no corpus do Music21 e a necessidade de alterações extensas nos códigos de exemplo disponibilizados dificultaram a implementação do modelo e a análise dos resultados.

Músicas possuem particularidades e são diferentes em estruturas e características. A representação de um conjunto variado de músicas em uma estrutura de codificação padronizada e de tamanho fixo, como a utilizada no projeto, limita a quantidade de informação utilizada para o aprendizado.

Algoritmos mais simples podem ser mais indicados para problemas de classificação no lugar de ANN, mas a representação de cada música precisa ser realizada com número menor de variáveis.

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 16 / 18

Page 17: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Propostas de trabalhos futuros

Incorporação de mais exemplos de músicas no dataset (Chopin e Mozart)

Implementação do modelo proposto (Python, Music21, Keras, TensorFlow)

Avaliação de variações na forma de representação das músicas

Hold/rest, quantidades de partes, quantidades de fatias de tempo

Avaliação de variáveis para redução da dimensionalidade do dataset

Frequência de notas por música

Atríbutos das músicas (tempo, duração, partes/vozes, etc.)

Avaliação de outros algoritmos de classificação (mais simples)

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 17 / 18

Page 18: Deep Learning for Music Generation Music Classificationbriot/cours/unirio2/Projects... · 2019. 7. 5. · Objetivo Classificação de melodias Três compositores possíveis (Bach,

Referências

• Material de aula - http://www-desir.lip6.fr/~briot/cours/unirio2/

• Music21 User´s Guide -http://web.mit.edu/music21/doc/usersGuide/index.html

• https://towardsdatascience.com/exploring-activation-functions-for-neural-networks-73498da59b02

• https://scikit-learn.org/stable/

• https://keras.io/

• https://medium.com/usf-msds/choosing-the-right-metric-for-evaluating-machine-learning-models-part-2-86d5649a5428

Marcos de Pinho Cotrim Deep Learning for Music Generation – Music Classification 18 / 18