Press "Enter" to skip to content

GOTO 2017 • Composing Bach Chorales Using Deep Learning • Feynman Liang


[Musica]
bello grazie , quindi so cosa
livello per parlare alza le tue mani se
sai chi è grande Bach alza il tuo
mano se sai cos’è una rete neurale
è oh questa è la folla perfetta fantastica
se non lo sai non preoccuparti, vado
per coprire le basi di entrambi
parliamo di Bach, ho intenzione di suonare
a te un po ‘di musica
[Musica]
ora quello che hai appena sentito è ciò che è noto
come un corallo ci sono quattro parti ad esso un
soprano alto tenore basso in esecuzione al
la stessa ora esatta e c’è molto regolare
struttura di fraseggio in cui si ha il
inizio di una frase la determinazione
di una frase seguita dalla frase successiva
tranne che non era Bach piuttosto che lo era
un algoritmo informatico chiamato bot di Bach e
che era un campione su proprie uscite
se non mi credi è acceso
soundcloud si chiama sample one go
ascolto di se stessi in modo, invece di
Sto parlando di box oggi
ti parlo di bot di Bach, il mio nome è
Phiman ed è un piacere essere qui a
Amsterdam e oggi parleremo
l’autunno è stilistico automatico
composizione utilizzando memoria a breve termine
così poi uno sfondo su di me io sono
attualmente ingegnere informatico presso il gigatore
dove vado al lavoro interessante
problemi di automazione per quanto sto prendendo
i contratti li hanno divisi in sub
contratti e poi li freelance
il lavoro sul bot di Bach è stato fatto come parte di
tesi del mio maestro in cui ho fatto
l’ Università di Cambridge con
Microsoft Research Cambridge in linea
con la pista qui non ho un dottorato
e così e posso ancora fare la macchina
imparando così questo è il fatto che questo è un
Infatti è possibile fare l’apprendimento automatico, senza
un dottorato di ricerca per quelli di voi che vogliono solo
sapere cosa succederà e poi ottenere
fuori di qui perché non è interessante
ecco il sommario esecutivo che sto andando
per parlare con te di come allenarsi alla fine
fine a partire dalla preparazione degli insiemi di dati
fino al modello di tuning e
dispiegamento di una neurale recidiva profonda
rete per la musica questa rete neurale è
capace di polisemia multipla
voci simultanee allo stesso tempo
è capace di composizione automatica
generando una composizione completamente da
scratch e armonizzazione dati
alcune parti fisse come il soprano
la linea della melodia genera il
parti rimanenti di supporto questo modello
impara la teoria musicale senza sentirsi dire
per fare ciò fornendo convalida empirica
di ciò che i teorici della musica hanno usato
per secoli e
finalmente è valutato su un online
test di Turing musicale siamo fuori dal 1700
i partecipanti solo il nove per cento sono in grado
per distinguere Bach effettivo da Bach
Bach
quando partii su questa ricerca ci
erano tre obiettivi primari il primo
domanda a cui volevo rispondere era quello che è
la frontiera della creatività computazionale
ora la creatività è qualcosa a cui prendiamo
essere un 8 li umano innatamente speciale in
alcuni computer senso non dovrebbero non farlo
essere in grado di replicare questo su di noi è
questo in realtà è vero possiamo avere computer
generare arte che sia convincentemente umana
la seconda domanda a cui volevo rispondere
era quanto ha influito l’apprendimento profondo
composizione musicale automatica ora
la composizione musicale automatica è speciale
campo è stato dominato dal simbolico
metodi che utilizzano cose come formale
grammatiche o grammatiche contestuali come
come questo albero di analisi che abbiamo visto
metodi connessionisti all’inizio del XIX
secolo tuttavia ce l’abbiamo comunque loro
hanno seguito in popolarità e
i sistemi più recenti hanno usato simboli
metodi con il lavoro qui volevo
vedere ha fatto i nuovi progressi in profondità
l’apprendimento negli ultimi 10 anni possono
essere trasferito su questo particolare
dominio del problema e infine l’ultimo
la domanda che volevo vedere è come
valutiamo questi modelli generativi
significa che abbiamo visto che abbiamo visto in
i precedenti parlano un sacco di molti modelli
generano arte noi la guardiamo e come
l’ autore diciamo oh è convincente
ma oh questo è bello e fantastico
potrebbe essere un caso d’uso perfettamente valido ma
non è sufficiente per la pubblicazione a
pubblicare qualcosa di cui abbiamo bisogno per stabilire un
benchmark standardizzato e dobbiamo essere
in grado di valutare tutti i nostri modelli
così possiamo obiettivamente dire quale modello
è meglio dell’altro ora se lo sei
ancora qui presumo che tu sia
interessato questo è lo schema che faremo
inizia con un veloce primer sulla musica
teoria che ti dà solo la base
terminologia è necessario comprendere il
il resto di questa presentazione lo faremo
parlare di come preparare un set di dati di
Bach Corral’s
bene allora il gate otterrà il dare a
primer su reti neurali ricorrenti
che è il vero modello di apprendimento profondo
architettura usata per costruire Bach Bach
parleremo del modello di Bach Bach
stesso i consigli e trucchi e
tecniche che abbiamo usato per
allenarlo
ce l’ha gestito con successo, così come
distribuirlo e poi mostreremo il
risultati
mostra come questo modello è in grado di farlo
cattura le regolarità statistiche nella casella
stile musicale e noi proveremo a noi non
dimostrare che forniremo molto convincente
prove che la teoria musicale ha
gesto teorico empirico
giustificazione e finalmente mostrerò il
risultati del test di Turing musicale che
è stata la nostra metodologia di valutazione proposta
per aver detto si
questo modello ha risolto il nostro obiettivo di ricerca
il compito di comporre automaticamente
convincente corale di Bach è più chiuso
che aprire un problema come risultato di
Plot Bach e se sei un hands-on tipo
del discente che abbiamo containerizzato il
tutta la distribuzione quindi se vai al mio
sito web qui ho una copia delle diapositive
che hanno tutte queste istruzioni
esegue queste otto righe di codice e funziona
questo intero e conduttura proprio qui
dove prende i recinti pre
li elabora li mette in un dato
memorizzare i treni dei treni l’apprendimento profondo
il modello campiona il modello di apprendimento profondo
produce uscite che puoi ascoltare
cominciamo con la teoria musicale di base ora
questo è quando la gente pensa alla musica
di solito quello che pensi di te
queste linee ti hanno preso delle note e queste
le note sono su diversi orizzontale e
posizioni verticali che alcuni di loro hanno
legami interessanti alcuni di loro punti
questo è un piccolo cappello strano interessante
guardando cosa non abbiamo bisogno di tutto questo noi
bisogno di tre concetti fondamentali delle
per prima cosa viene spesso indicato il pitch pitch
a quanto è bassa o alta la nota
se gioco questo possiamo distinguere che
alcune note sono più basse e alcune note sono
più alta nella frequenza e che corrisponde
all’asse verticale qui come le note
delle note suonano in ordine ascendente
salendo sulle linee della barra il secondo
l’attributo di cui abbiamo bisogno è la durata e questo
è davvero per quanto tempo un avviso così questo
nota queste due note queste quattro e
questi otto hanno tutti lo stesso totale
durata ma loro stanno avendo zuv
l’un l’altro quindi se ascoltiamo
l’intuizione generale è più barre
ci sono su queste maree più veloce è
le note appaiono solo con queste due
concetti che stanno iniziando a fare a
un po ‘più ha senso questo qui è
due volte più veloce di questa nota che possiamo vedere
questa nota è più alta di questa nota e
puoi generalizzare questo al resto
di questo ma c’è ancora questo buffo cappello
guardando cosa ci arriveremo al cappello in a
sec ma con altezza e durata possiamo
riscrivere la musica in questo modo piuttosto che
rappresentandolo usando le note che possono essere
tipo di criptico lo mostriamo qui come un
matrice in cui sull’asse x abbiamo tempo
quindi la durata e sull’asse y noi
avere un tono alto o basso e frequenza
quella nota è e quello che abbiamo fatto è
abbiamo preso la rappresentazione simbolica
di musica e l’abbiamo trasformato in a
formato digitale computabile che possiamo
modellare i modelli sul retro guardando il cappello
cosa che si chiama Fermata e Bach
usato per denotare i fini di frasi noi
aveva originariamente detto di questa ricerca
completamente trascurando per modesto e noi
trovato che le frasi generate dal
modello appena vagato non hanno mai
sembra che alla fine non ci fosse alcun senso
risoluzione o conclusione e così è stato
irrealistico ma aggiungendo questi quattro
modesto tutto ad un tratto il modello girato
intorno e noi e noi improvvisamente abbiamo trovato
struttura di fraseggio realistico cool e
questa è tutta la musica che devi sapere
il resto è apprendimento automatico ora
la maggior parte di un apprendimento automatico
il lavoro dell’ingegnere sta preparando i loro dati
imposta questo è un compito molto doloroso di solito
Devo setacciare internet o trovare un po ‘
set di dati standardizzato che ti alleni e
valuta i tuoi modelli su quello di solito
questi set di dati devono essere pre-elaborati
e massaggiato in un formato che è
suscettibile per l’apprendimento su di esso e per noi
non era comunque una scatola diversa
fortunatamente nel corso degli anni sono stati
trascritto in scusa il mio tedesco Bach
worka Vera – Nix BW scusa
dwv è come mi sono riferito a questo
corpus contiene circa 438
armonizzazioni di Bach
Corral’s e convenientemente lo è
disponibile tramite il pacchetto software
chiamato music21
questo è un pacchetto Python che puoi
basta installare e quindi importare e
ora hai un iteratore su a
raccolta di musica il primo
il passo di pre-elaborazione che abbiamo fatto è stato fatto
la musica la musica originale qui e noi
fatto due cose abbiamo trasposto e poi
lo quantizziamo nel tempo, ora puoi
notare la trasposizione, cercando in
questi accidenti proprio qui questi due
piccolo divertente indietro o avanti B’s
e poi sono assenti qui
inoltre quella nota è stata spostata da
mezza linea che è un po ‘difficile da vedere
ma sta succedendo e la ragione per cui noi
questo è ciò che non volevamo imparare la chiave
la firma di chiave di firma è di solito
prima qualcosa deciso dall’autore
i pezzi cominciarono anche a comporre e così
possiamo e così la firma chiave stessa può
essere iniettati come una fase di pre-processing
dove campioniamo tutti i tasti Bach
ha usato così abbiamo rimosso le dita delle chiavi da
l’equazione attraverso la trasposizione e
Giustifico perché è una buona cosa
fai nella prossima diapositiva questa prima misura
è scritto è una progressione di cinque
note scritte in Do maggiore e poi cosa io
ho fatto nella prossima misura è mi sono appena trasferito
in su da cinque punti interi
[Musica]
quindi sì il passo è cambiato è
relativamente più alto è assolutamente più alto
su tutti i conti
ma i rapporti tra le note
non è cambiato e la sensazione è il
motivi che la musica sta facendo emergere
queste rimangono ancora abbastanza costante anche
dopo la quantizzazione della trasposizione
tuttavia è una storia diversa se vado
tornando alle diapositive noterai la quantizzazione
a questa nota di 30 secondi e trasformarla in
una sedicesima nota rimuovendo quel secondo
bar abbiamo distorto il tempo è che a
problema è che non è non è perfetto
ma è un problema molto secondario, così finito
qui ho tracciato un istogramma di tutti
le durate all’interno del recinto
corpus e questa quantizzazione influisce
solo lo 0,2% di tutte le note che siamo
la formazione sul motivo per cui lo facciamo è
quantizzando nel tempo siamo in grado di ottenere
rappresentazioni discrete in entrambi i tempi come
bene come nel tono mentre si lavora su a
asse del tempo continuo ora devi
i computer deal sono discreti e lo sono
incapace di operare sul continuo
la rappresentazione deve essere quantizzata in
un formato digitale in qualche modo l’ultimo
sfida la polifonia così polisemia è la
presenza di più voci simultanee
finora gli esempi che ti ho mostrato
hai appena sentito suonare una sola voce
in qualsiasi momento, ma un Corral ne ha quattro
voce il soprano il contralto al tenore
il basso e quindi ecco una domanda per
tu se ho quattro voci e loro possono
ognuno di essi rappresenta 128 toni diversi
questo è il limite del MIDI
rappresentazione di musica quanti
accordi diversi mi possono costruire molto
bene sì 128 ^ 4 è corretto
Ho messo un Big O perché alcuni come alcuni
come puoi riorganizzare l’ordine ma
più o meno sì, è corretto e perché
questo è un problema, questo è il
problema perché la maggior parte di questi accordi sono
in realtà mai visto soprattutto dopo di te
trasposto una C maggiore un minore in effetti
guardando il set di dati possiamo vedere che
solo i primi 20 accordi o 20
note invece occupano quasi il 90% del
intero set di dati, quindi se lo fossimo
rappresentano tutti questi avremmo un
tonnellate di simboli nel nostro vocabolario che
non avevamo mai visto prima il modo in cui trattiamo
con questo problema è la serializzazione così
quello è invece di rappresentare tutti e quattro
nota come un simbolo individuale noi
rappresenta ogni singola nota come a
simbolo stesso e siamo stati serializzati in
soprano alto tenore basso e così via
quello che ottieni è una riduzione
dal 128 al 4 tutti gli accordi possibili
in soli 128 possibili tiri ora questo
può sembrare un po ‘ingiustificato, ma questo
è effettivamente fatto tutto il tempo con
elaborazione di sequenze se hai preso come
dai un’occhiata al linguaggio tradizionale
modelli che puoi rappresentarli a
il livello del personaggio o a livello di parola
allo stesso modo puoi rappresentare la musica
a livello di nota o a livello di corda
dopo aver serializzato l’aspetto dei dati
in questo modo abbiamo riunito una nota
inizio di un pezzo e questo è usato per
inizializzare il nostro modello abbiamo quindi il
quattro accordi soprano alto tenore basso
seguito da un delimitatore che indica il
fine di questo frame e tempo è avanzato
uno in futuro seguito da un altro
abbiamo anche il soprano alto tenore basso
queste cose puntinate dall’aspetto divertente che io
si avvicinò con per indicare il sé FIRMATA
in modo che possiamo codificare quando la fine di a
frasi nei nostri dati di addestramento di input dopo
tutto il nostro pre-processing è il nostro finale
il corpus sembra che ce ne siano solo 108
simboli lasciati così non cento tutti
cento 28 tiri sono usati in Bach
funziona e ci sono circa direi quattro
centomila totale dove ci siamo divisi
trecentottantamila o
trecentottantamila in un
training set e quarantamila in a
set di validazione ci siamo divisi tra allenamento
e validazione al fine di prevenire
sovraffollamento non vogliamo solo
memorizziamo la scatola di Corral piuttosto che vogliamo
essere in grado di produrre campioni molto simili
che non sono esattamente identici e questo è
con quello hai il set di allenamento
ed è incapsulato dai primi tre
comandi su quella diapositiva che ho mostrato in precedenza
con Bach
Crea set di dati Estratto bot di Bach
il vocabolario il prossimo passo è quello di allenare il
rete neurale ricorrente di cui parlare
reti neurali ricorrenti interrompiamo
la parola giù rete neurale ricorrente
Ho intenzione di iniziare con neuro neurale
neurale significa solo che abbiamo molto
blocchi elementari chiamati neuroni
che assomigliano a questo prendono un
input D-dimensionale x1 XD questi sono
numeri come 0.9 0.2 e sono tutti
aggiunto insieme a una combinazione lineare
quindi quello che finisci per ottenere è questo
attivazione Z che è solo la somma di
questi ingressi sono pesati da WS quindi se a
al neurone interessa davvero dire X 2 W 2 W
1 e il resto sarà zero e quindi questo
lascia che il neurone preferisca selezionare
quale dei suoi input ci tiene di più
su e permette di specializzarsi per
alcune parti del suo contributo questo
l’attivazione è passata attraverso questa X
cosa a forma di chiamato un on chiamato an
funzione di attivazione comunemente un sigmoide
ma tutto ciò che fa è presentare a
non-linearità nella rete e
ti permette di esplorare espressivo sul
tipi di funzioni che puoi approssimare
e abbiamo l’output chiamato Y che prendi
questi neuroni li impili
orizzontalmente e ottieni ciò che viene chiamato a
tana quindi qui sto solo mostrando quattro
neuroni in questo strato tre neuroni in
questo strato due neuroni su questo strato superiore
e ho rappresentato la rete in questo modo
qui prendiamo l’input X così questo in basso
parte ci moltiplichiamo per una matrice ora perché
abbiamo replicato i neuroni
orizzontalmente e ciò che rappresenta il
pesi lo passiamo attraverso questo sigmoide
funzione di attivazione per ottenere questi primi
output di layer questo è fatto in modo ricorsivo
attraverso tutti gli strati fino ad arrivare
il massimo dove abbiamo la finale
uscite del modello le W sono qui il
pesi quelli sono i parametri del
rete e queste sono le cose che noi
bisogno di imparare per addestrare il
rete neurale grande
sappiamo che il feed-forward neurale
le reti ora introducono la parola
ricorrenti ricorrenti significa solo che il
input precedente o precedente nascosto
gli stati vengono utilizzati nella fase di tempo successivo
la previsione quindi cosa sto mostrando qui
è di nuovo se si presta attenzione a
questa area di input
e questo strato proprio qui e questo
emettere questa parte qui è la stessa
cosa come questa cosa qui però
abbiamo aggiunto questo piccolo e divertente loop
tornare con questo è elettrico
notazione ingegneristica per un tempo unitario
ritardo e ciò che sta dicendo è prendere
lo stato nascosto dal tempo T meno 1 e
includilo anche come input nel prossimo
nelle prime previsioni T in
equazioni sembra così
lo stato nascosto attuale è uguale alla
agire o gli ingressi precedenti più il libero
o un’attivazione degli ingressi precedenti
aspettato più le attivazioni ponderate
dei precedenti stati nascosti e il
uscite è soltanto una funzione del proprio
attuali stati nascosti possiamo prendere questo
loop proprio qui
oh scusa prima di andare lì, eccolo
chiamato un tipo neurale di tipo Elmen
rete questa cella di memoria è molto semplice
sta facendo esattamente la stessa cosa a
normale rete neurale farebbe girare
ci sono alcuni problemi con solo
usando l’architettura di base e così via
architettura che il campo è stato
convergenza verso è noto come lungo
memoria a breve termine
sembra davvero complicato , non sei tu
prendi gli input e gli stati nascosti
e li metti in tre punti a destra
qui gli input un gate di input sono da dimenticare
gate e output gate e il punto di
aggiungere tutta questa complessità artistica è a
risolvere un problema noto come lo svanire
problema con gradiente dove questa costante
errore di carosello dell’essere stato nascosto
rispedito a se stesso ancora e ancora e
sui risultati nei segnali convergenti
verso lo zero o divergendo verso l’infinito
questo è fortunatamente questo è di solito
disponibile come solo una scatola nera
implementazione nella maggior parte dei pacchetti software
devi solo specificare che voglio usare un LS TM
e tutto ciò è astratto
tu ora qui, se sei strabico, puoi essere gentile
di vedere che la cella di memoria che ho
mostrato in precedenza dove abbiamo il
inserisce gli stati nascosti di fronte
torna a se stesso per generare un output I
distrarlo via così e io ho
impilati uno sopra l’altro così
piuttosto che avere solo le uscite
fuori da questo H proprio qui ho davvero
ha reso gli input per ottenere un altro ricordo
cellula
questo è da dove viene la parola profonda
le reti profonde sono solo reti
avere molti strati e impilando I
arrivare a usare la parola nel profondo del mio
modello LS TM profondo ma te lo mostrerò più tardi
che non sto solo facendo per la
la profondità della buzzword conta davvero
vedi in risultati un’altra operazione che è
importante per LS CMS è srotolamento e
ciò che fa lo srotolamento è ciò che serve
ritardo temporale dell’unità e si replica
le unità LS TM nel tempo quindi piuttosto che
mostra in questo ritardo come questo ho preso
ho mostrato l’unità – una volta nascosta
passaggio dello stato nell’unità t nascosta
passando fasi il T plus prima nascosto
unità il tuo input è una lunghezza variabile e
per addestrare la rete quello che fai sei tu
espandi questo grafico srotoli l’ lsdm così
la stessa lunghezza della tua lunghezza variabile
input e per ottenere questi
le previsioni fino alla cima grandi sappiamo
tutto ciò che dobbiamo sapere sulla musica e sui rnns
passiamo ad un bot di Bach che hanno Bach
Bach lavora per Train Bot di Bach che applichiamo
criteri di previsione sequenziale ora che ho
rubato questo da Andre tappeto ladri
github ma i principi sono gli stessi
supponiamo di ricevere i caratteri di input
ciao e vogliamo modellare utilizzando un
rete neurale ricorrente l’allenamento
ai criteri viene fornito l’ input corrente
carattere e il precedente stato nascosto
predice il prossimo personaggio in modo da notare
qui ho un CH e sto cercando di
prevedere e ho posta e sto cercando di
prevedere L Ho L e sto cercando di
Prevedo che io e L sono Allen che sto provando
prevedere oh se prendiamo questa analogia per
musica ho tutte le note che ho visto
fino a questo momento e io sono
cercando di prevedere la prossima nota che posso
iterare questo processo in avanti a
generare composizioni i criteri noi
voglio usare è e così il livello di output
qui è in realtà una probabilità
distribuzione scusa quindi prendi in
slide precedente e ora lo metto sopra
della mia rete srotolata così dato il
stato nascosto iniziale che abbiamo appena
inizializzato tutti gli zeri perché abbiamo a
simbolo di avvio unico utilizzato per inizializzare
i nostri pezzi e le dinamiche RNN quindi questo
è la distribuzione di probabilità sopra il
prossimo stato dato lo stato attuale
quindi questo YT è
per quello ed è una funzione del
Corrente l’ attuale input XT e
i precedenti stati nascosti da t meno
1 dobbiamo scegliere la r e n
parametri quindi queste matrici di peso
pesi di tutte le connessioni tra
tutti i neuroni per massimizzare
questa probabilità proprio qui il
probabilità della vera corale di Bach così
quaggiù abbiamo tutte le note del
vera corale di Bach e fino qui abbiamo
le prossime note di questo di quelli in un
mondo ideale se lo inizializziamo
con un po ‘di corale di Bach ci sarà solo
memorizzare e restituire il resto e
questo lo farà benissimo
criteri di predizione, ma non è così
esattamente quello che vogliamo, ma comunque
una volta che abbiamo questo criterio nel modo in cui
il modello è in realtà addestrato è di
usando la regola della catena dal calcolo dove
prendiamo i derivati ​​parziali qui
avere un segnale di errore quindi so che questo è
il vero Bach nota la vera nota che
Bach ha usato e questa è la cosa del mio modello
sta predicendo ok sono un po ‘
diverso come cambio i parametri
questa matrice di peso tra il nascosto
indicare le uscite di questa matrice di peso
tra il precedente in soggiorno nel
attuale stato nascosto e questo peso
matrice tra lo stato nascosto il
input come posso cambiare quelli intorno a come
faccio a muovere quelli per rendere questo output
qui più vicino a ciò che Bach aveva effettivamente
prodotto ora può questo criterio di allenamento
essere solo formalizzato
usato prendendo gradienti usando il calcolo
e iterando e poi ottimizzando
noto come discese con gradiente stocastico
e quando applicato a reti neurali è
un algoritmo chiamato back propagation
propagazione del pozzo indietro nel tempo se
vuoi diventare grintoso perché
abbiamo srotolato la rete neurale
tempo ma ancora una volta anche questa è astrazione
che non ti devono preoccupare perché questo
di solito è anche fornito per te come a
scatola nera all’interno di quadri comuni
come il flusso del tensore e la caris ora
abbiamo tutto quello che abbiamo ora con il modello di bot di Bach
ma ci sono un paio di parametri che noi
ho bisogno di guardare non te l’ho detto
esattamente quanto sia profondo il bot di Bach né io
ti ho detto quanto sono grandi questi strati prima
iniziamo quando si ottimizzano i modelli
questo è un apprendimento molto importante e
è probabilmente ovvio che ormai le GPU lo siano
molto importante per la sperimentazione rapida
Ho fatto un rapido punto di riferimento e l’ho trovato
una GPU offre un rendimento 8x
accelerare fare il mio tempo di formazione continua
giù da 256 minuti fino a solo 28
minuti quindi se vuoi iterare
ottenere rapidamente una GPU ti salverà
April like ti farà otto volte
più produttivo ho appena messo la parola
in profondità sulla mia rete neurale perché
è stata una buona parola buzz si scopre no
la profondità conta davvero cosa sto mostrando
anche qui ci sono le perdite di allenamento
come le perdite di convalida come cambio il
profondità la perdita di allenamento è quanto bene è
il mio modello sta facendo sul set di dati di addestramento
che sto lasciando vedere e lasciare
sintonizzare i suoi parametri per fare meglio su e
la perdita di validazione è quanto bene è mio
fare un modello sui dati che non l’ho lasciato fare
vedi così quanto è generalizzante
oltre a memorizzare solo i suoi input e
quello che notiamo qui è quello con giusto
un livello l’ errore di validazione è abbastanza
alto e mentre aumentiamo gli strati – diventa
tu qui giù tre ti prende questo rosso
curva che è bassa come va e se
vai avanti con quattro va
il backup dovrebbe essere sorprendente
non dovrebbe e il motivo per cui
non dovrebbe perché è aggiungere altro
strati che stai aggiungendo più espressivi
potere notare che siamo qui con quattro
strati che stai facendo esattamente come
buono come la curva rossa, quindi stai facendo
ottimo sul set di allenamento ma perché
il tuo modello ora è così espressivo che sei
memorizzare gli input e così tu
generalizzare più male quindi un simile
la storia può essere raccontata sullo stato nascosto
sospira quindi quanto sono ampie quelle celle di memoria
quante unità abbiamo in loro come noi
aumentare il livello di stato nascosto è
dimensione dello stato nascosto otteniamo prestazioni
miglioramenti nella generalizzazione da questo
curva blu fino in fondo fino ad arrivare
a 256 unità nascoste questa curva verde
dopo di ciò vediamo lo stesso tipo di
comportamento in cui l’ errore dell’insieme di allenamento
va sempre più in basso ma perché lo sei
memorizzare gli input perché il tuo modello
è ora troppo potente sei fuori il tuo
Errore di generalizzazione in realtà peggiora
infine LST em sono carini
complicato il motivo per cui ho introdotto
è perché è in realtà così critico
per la tua performance la base
tipo di elemento rete neurale ricorrente o
riutilizza lo standard ricorrente
architettura di rete neurale per il
la cella di memoria è mostrata qui in
lato di questa curva verde proprio qui
che in realtà non fa a entrambi
male, ma usando un lungo termine
memoria si ottiene questa curva gialla che
è in fondo che sta facendo il meglio
come da tutte le architetture che abbiamo
guardato in termini di celle di memoria chiuse
le unità ricorrenti sono più semplici o più facili
generalizzazione più semplice di LF CMS loro
non sono stati usati tanto e quindi c’è
meno letteratura su di loro ma su questo
compito che appaiono anche che stiano facendo molto
bene dopo tutto questo
sperimentazione e tutto questo manuale
ricerca di griglia siamo finalmente arrivati ​​a
architettura finale in cui le note sono le prime
incorporato in numeri reali a 32
dimensionale reale o vettoriale piuttosto e
allora abbiamo tre strati sovrapposti
memoria neuronale ricorrente a breve termine
rete che elabora queste note
sequenze nel tempo e ci siamo allenati
utilizzando la discesa del gradiente standard con a
paio di trucchi usiamo questa cosa chiamata
abbandonare e abbandonare con un ambiente
del 30% e ciò che significa è nel mezzo
connessioni successive tra strati
trasforma casualmente 30% dei neuroni off
sembra un po ‘ controintuitivo
perché potresti volerlo fare?
out spegnendo neuroni durante
allenandoti effettivamente costringi i neuroni
per imparare caratteristiche più robuste che sono
indipendenti l’ uno dall’altro
se i neuroni non sono sempre affidabili
avvalersi se tali connessioni non lo sono
sempre disponibile in modo affidabile quindi ci sono
sempre disponibili in modo affidabile quindi i neuroni
potrebbe imparare che combinare questi due
caratteristiche e per accadere in modo da finire
ottenere funzioni correlate dove
i nuovi in ​​realtà stanno imparando il
stessa caratteristica esattamente con dropout siamo
in grado ci mostreremo in realtà nel prossimo
Scorri che la generalizzazione migliora come noi
aumentare questo numero fino a un certo punto
conduciamo anche qualcosa chiamato
Malese di bachelor praticamente solo
prende i tuoi dati e li centra indietro
intorno allo zero e ridimensiona la varianza così
di cui non devi preoccuparti
numero in virgola mobile overflow o inferiore
scorre e usiamo il passo di tipo 128 troncato
di nuovo propagazione nel tempo
un’altra cosa che farà il tuo ottimizzatore
gestire per te ma ad un alto livello cosa
ciò che sta facendo è piuttosto che srotolare
l’intera rete che sull’intero
sequenza di input che potrebbe essere di decine di
migliaia di note a lungo
ho decine di migliaia di note
a lungo lo srotoliamo solo 128 e noi
troncare i segnali aerei che fondamentalmente
dì dopo 120 passi temporali qualunque cosa tu faccia
qui non influenzerà il
futuro
troppo qui scorre la mia promessa
abbandonare in modo intuitivo mentre giriamo
quando iniziamo a ritirarci o girarci
da neuroni casuali o da neuroni casuali
connessioni che in realtà generalizziamo
meglio vediamo che senza abbandonare il
il modello in realtà inizia a sovraffaticare
drammaticamente sai che migliora
generalizzando che peggiora e
peggio e peggio a generalizzare perché
ha così tante connessioni che può
impara così tanto che si accende da e abbandonano
fino a 0,3 ottieni questa curva viola a
il fondo in cui ti sei rivolto solo
la giusta quantità in modo che le caratteristiche
il modello di apprendimento sono robusti
può generalizzare indipendentemente dagli altri
caratteristiche e se lo si alza troppo in alto
quindi ora ti stai lasciando cadere così tanto
stai iniettando più rumore di
regolarizzando il tuo modello in realtà
non generalizzare così bene e la storia
sul lato allenamento è anche coerente
man mano che aumentiamo il dropout lo fai rigorosamente
peggio per l’allenamento e questo ha senso
anche perché questa non è generalizzazione
questo è solo il modo in cui può il modello
memorizzare i dati di input e se si accende
input fuori memorizzerai questo bene
fantastico con il modello Train che possiamo fare
molte cose che possiamo comporre e possiamo
armonizzare e il modo in cui noi componiamo è il
seguendo abbiamo gli stati nascosti e
abbiamo gli input e abbiamo il modello
pesi e quindi possiamo usare il modello
pesi per formare questo predittivo
distribuzione qual è la probabilità di
la mia nota corrente dato tutto il
note precedenti che ho visto prima da
questa distribuzione di probabilità abbiamo solo
scritto prendiamo una nota secondo
in che modo tale distribuzione è parametrizzata
così qui questo potrebbe essere come penso L
ha il peso più alto qui e poi così
dopo averlo provato, basta impostare XT uguale
a qualsiasi cosa abbiamo provato da lì e
lo consideriamo semplicemente come la verità che assumiamo
che qualunque fosse l’ uscita era proprio lì
è ora l’input per il passo successivo
e quindi iteriamo questo processo per
le parole quindi iniziano senza note
assaggi il simbolo di partenza e poi tu
solo andare avanti fino a quando non assaggiare alla fine
simbolo e poi
in questo modo siamo in grado di generare romanzi
l’ armonizzazione automatica delle composizioni è
in realtà una generalizzazione della composizione
in composizione ciò che fondamentalmente facevamo era
Ho ottenuto un simbolo di inizio riempire il resto
l’armonizzazione è dove dici che ho
la melodia che ho preso la linea base o che ho
ottenuto queste note certe compilare il
parti che non ho specificato e per questo
abbiamo effettivamente proposto un subottimale
strategia quindi ho intenzione di lasciare alpha
denota le cose che ci vengono date così
alfa potrebbe essere come 1 3 7 i punti in
tempo in cui le note sono fisse e il
problema di privatizzazione è necessario
scegli le note che non sono fisse o noi
sottomette l’ input alla sequenza da X 1 a X
anche noi dobbiamo scegliere l’intero
composizione tale che le note che
ci viene dato che X alpha è già stato risolto
e così le nostre variabili decisionali sono le
cose che non sono in alpha e di cui abbiamo bisogno
per massimizzare questa probabilità
distribuzione il mio tipo di soluzione avida
che ho ricevuto molte critiche
perché va bene sei a questo punto nel tempo
basta provare la cosa più probabile a
il prossimo punto nel tempo il motivo per cui
questo viene criticato è perché se tu
scegliere avidamente senza guardare a cosa
influenza questa decisione ora potrebbe avere un impatto
sul tuo futuro potresti scegliere
qualcosa che proprio non fa alcuna
senso nel contesto armonico futuro ma
può suonare davvero bene in questo momento è
un po ‘come pensare è un po’ come
agire senza pensare al
conseguenze della tua azione ma il
testimonianza di quanto bene questo in realtà
esegue non è quello che potrebbe essere così male
potrebbe essere teoricamente in realtà
quanto bene lo fa empiricamente
ancora convincente e lo scopriremo presto
ma prima di andare là scopriamo il
scatola nera Ho parlato di neurale
reti è solo questa cosa che tu
può semplicemente ottimizzare i dati di lancio
impara le cose diamo un’occhiata dentro
e vedi cosa sta succedendo e così via
quello che ho fatto qui è che ho preso il
varie celle di memoria del mio ricorrente
rete neurale e l’ho srotolata
tempo così sull’asse x vedi tempo e
sull’asse y ti sto mostrando il
attivazioni di tutte le unità nascoste
quindi questo è come il numero di neuroni
un sintonizzatore sul numero 32 questo è neurone
numero uno – numero di neurone 256 in
primo livello nascosto e allo stesso modo questo è
neurone numero uno – numero di neuroni 256 in
il secondo livello nascosto questi nessuno
schema lì non voglio dire che tipo di
vedo come se ci fosse questo piccolo?
striscio proprio qui e sembra presentarsi
ovunque e proprio qui ma
non c’è troppo senso intuitivo
che posso fare di questa immagine e
questa è una critica comune di profondità
reti neurali sono come scatole nere
dove non sappiamo come funzionano davvero
dall’interno ma sembrano fare
terribilmente buono come ci avviciniamo al
le cose in uscita cominciano a fare un po ‘
più senso così così così in precedenza
mostrando le unità nascoste del primo
e secondo strato ora sto mostrando il
terzo strato oltre che lineare
combinazione del terzo strato e
infine le uscite del modello e come
arrivi verso la fine che inizi a vedere
oh, c’è questo piccolo schema
questo sembra quasi un rotolo di pianoforte se
ti ricordi la rappresentazione della musica
Ho mostrato in precedenza, dove abbiamo avuto il tempo su
l’ asse x e il passo sull’asse y questo
sembra terribilmente simile a questo e questo
non è sorprendente o ricordare noi
addestrato la rete neurale per prevedere
la prossima nota data la nota corrente o
tutte le note precedenti se la rete
stava facendo perfettamente ci aspetteremmo
basta vedere l’input qui in ritardo di a
passo singolo tempo e così è
non sorprende che vediamo qualcosa
che assomiglia all’input ma non lo è
abbastanza esattamente l’ input a volte vediamo
come più previsioni a un certo punto
nel tempo e questo è davvero rappresentativo
l’incertezza all’interno del nostro
previsioni quindi se rappresentassi il
distribuzione di probabilità non siamo solo
dire che la prossima nota è quindi questa
piuttosto stiamo dicendo che siamo abbastanza sicuri
che quella nota successiva è questa con questa
Probabilità ma potrebbe anche essere questo
con questa probabilità che probabilità I
chiamato questo il rotolo di pianoforte probabilistico
Non so se questo è standard
terminologia qui è uno dei miei più
interessanti intuizioni che ho trovato da
questo modello sembra essere in realtà
imparando concetti di teoria musicale e allora
Sto mostrando qui è un input che io
fornito al modello e qui ho scelto
fuori alcuni neuroni e oh no questi neuroni
sono selezionati in modo casuale quindi non l’ho fatto solo
andare e ho pescato per quelli che
in quel modo, invece, mi sono imbattuto casualmente
il generatore di numeri ne ha presi otto
e poi li ho consegnati alla mia musica
il più caro collaboratore e io ero come ehi
c’è qualcosa lì ed ecco il
finiscono qui le note che ha fatto per me
ha detto quel neurone 64 questo e
strato uno neurone 138 questo uno loro
sembra essere perfetto
Cadenza con accordi di posizione della radice in
la chiave tonica più teoria musicale di me
può capire ma se guardo qui
è come quella forma proprio lì sul
il rullo del pianoforte assomiglia a quella forma sul
il rullo del pianoforte assomiglia a quella forma sul
rotolo di pianoforte interessante strato di neuroni uno
o neurone 151 Credo che sia questo
le frasi finali di due cadenze minori e
quattro no, questo è dispiaciuto e e
di nuovo guardo qui, ok, sì, quel tipo
di accordo qui sembra un po ‘ come
quella corda proprio lì sembrano essere
specializzato nel selezionare specifici
i tipi di accordi vanno bene così è l’ apprendimento
Analisi dei numeri romani e tonici e
accordi di posizione della radice e Cadence e
l’ultimo dove un neurone ottanta
sette e strato due neurone 37 credo
quello è questo in quello che sono
individuando I sei accordi non ne ho idea
cosa significa
quindi ti ho mostrato la composizione automatica a
l’inizio della presentazione quando io
ho preso musica di Bach Bach e io
presumibilmente sostenuto che fosse Bach, lo farò ora
mostra come suona l’armonizzazione
e questo è con il sub ottimale
strategia che ho proposto per cui prendiamo un
melodia come
[Musica]
diciamo al modello che questo deve essere il
linea soprano quali sono gli altri probabili
essere come questo è un po ‘convincente
è quasi come un accordo di Do maggiore barocco
progressione ciò che è veramente interessante
però è che non solo possiamo semplicemente
armonizzare melodie semplici come quelle di noi
può effettivamente prendere melodie popolari come
Questo
[Musica]
possiamo generare un romanzo barocco
armonizzazione di ciò che Bach potrebbe avere
fatto se avesse sentito scintillio poco scintillio
stella durante la sua vita
ora sto uscendo dalla pista dov’è
come oh questo è il mio modello sembra così
bene suona così realistico sì, ma io
stava solo criticando all’inizio di
il discorso
il mio terzo obiettivo di ricerca era in realtà come
possiamo determinare un modo standardizzato per
valutare quantitativamente la performance di
modelli generativi per questo particolare
compito e uno che consiglio a tutti
di composizione automatica è quello di fare a
esperimento di ascolto soggettivo e così
quello che abbiamo fatto è stato costruito
václav comm e sembra che sia così
ho una pagina iniziale ed è una specie di
cercando di diventare virale, ti sta chiedendo
dire la differenza tra Bach e a
computer erano soliti dire uomo contro
macchina ma l’interfaccia è semplice
ti vengono date due scelte, una di queste è
Bach uno di loro è Bach bot e tu sei
chiesto di distinguere quale fosse il
attuale Bach abbiamo messo questo in su sul
Internet
Ne ho circa millenovecento
partecipanti da tutto il mondo
i partecipanti tendevano ad essere all’interno del
gruppo da diciotto a quarantacinque anni
distretto abbiamo un sorprendentemente grande
numero di utenti esperti che hanno deciso di
contribuisci abbiamo definito esperto come a
ricercatore qualcuno che è stato pubblicato o a
insegnante qualcuno con professionista
accreditamento come insegnante di musica
avanzato come qualcuno che ha chi ha
studiato in un programma di laurea per la musica
e intermedio qualcuno che interpreta un
strumento ed ecco come l’hanno fatto
Ho codificato questi come se li avessi codificati
con SAT B per rappresentare la parte che
è stato chiesto di essere armonizzato così questo è
dato il basso tenore alto armonizzato
con soprano quest’anno è stato dato giusto
il contrabbasso soprano ha armonizzato il
medio – e questo è composto di tutto
Non ti darò niente di questo
il risultato che ho codificato questo
intero discorso solo i partecipanti sono solo
in grado di distinguere Bach da Bach
comprato il 7% in più rispetto al caso casuale ma
ci sono altri risultati interessanti
qui
beh immagino che questo non sia troppo sorprendente
se elimini la linea soprano allora allora
Bot di Bach è fuori per creare un convincente
melodia e non fa molto bene
mentre se elimini la linea di basso
Bach molto meglio ora penso
questa è in realtà una conseguenza del
modo in cui ho scelto di affrontare la polifonia in
il senso che ho serializzato la musica
dal soprano alto tenore basso e così via
il tempo di Bach Bach avuto modo di capire
quale potrebbe essere la nota di basso già
visto il soprano alto e la nota tenore
in quel momento e così via
aveva già un’armonica molto forte
contesto su quale nota potrebbe sembrare buona
mentre se io mentre quando ho il
nota soprano Bach watt non ha idea di cosa
la nota di basso tenore alto potrebbe essere e così
solo andando a fare una congettura casuale che
potrebbe essere totalmente fuori luogo per
convalidare questa ipotesi che è un’opera
lasciato per il futuro potresti serializzare
in un ordine diverso come il tenore dei bassi
Soprano contralto potresti eseguire questo
Sperimenta di nuovo e puoi vedere e tu
si aspetterebbe di vederlo andare giù come questo
se l’ipotesi è vera e
diversamente se non qui ho preso il
stessa trama esatta dalla trama precedente
tranne che ora l’ho scomposto per musica
esperienza senza sorprese
tu vedi questa curva dove le persone
stanno facendo o stanno meglio come ottengono
più esperto quindi i novizi sono come
quasi solo il tre percento meglio dove
gli esperti sono migliori del sedici percento
probabilmente sanno che Bach ce l’hanno
memorizzato in modo che possano dire al
differenza ma quella interessante è
qui gli esperti fanno molto peggio
che casualità quando si ottiene quando
confrontando il basso comprato da Bach a quello di Bach
armonizzazioni in realtà non ho un
buona ragione per cui ma è sorprendente
a me sembra che gli esperti pensino al blocco
bot è più convincente dell’attuale Bach
quindi in conclusione ho presentato un profondo
lungo modello generativo di memoria a breve termine
per comporre il completamento e la generazione
musica polifonica e questo modello non lo è
proprio come la ricerca di cui sto parlando
su questo nessuno lo userà mai
in realtà open source è sul mio github
e inoltre il cervello di Google su Google
il progetto magenta è in realtà integrato
è già in Google magenta, quindi se tu
Usa il
rete neurale polifonica ricorrente
modello a magenta e il flusso del tensore
progetti che userete per il bok-bok
modella il modello sembra imparare la musica
teoria senza alcuna conoscenza precedente noi
non ho detto che questo è un accordo
la cadenza questo è un tonico solo
ha deciso di capirlo da solo in
per ottimizzare le prestazioni su un
compito di composizione automatica per me questo
suggerisce quella teoria musicale con tutti
le sue regole e tutti i suoi formalismi
in realtà è utile per comp
componendo infatti è così utile che a
macchina addestrata per ottimizzare la composizione
composizione ha deciso di specializzarsi su
questi concetti finalmente abbiamo condotto il
il più grande test di Turing musicale fino ad oggi
1.700 partecipanti solo il 7% dei quali
risultati migliori rispetto possibilità casuale
nota obbligatoria al mio datore di lavoro che facciamo
open slitter facciamo outsourcing freelance
se hai bisogno di un team di sviluppo lasciami
so altro che grazie mille
per la tua attenzione è stato un piacere
parlando a tutti voi
[Applausi]
Please follow and like us: