Biaxial LSTM (DeepJ - musica)
Nome: Biaxial LSTM
Sigla: Biaxial LSTM
URLHomePage: HomePage Biaxial LSTM
Basato su: Long Short-Term Memory (LSTM)
Topic: Musica e Audio
Architettura Biaxial LSTM
L'architettura Biaxial LSTM modella la composizione polifonica modellando ogni nota in ciascuno step temporale come una probabilità condizionata a tutti i passaggi temporali precedenti e a tutte le note all'interno del passaggio temporale corrente che sono già state generate. L'ordine di generazione va dal primo passaggio temporale t = 1 all'ultimo passaggio temporale t = T e dalla nota più bassa n = 1 alla nota più alta n = N, dove:
- T è la lunghezza della generazione desiderata
- N è il numero di possibili note.
Denotiamo la variabile casuale binaria Y = 1 quando la nota viene suonata e Y = 0 quando non viene suonata. Al passaggio temporale t, il modello apprende la seguente probabilità condizionata per la nota n-esima:
- P(Yt;n|Yt;n-1; Yt;n-2; …; Yt-1;N ; Yt-1;N-1; …; Y1;2; Y1;1)
Dall'espressione sopra, possiamo vedere che il modello deve condizionare la probabilità di suonare una nota specifica nel passaggio successivo lungo due assi:
- Tempo
- Nota.
Il modello computa questa probabilità condizionata biassiale utilizzando LSTM che prendono input lungo i due assi. Di conseguenza, il Biaxial LSTM consiste in due moduli principali: il modulo sull'asse del tempo e il modulo sull'asse delle note.
Input del Modello
L'input per il modello sono le note nel passaggio temporale precedente. Queste note sono rappresentate in una forma che include informazioni sulla nota stessa e sulle note circostanti (ad esempio, le ottave adiacenti).
Note Octaves Layer
Questo strato trasforma ogni singola nota e le note circostanti in un tensore. Questo tensore contiene le informazioni sulla nota principale e il suo contesto spaziale (ad esempio, le note nelle ottave superiori e inferiori). Questo processo aggiunge contesto spaziale alle informazioni delle singole note.
LSTM con pesi condivisi
Ogni feature di nota elaborata nel passaggio precedente viene alimentata in un'unità LSTM (Long Short-Term Memory) che ha pesi condivisi tra tutte le note nel passaggio temporale. Questo significa che le stesse operazioni vengono applicate a ogni nota, consentendo al modello di apprendere e memorizzare le relazioni temporali tra le note.
Modulo Time-Axis
Questo modulo riceve in input i tensori delle note e gli stati ricorrenti dalla LSTM del passaggio temporale precedente. Utilizzando queste informazioni, produce feature di livello superiore per ogni nota, che catturano le relazioni temporali e spaziali tra le note nel passaggio temporale corrente.

Sezione sull’asse del tempo
La sezione dell'asse temporale è ispirata a una rete neurale convoluzionale (CNN). È composta da due unità LSTM impilate a strati ricorrenti nel tempo, connesse a ogni ottava di nota (12 toni sopra e sotto ogni nota) in ingresso in modo simile a un kernel di convoluzione. I pesi di ciascuna unità LSTM sono condivisi tra ogni nota, costringendo la sezione dell'asse temporale a imparare caratteristiche invarianti alle note.
Sezione sull’asse delle Note
La sezione delle note prende in input le caratteristiche della nota estratte dalla sezione dell'asse temporale, il LSTM dell'asse delle note scansiona dalle caratteristiche della nota più bassa alle caratteristiche della nota più alta per fare previsioni su ciascuna nota condizionata sulle note inferiori previste. L'asse delle note è composto da un'altra unità LSTM impilata a due strati ricorrenti nella nota. Le caratteristiche di ogni nota vengono prima concatenate con la nota inferiore scelta. Se la nota attualmente considerata è la nota più bassa, vengono concatenate degli zeri. In altre parole, per determinare la nota scelta yi, le caratteristiche della nota i-esima xi vengono concatenate con la nota inferiore scelta yi-1 prima di essere alimentate nel modulo dell'asse delle note f.