Apprendimento automatico e Reti Neurali - pagina 55

 

Lezione 6.3 — Il metodo del momentum



Lezione 6.3 — Il metodo del momentum [Neural Networks for Machine Learning]

In questo video, discuteremo diversi problemi relativi all'utilizzo della discesa del gradiente stocastico con mini-batch ed esploreremo alcune tecniche per migliorarne l'efficacia. Queste tecniche sono spesso considerate "l'arte nera" delle reti neurali e tratteremo alcune di quelle chiave.

In primo luogo, affrontiamo il problema dell'inizializzazione del peso in una rete neurale. Se due unità nascoste hanno pesi e distorsioni identici, riceveranno sempre lo stesso gradiente e non potranno apprendere rilevatori di caratteristiche differenti. Per consentire loro di apprendere caratteristiche distinte, è fondamentale inizializzare i loro pesi in modo diverso. Raggiungiamo questo obiettivo utilizzando piccoli pesi casuali che rompono la simmetria. Inoltre, è vantaggioso che i pesi iniziali abbiano grandezze diverse, considerando il fan-in di ciascuna unità nascosta. Ad esempio, pesi maggiori possono portare alla saturazione in unità con un significativo fan-in, mentre pesi inferiori sono adatti per unità con un piccolo fan-in. Come regola generale, la dimensione dei pesi iniziali dovrebbe essere proporzionale alla radice quadrata del ventaglio.

Lo spostamento degli input o l'aggiunta di una costante a ciascun componente di input può sorprendentemente avere un impatto significativo sulla velocità di apprendimento. Questo spostamento aiuta con la discesa più ripida in quanto può alterare sostanzialmente la superficie dell'errore. Si consiglia spesso di spostare ciascun componente di input per avere un valore medio pari a zero nell'intero set di addestramento.

La scalatura degli input è un'altra considerazione importante quando si utilizza la discesa più ripida. Il ridimensionamento implica la trasformazione dei valori di input per garantire che ogni componente abbia una varianza unitaria sull'intero set di addestramento, rendendoli valori tipici di uno o meno uno. Questo ridimensionamento consente un migliore comportamento della superficie di errore, evitando un'elevata curvatura per i componenti di input di grandi dimensioni e una bassa curvatura per quelli piccoli.

La decorrelazione dei componenti di input può facilitare notevolmente l'apprendimento. Rimuovendo le correlazioni tra i componenti di input, riduciamo la ridondanza e miglioriamo l'efficienza dell'apprendimento. L'analisi delle componenti principali (PCA) è una tecnica comunemente usata per ottenere la decorrelazione. Implica la rimozione di componenti con autovalori piccoli e il ridimensionamento dei componenti rimanenti dividendoli per le radici quadrate dei loro autovalori. Questo processo porta a una superficie di errore circolare per i sistemi lineari, che semplifica l'apprendimento.

Affrontiamo ora alcuni problemi comuni riscontrati nell'addestramento della rete neurale. Iniziare con un tasso di apprendimento eccessivamente elevato può portare le unità nascoste a stati estremi, dove le loro derivate si avvicinano allo zero. Questo fa sì che l'apprendimento si interrompa, dando spesso l'impressione di essere bloccati in un minimo locale. In realtà, la rete è probabilmente intrappolata su un plateau.

Un'altra sfida sorge quando si classifica utilizzando l'errore al quadrato o l'errore di entropia incrociata. Inizialmente, la rete apprende rapidamente la migliore strategia di ipotesi, che consiste nel rendere l'unità di output uguale alla proporzione prevista di essere uno. Tuttavia, un ulteriore miglioramento oltre questa strategia di ipotesi può essere lento, specialmente con reti profonde e piccoli pesi iniziali.

Quando si regola il tasso di apprendimento, è essenziale trovare il giusto equilibrio. Diminuire il tasso di apprendimento troppo presto o troppo può ostacolare i progressi, mentre ridurlo verso la fine della formazione può aiutare a stabilizzare le prestazioni della rete.

Ora esploriamo quattro metodi specifici per accelerare in modo significativo l'apprendimento in mini-batch:

  1. Momentum: invece di modificare direttamente i pesi in base al gradiente, il momentum implica l'utilizzo del gradiente per aggiornare la velocità degli aggiornamenti del peso. Questo slancio consente alla rete di ricordare i gradienti precedenti e aiuta ad accelerare l'apprendimento.

  2. Tassi di apprendimento adattivi: l'assegnazione di un tasso di apprendimento separato per ciascun parametro e la sua regolazione graduale sulla base di misurazioni empiriche può migliorare l'apprendimento. Se il segno del gradiente continua a cambiare, indicando l'oscillazione, il tasso di apprendimento diminuisce. Se il segno rimane coerente, indicando il progresso, il tasso di apprendimento aumenta.

  3. RMSprop: questo metodo comporta la divisione degli aggiornamenti del peso per una media corrente delle magnitudo del gradiente recente. Regola dinamicamente gli aggiornamenti del peso in base all'entità dei gradienti, consentendo una gestione efficace di vari intervalli di gradiente. RMSprop è un adattamento mini-batch di Rprop.

Lecture 6.3 — The momentum method [Neural Networks for Machine Learning]
Lecture 6.3 — The momentum method [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
 

Lezione 6.4 — Tassi di apprendimento adattivi per ogni connessione



Lezione 6.4 — Tassi di apprendimento adattivo per ogni connessione [Reti neurali per l'apprendimento automatico]

In questo video esploreremo un metodo noto come tasso di apprendimento adattivo, inizialmente sviluppato da Robbie Jacobs alla fine degli anni '80 e successivamente migliorato da altri ricercatori. Il concetto alla base dei tassi di apprendimento adattivi è quello di assegnare un tasso di apprendimento univoco a ciascuna connessione in una rete neurale, sulla base di osservazioni empiriche di come si comporta il peso su tale connessione durante gli aggiornamenti. Questo approccio consente di mettere a punto il processo di apprendimento diminuendo il tasso di apprendimento quando il gradiente del peso continua a invertirsi e aumentandolo quando il gradiente rimane costante.

Avere velocità di apprendimento adattivo separate per ciascuna connessione è vantaggioso, specialmente nelle reti multistrato profonde. In tali reti, i tassi di apprendimento possono variare in modo significativo tra pesi diversi, in particolare tra pesi in livelli diversi. Inoltre, il ventaglio di un'unità, che determina la dimensione degli effetti di overshoot durante la regolazione di più pesi in entrata per correggere un errore, richiede anche tassi di apprendimento diversi. Fan-in più grandi possono portare a effetti di overshoot più significativi, rendendo necessario adattare di conseguenza i tassi di apprendimento.

Per implementare tassi di apprendimento adattivi, un tasso di apprendimento globale viene impostato manualmente e moltiplicato per un guadagno locale specifico per ciascun peso. Inizialmente, il guadagno locale è impostato a 1 per ogni peso. L'aggiornamento del peso viene quindi determinato moltiplicando il tasso di apprendimento per il guadagno locale e la derivata dell'errore per quel peso. Il guadagno locale viene adattato aumentandolo se il gradiente per il peso non cambia segno e diminuendolo se i gradienti hanno segno opposto. Vengono impiegati aumenti additivi e diminuzioni moltiplicative, con l'obiettivo di smorzare rapidamente grandi guadagni se si verificano oscillazioni.

È interessante considerare il comportamento dei tassi di apprendimento adattivo quando i gradienti sono casuali. In tali casi, ci sarà un numero uguale di aumenti e diminuzioni nei guadagni, con il risultato di oscillare intorno a un guadagno di 1. Se i gradienti hanno costantemente la stessa direzione, il guadagno può diventare molto più grande di 1, mentre gradienti costantemente opposti possono rendere il guadagno molto più piccolo di 1, indicando l'oscillazione attraverso un burrone.

Per migliorare l'efficacia dei tassi di apprendimento adattivo, è importante limitare la dimensione dei guadagni entro un intervallo ragionevole, ad esempio da 0,1 a 10 o da 0,01 a 100. Guadagni eccessivi possono portare all'instabilità e impedire la convergenza dei pesi. Mentre i tassi di apprendimento adattivo sono stati inizialmente progettati per l'apprendimento in batch completo, possono essere applicati anche con mini-batch. Tuttavia, si preferiscono mini-batch più grandi per ridurre al minimo l'influenza degli errori di campionamento e garantire che i cambiamenti di segno nei gradienti riflettano l'attraversamento di un burrone.

È possibile combinare i tassi di apprendimento adattivo con lo slancio, come suggerito da Jacobs. Invece di confrontare il gradiente attuale con il gradiente precedente, viene determinato l'accordo di segno tra il gradiente attuale e la velocità (gradiente accumulato) per quel peso. Questa combinazione sfrutta i vantaggi dello slancio e dei tassi di apprendimento adattivo. Mentre i tassi di apprendimento adattivo gestiscono gli effetti allineati all'asse, lo slancio può gestire ellissi diagonali e navigare rapidamente in direzioni diagonali, che i tassi di apprendimento adattivo da soli non possono raggiungere.

Ci sono alcune considerazioni e tecniche aggiuntive per migliorare le prestazioni dei tassi di apprendimento adattivo. È fondamentale trovare un equilibrio ed evitare che i guadagni diventino eccessivamente grandi. Se i guadagni diventano troppo grandi, possono portare all'instabilità e non diminuire abbastanza rapidamente, causando potenzialmente danni ai pesi.

Inoltre, vale la pena notare che i tassi di apprendimento adattivo sono stati progettati principalmente per l'apprendimento batch completo, in cui tutti gli esempi di addestramento vengono elaborati in un'unica iterazione. Tuttavia, possono essere applicati anche all'apprendimento in mini-batch, in cui vengono elaborati sottoinsiemi di esempi di addestramento alla volta. Quando si utilizzano mini-batch, è importante assicurarsi che la dimensione del mini-batch sia relativamente grande per mitigare l'influenza degli errori di campionamento. Questo aiuta a garantire che i cambiamenti di segno nei gradienti siano indicativi dell'attraversamento di un burrone piuttosto che essere dovuti esclusivamente alla variabilità di campionamento del mini-batch.

È anche possibile combinare i tassi di apprendimento adattivi con lo slancio, che può migliorare ulteriormente il processo di ottimizzazione. Invece di confrontare il gradiente attuale con il gradiente precedente, è possibile valutare l'accordo di segno tra il gradiente attuale e la velocità (cioè il gradiente accumulato) per quel peso. Incorporando lo slancio, è possibile ottenere una sinergia tra i vantaggi dello slancio e i tassi di apprendimento adattivo. I tassi di apprendimento adattivo si concentrano sulla gestione degli effetti allineati all'asse, mentre lo slancio è in grado di gestire efficacemente le ellissi diagonali e di navigare rapidamente in direzioni diagonali che possono essere difficili solo per i tassi di apprendimento adattivo.

I tassi di apprendimento adattivi offrono un modo per mettere a punto il processo di apprendimento nelle reti neurali assegnando tassi di apprendimento individuali a ciascuna connessione sulla base di osservazioni empiriche. Affrontano le sfide della variazione dei tassi di apprendimento tra pesi diversi nelle reti multistrato profonde e considerano il ventaglio delle unità. Tecniche come la limitazione delle dimensioni dei guadagni, la selezione appropriata di mini-batch e la combinazione di tassi di apprendimento adattivi con slancio possono ottimizzare ulteriormente il processo di formazione, con conseguente miglioramento delle prestazioni e della convergenza.

Lecture 6.4 — Adaptive learning rates for each connection [Neural Networks for Machine Learning]
Lecture 6.4 — Adaptive learning rates for each connection [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
 

Lezione 6.5 — Rmsprop: normalizzare il gradiente



Lezione 6.5 — Rmsprop: normalizzare il gradiente [Neural Networks for Machine Learning]

Il video introduce un metodo chiamato Rprop (Resilient Backpropagation), inizialmente progettato per l'apprendimento in batch completo. Condivide somiglianze con il popolare algoritmo di backpropagation ma con alcune differenze. Il relatore discute quindi come estendere Rprop per lavorare con mini-batch, che è essenziale per grandi set di dati ridondanti. Il metodo risultante, chiamato iRprop (Improved Rprop), combina i vantaggi di Rprop con l'efficienza dell'apprendimento in mini-batch.

La motivazione principale alla base di Rprop è affrontare la sfida delle diverse grandezze del gradiente. I gradienti nelle reti neurali possono variare da minuscoli a enormi, rendendo difficile la scelta di un singolo tasso di apprendimento globale. Rprop affronta questo problema considerando solo il segno del gradiente, assicurando che tutti gli aggiornamenti di peso siano della stessa dimensione. Questa tecnica è particolarmente utile per sfuggire a plateau con piccole pendenze, poiché anche con piccole pendenze, gli aggiornamenti del peso possono essere sostanziali.

Rprop combina il segno del gradiente con dimensioni del passo adattive in base al peso aggiornato. Invece di considerare l'entità del gradiente, si concentra sulla dimensione del passo precedentemente determinata per quel peso. La dimensione del passo si adatta nel tempo, aumentando in modo moltiplicativo se i segni degli ultimi due gradienti concordano e diminuendo in modo moltiplicativo se non sono d'accordo. Limitando le dimensioni dei gradini, impedisce loro di diventare troppo grandi o troppo piccoli.

Sebbene Rprop funzioni bene per l'apprendimento in batch completo, deve affrontare delle sfide se applicato a mini-batch. Viola l'idea centrale alla base della discesa del gradiente stocastico, che si basa sulla media dei gradienti su mini-batch successivi quando si utilizza un tasso di apprendimento ridotto. L'oratore spiega che Rprop incrementa il peso più volte con la sua attuale dimensione del passo e lo diminuisce solo una volta, portando a un aumento indesiderato della grandezza del peso.

Per superare questa limitazione, il relatore introduce RMSprop (Root Mean Square propagation) come versione mini-batch di Rprop. RMSprop garantisce che il numero utilizzato per dividere il gradiente rimanga coerente tra i mini-batch vicini. Raggiunge questo mantenendo una media mobile dei gradienti al quadrato per ogni peso. I gradienti al quadrato vengono ponderati utilizzando un fattore di decadimento (ad esempio, 0,9) e combinati con il valore quadratico medio precedente per calcolare il valore quadratico medio aggiornato. La radice quadrata del quadrato medio viene quindi utilizzata per normalizzare il gradiente, consentendo un apprendimento più efficace.

Il relatore afferma che è possibile apportare ulteriori sviluppi a RMSprop, come combinarlo con momentum o tassi di apprendimento adattivi su ciascuna connessione. Inoltre, fanno riferimento a metodi correlati, come lo slancio di Nesterov e un metodo proposto dal gruppo di Yann LeCun, che condivide somiglianze con RMSprop.

In sintesi, il relatore consiglia diversi metodi di apprendimento in base alle caratteristiche del dataset. Per set di dati di piccole dimensioni o set di dati di grandi dimensioni senza molta ridondanza, sono adatti metodi batch completi come gradiente coniugato non lineare, LBFGS o L-BFGS-B. I tassi di apprendimento adattivo o Rprop possono essere utilizzati anche per le reti neurali. Nel caso di grandi set di dati ridondanti, i metodi mini-batch sono essenziali. La prima opzione da provare è la discesa in pendenza standard con slancio. RMSprop è un altro metodo efficace da considerare, poiché combina i vantaggi di Rprop e dell'apprendimento in mini-batch. Il relatore suggerisce di esplorare ulteriori miglioramenti, ma al momento non esiste una ricetta semplice per addestrare le reti neurali a causa della diversa natura delle reti e dei compiti.

Lecture 6.5 — Rmsprop: normalize the gradient [Neural Networks for Machine Learning]
Lecture 6.5 — Rmsprop: normalize the gradient [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
 

Lezione 7.1 — Sequenze di modellazione: una breve panoramica



Lezione 7.1 — Sequenze di modellazione: una breve panoramica [Neural Networks for Machine Learning]

In questo video, il relatore fornisce una panoramica dei diversi tipi di modelli utilizzati per le sequenze. Iniziano discutendo i modelli autoregressivi, che prevedono il termine successivo in una sequenza basata sui termini precedenti. Quindi menzionano variazioni più complesse di modelli autoregressivi che incorporano unità nascoste. Il relatore prosegue introducendo modelli con stato e dinamica nascosti, come sistemi dinamici lineari e modelli di Markov nascosti. Sebbene questi modelli siano complessi, il loro scopo è mostrare la relazione tra reti neurali ricorrenti e questi tipi di modelli nel contesto della modellazione di sequenze.

Quando si modellano sequenze utilizzando l'apprendimento automatico, l'obiettivo è spesso quello di trasformare una sequenza in un'altra. Ad esempio, convertire parole inglesi in parole francesi o trasformare le pressioni sonore in identità di parole per il riconoscimento vocale. In alcuni casi, potrebbe non esserci una sequenza target separata, quindi il termine successivo nella sequenza di input può fungere da segnale didattico. Questo approccio è più naturale per le sequenze temporali, poiché esiste un ordine naturale per le previsioni. Tuttavia, può anche essere applicato alle immagini, offuscando la distinzione tra apprendimento supervisionato e non supervisionato.

Il relatore fornisce quindi una revisione di altri modelli di sequenza prima di immergersi nelle reti neurali ricorrenti (RNN). Spiegano che i modelli autoregressivi senza memoria possono essere estesi aggiungendo unità nascoste in una rete neurale feed-forward. Tuttavia, sottolineano che i modelli senza memoria sono solo una sottoclasse di modelli per le sequenze. Un altro approccio consiste nell'utilizzare modelli con stati nascosti e dinamiche interne, che possono memorizzare le informazioni per un tempo più lungo. Questi modelli, come i sistemi dinamici lineari ei modelli di Markov nascosti, implicano inferenza probabilistica e algoritmi di apprendimento.

I sistemi dinamici lineari sono ampiamente utilizzati in ingegneria e hanno stati nascosti a valori reali con dinamica lineare e rumore gaussiano. I modelli di Markov nascosti, invece, utilizzano distribuzioni discrete e transizioni di stato probabilistiche. Sono comunemente usati nel riconoscimento vocale e hanno algoritmi di apprendimento efficienti basati sulla programmazione dinamica.

L'oratore spiega i limiti dei modelli di Markov nascosti quando si tratta di trasmettere grandi quantità di informazioni tra la prima e la seconda metà di un enunciato. Questa limitazione è dovuta alla limitata capacità di memoria dello stato nascosto. Ciò porta all'introduzione di reti neurali ricorrenti, che hanno stati nascosti distribuiti e dinamiche non lineari, rendendole più efficienti nel ricordare le informazioni.

Le reti neurali ricorrenti possono esibire vari comportamenti, tra cui oscillazione, assestamento su attrattori puntuali (utile per il recupero della memoria) e comportamento caotico (utile in determinate circostanze). Inizialmente si pensava che l'idea che un RNN potesse imparare a implementare più programmi utilizzando diversi sottoinsiemi del suo stato nascosto li rendesse molto potenti. Tuttavia, gli RNN sono computazionalmente impegnativi da addestrare e sfruttare il loro pieno potenziale è stato un compito difficile.

Il video fornisce una panoramica dei diversi modelli di sequenza, introduce il concetto di reti neurali ricorrenti e ne evidenzia la potenza computazionale e le sfide nell'addestramento.

Lecture 7.1 — Modeling sequences: a brief overview [Neural Networks for Machine Learning]
Lecture 7.1 — Modeling sequences: a brief overview [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
For cool updates on AI research, follow me at https://twitter.com/iamvriad.Lecture from the course Neural Networks for Machine Learning, as taught by Geoffre...
 

Lezione 7.2 — Addestramento di RNN con retropropagazione



Lezione 7.2 — Addestramento di RNN con retropropagazione [Reti neurali per l'apprendimento automatico]

In questo video, parlerò dell'algoritmo di backpropagation attraverso il tempo, che è un metodo comune per addestrare reti neurali ricorrenti. L'algoritmo è semplice una volta compresa la relazione tra una rete neurale ricorrente e una rete neurale feed-forward con più livelli che rappresentano diverse fasi temporali. Tratterò anche vari approcci per fornire input e output desiderati a reti neurali ricorrenti.

Il diagramma illustra una semplice rete ricorrente con tre neuroni interconnessi. Ogni connessione ha un ritardo di uno e la rete opera in tempo discreto con tick interi. Per addestrare una rete ricorrente, dobbiamo riconoscere che si tratta essenzialmente di una versione espansa di una rete feed-forward nel tempo. La rete ricorrente inizia in uno stato iniziale al tempo zero e usa i suoi pesi di connessione per generare un nuovo stato al tempo uno. Ripete questo processo, utilizzando gli stessi pesi per produrre successivi nuovi stati.

La backpropagation è efficace nell'apprendimento quando sono presenti vincoli di peso. Questo è stato osservato anche nelle reti convoluzionali. Per incorporare i vincoli di peso, calcoliamo i gradienti come al solito, ignorando i vincoli e quindi modifichiamo i gradienti per mantenere i vincoli. Ad esempio, se vogliamo che w1 sia uguale a w2, assicuriamo che la variazione di w1 sia uguale alla variazione di w2 prendendo le derivate rispetto a w1 e w2, aggiungendole o facendone la media, e applicando la stessa quantità per aggiornare entrambi i pesi. Finché i pesi soddisfano inizialmente i vincoli, continueranno a farlo.

L'algoritmo di backpropagation attraverso il tempo è semplicemente un termine usato per descrivere il processo di trattare una rete ricorrente come una rete feed-forward con pesi condivisi e addestrarla usando backpropagation. Nel dominio del tempo, il passaggio in avanti accumula le attività in ogni intervallo di tempo, mentre il passaggio all'indietro estrae le attività dallo stack e calcola le derivate dell'errore per ogni intervallo di tempo. Questo passaggio all'indietro ad ogni passo temporale dà all'algoritmo il suo nome: retropropagazione nel tempo.

Dopo il passaggio all'indietro, sommiamo o facciamo la media delle derivate di tutti i passaggi temporali per ciascun peso. Quindi aggiorniamo tutte le istanze di quel peso dello stesso importo, proporzionale alla somma o alla media dei derivati. Un'ulteriore considerazione sorge se non specifichiamo lo stato iniziale di tutte le unità, come le unità nascoste o di output. In questo caso, dobbiamo avviarli in uno stato particolare. Un approccio consiste nell'impostare valori predefiniti, come 0,5, ma potrebbe non produrre risultati ottimali. In alternativa, possiamo apprendere gli stati iniziali trattandoli come parametri e regolandoli in base al gradiente della funzione di errore rispetto allo stato iniziale.

Esistono vari metodi per fornire input a una rete neurale ricorrente. Possiamo specificare lo stato iniziale di tutte le unità, un sottoinsieme delle unità o gli stati in ogni fase temporale per un sottoinsieme delle unità. Quest'ultimo viene spesso utilizzato quando si tratta di dati sequenziali. Allo stesso modo, esistono diversi modi per specificare le destinazioni per una rete ricorrente. Possiamo specificare gli stati finali desiderati per tutte le unità o per più passaggi temporali se vogliamo addestrarlo a stabilirsi in un particolare attrattore. Includendo i derivati da ogni fase temporale durante la retropropagazione, possiamo facilmente incorporare queste specifiche e incoraggiare l'apprendimento degli attrattori.

L'algoritmo di backpropagation attraverso il tempo è un'estensione diretta della backpropagation per l'addestramento di reti neurali ricorrenti. Trattando la rete ricorrente come una rete feed-forward espansa con pesi condivisi, possiamo applicare la backpropagation e regolare gli stati e i pesi iniziali per ottimizzare l'addestramento. Esistono vari metodi per fornire input e output desiderati alle reti ricorrenti, consentendo flessibilità nella gestione di dati sequenziali e formazione per obiettivi specifici.

Lecture 7.2 — Training RNNs with back propagation [Neural Networks for Machine Learning]
Lecture 7.2 — Training RNNs with back propagation [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
 

Lezione 7.3 — Un esempio giocattolo di addestramento di un RNN



Lezione 7.3 — Un esempio giocattolo di addestramento di una RNN [Neural Networks for Machine Learning]

In questo video spiegherò come una rete neurale ricorrente (RNN) risolve un problema con un giocattolo. Viene scelto un problema giocattolo per mostrare le capacità degli RNN che non sono facilmente realizzabili con le reti neurali feed-forward. Il problema qui dimostrato è l'addizione binaria. Dopo che l'RNN ha imparato a risolvere il problema, possiamo esaminare i suoi stati nascosti e confrontarli con gli stati nascosti di un automa a stati finiti che risolve lo stesso problema.

Per illustrare il problema della somma di due numeri binari, potremmo addestrare una rete neurale feed-forward. Tuttavia, ci sono limitazioni con questo approccio. Dobbiamo determinare in anticipo il numero massimo di cifre sia per i numeri di input che per il numero di output. Inoltre, l'elaborazione applicata a diversi bit dei numeri in ingresso non è generalizzabile. Di conseguenza, la conoscenza dell'addizione delle ultime due cifre e della gestione dei riporti risiede in pesi specifici. Quando si ha a che fare con parti diverse di un lungo numero binario, la conoscenza deve essere codificata in pesi diversi, portando a una mancanza di generalizzazione automatica.

L'algoritmo per l'addizione binaria è rappresentato nell'immagine. Gli stati nell'algoritmo assomigliano a quelli di un modello di Markov nascosto, tranne per il fatto che non sono veramente nascosti. Il sistema opera in uno stato alla volta, eseguendo un'azione all'ingresso in uno stato (stampando 1 o 0). Quando si trova in uno stato, riceve un input, che consiste in due numeri dalla colonna successiva, provocando una transizione a un nuovo stato. Ad esempio, se si trova nello stato di riporto e ha appena stampato un 1, incontrando un 1 1, rimane nello stesso stato e stampa un altro 1. Tuttavia, se incontra un 1 0 o 0 1, passa allo stato di riporto state ma stampa uno 0. Allo stesso modo, uno 0 0 lo porta allo stato no carry, dove stampa un 1. Questo processo continua per ogni passo temporale.

Una rete neurale ricorrente per l'addizione binaria richiede due unità di input e un'unità di output. Riceve due cifre di input ad ogni passo temporale e produce un output corrispondente alla colonna che ha incontrato due passi temporali fa. Per tenere conto del ritardo, la rete necessita di un ritardo di due fasi temporali, in cui la prima aggiorna le unità nascoste in base agli input e la seconda genera l'output dallo stato nascosto. L'architettura di rete è costituita da tre unità nascoste interconnesse, sebbene si possano utilizzare più unità nascoste per un apprendimento più rapido. Queste unità nascoste hanno connessioni bidirezionali con pesi variabili. Le connessioni tra le unità nascoste consentono al modello di attività in una fase temporale di influenzare il modello di attività nascosta nella fase temporale successiva. Le unità di input hanno connessioni feed-forward alle unità nascoste, consentendo alla rete di osservare le due cifre in una colonna. Allo stesso modo, le unità nascoste hanno connessioni feed-forward all'unità di output, consentendo la produzione di un output.

È affascinante analizzare ciò che la rete neurale ricorrente apprende. Apprende quattro modelli di attività distinti nelle sue tre unità nascoste, che corrispondono ai nodi nell'automa a stati finiti per l'addizione binaria. È fondamentale non confondere le unità in una rete neurale con i nodi in un automa a stati finiti. I nodi nell'automa si allineano con i vettori di attività della rete neurale ricorrente. L'automa è limitato a uno stato alla volta, proprio come le unità nascoste nell'RNN, che hanno esattamente un vettore di attività a ogni passo temporale. Sebbene un RNN possa emulare un automa a stati finiti, è esponenzialmente più potente nella rappresentazione. Con N neuroni nascosti, può avere due alla potenza di N possibili vettori di attività binarie. Sebbene abbia solo N quadrati di pesi, potrebbe non sfruttare appieno l'intero potere rappresentativo. Se il collo di bottiglia risiede nella rappresentazione, un RNN può superare un automa a stati finiti.

Ciò è particolarmente importante quando il flusso di input contiene due processi separati che si verificano contemporaneamente. Un automa a stati finiti deve aumentare esponenzialmente il proprio numero di stati per gestire i processi paralleli. Al contrario, una rete neurale ricorrente deve solo raddoppiare il numero di unità nascoste, raddoppiando così il numero di unità e quadruplicando il numero di stati vettoriali binari che può rappresentare.

Lecture 7.3 — A toy example of training an RNN [Neural Networks for Machine Learning]
Lecture 7.3 — A toy example of training an RNN [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
 

Lezione 7.4 — Perché è difficile addestrare un RNN?



Lezione 7.4 — Perché è difficile addestrare un RNN? [Reti neurali per l'apprendimento automatico]

In questo video, discuterò il problema dell'esplosione e della scomparsa dei gradienti che rende difficile l'addestramento delle reti neurali ricorrenti (RNN). Per molti anni, i ricercatori hanno creduto che modellare le dipendenze a lungo termine con gli RNN fosse quasi impossibile. Tuttavia, ora ci sono quattro approcci efficaci per affrontare questo problema.

Per capire perché l'addestramento degli RNN è impegnativo, dobbiamo riconoscere una differenza cruciale tra i passaggi in avanti e all'indietro in un RNN. Nel passaggio in avanti, le funzioni di schiacciamento come la funzione logistica vengono utilizzate per impedire l'esplosione dei vettori di attività. Ogni neurone nell'RNN impiega un'unità logistica, che vincola l'output tra 0 e 1. Ciò impedisce ai livelli di attività di crescere in modo incontrollabile.

Al contrario, il passaggio all'indietro è completamente lineare. Sorprendentemente, se raddoppiamo le derivate dell'errore al livello finale, anche tutte le derivate dell'errore raddoppieranno durante la retropropagazione. Le pendenze sono determinate dalle pendenze delle curve logistiche in punti specifici (contrassegnati da punti rossi nel video). Una volta completata la passata in avanti, le pendenze di queste tangenti vengono fissate. Durante la retropropagazione, i gradienti si propagano attraverso un sistema lineare in cui è stata fissata la pendenza della non linearità. Tuttavia, i sistemi lineari tendono a soffrire del problema dell'esplosione o della morte dei gradienti durante l'iterazione. Se i pesi sono piccoli, i gradienti si riducono esponenzialmente e diventano trascurabili. Al contrario, se i pesi sono grandi, i gradienti esplodono e sopraffanno il processo di apprendimento. Questi problemi sono più gravi negli RNN rispetto alle reti neurali feed-forward, soprattutto quando si tratta di lunghe sequenze.

Anche con un'attenta inizializzazione del peso, rimane difficile acquisire le dipendenze tra l'output corrente e gli eventi che si sono verificati molti passaggi temporali fa. Gli RNN hanno difficoltà a gestire le dipendenze a lungo raggio. Il video fornisce un esempio di come i gradienti possono svanire o esplodere durante l'addestramento di una rete neurale ricorrente per apprendere gli stati attrattori. Piccole differenze negli stati iniziali non portano a nessun cambiamento nello stato finale (gradienti che svaniscono), mentre lievi variazioni vicino ai confini provocano divergenze significative (gradienti che esplodono).

Per affrontare queste sfide, esistono quattro metodi efficaci per addestrare gli RNN. Il primo metodo è Long Short-Term Memory (LSTM), che altera l'architettura della rete per migliorare le capacità di memoria. Il secondo approccio prevede l'utilizzo di ottimizzatori avanzati in grado di gestire efficacemente piccoli gradienti. L'ottimizzazione senza Hessian, su misura per le reti neurali, eccelle nel rilevare piccoli gradienti con bassa curvatura. Il terzo metodo prevede un'attenta inizializzazione dei pesi e la creazione di un serbatoio di oscillatori debolmente accoppiati all'interno dello stato nascosto. Ciò consente alla rete di riverberare e ricordare le sequenze di input. Le connessioni tra le unità nascoste e le uscite vengono quindi addestrate, mentre le connessioni ricorrenti rimangono fisse. Il quarto metodo utilizza lo slancio e lo combina con la tecnica di inizializzazione utilizzata nelle reti di stato dell'eco. Questa modifica migliora la dinamica della rete, rendendola ancora più efficace.

La capacità di addestrare gli RNN è migliorata con questi approcci, superando le sfide poste dall'esplosione e dalla scomparsa dei gradienti.

Lecture 7.4 — Why it is difficult to train an RNN? [Neural Networks for Machine Learning]
Lecture 7.4 — Why it is difficult to train an RNN? [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
 

Lezione 7.5 — Memoria a lungo termine a breve termine



Lezione 7.5 — Memoria a lungo termine a breve termine [Reti Neurali per Machine Learning]

In questo video, spiegherò l'approccio noto come "Long Short-Term Memory" (LSTM) per l'addestramento di reti neurali ricorrenti. LSTM mira a creare una memoria a breve termine di lunga durata in una rete neurale impiegando moduli specializzati che facilitano il gating delle informazioni.

La cella di memoria in LSTM è progettata per conservare le informazioni per un periodo prolungato. Consiste di unità logistiche e lineari con interazioni moltiplicative. Quando viene attivata una porta di "scrittura" logistica, le informazioni entrano nella cella di memoria dal resto della rete ricorrente. Lo stato della porta di "scrittura" è determinato dalla rete ricorrente. Le informazioni rimangono nella cella di memoria fintanto che il gate "keep" è attivo, che è controllato dal resto del sistema. Per leggere le informazioni dalla cella di memoria viene attivata una porta logistica di "lettura" e il valore memorizzato viene recuperato e influenza gli stati futuri della rete neurale ricorrente.

LSTM utilizza unità logistiche perché hanno proprietà differenziabili, consentendo la retropropagazione attraverso di esse. Ciò consente alla rete di apprendere e ottimizzare la cella di memoria in più passaggi temporali. La retropropagazione attraverso la cella di memoria comporta l'aggiornamento dei pesi in base alle derivate dell'errore, che possono essere propagate indietro attraverso centinaia di passi temporali.

LSTM ha avuto particolare successo in attività come il riconoscimento della grafia. Può archiviare e recuperare informazioni in modo efficace, anche in presenza di scrittura corsiva. Ha mostrato prestazioni superiori rispetto ad altri sistemi nelle attività di lettura e scrittura e Canada Post ha iniziato a utilizzare i sistemi basati su LSTM per tali scopi.

Nel video viene mostrata una dimostrazione di un sistema di riconoscimento della grafia basato su LSTM. Il sistema accetta le coordinate della penna come input e produce i caratteri riconosciuti come output. La riga superiore mostra i caratteri riconosciuti, la seconda riga mostra gli stati delle celle di memoria selezionate, la terza riga visualizza la scrittura effettiva con le coordinate della penna e la quarta riga illustra il gradiente retropropagato alle posizioni XY, indicando l'impatto degli eventi passati su decisioni di riconoscimento dei caratteri.

LSTM ha dimostrato di essere un approccio potente per l'addestramento di reti neurali ricorrenti, consentendo l'acquisizione e l'utilizzo di dipendenze a lungo termine nei dati sequenziali.

Lecture 7.5 — Long term Short term memory [Neural Networks for Machine Learning]
Lecture 7.5 — Long term Short term memory [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
For cool updates on AI research, follow me at https://twitter.com/iamvriad.Lecture from the course Neural Networks for Machine Learning, as taught by Geoffre...
 

Lezione 8.1 — Una breve panoramica sull'ottimizzazione Hessian-free



Lezione 8.1 — Una breve panoramica dell'ottimizzazione senza hessian [Reti neurali per l'apprendimento automatico]

L'ottimizzatore Hessian-free è un algoritmo complesso utilizzato per addestrare reti neurali ricorrenti in modo efficace. Anche se non approfondirò tutti i dettagli, fornirò una comprensione generale di come funziona.

Quando si addestrano le reti neurali, l'obiettivo è ridurre al minimo l'errore. L'ottimizzatore determina la direzione e la distanza in cui spostarsi per ottenere la massima riduzione dell'errore. La riduzione dipende dal rapporto gradiente/curvatura, assumendo una superficie di errore quadratica concava verso l'alto. Il metodo di Newton affronta la limitazione della discesa più ripida trasformando le superfici di errore ellittiche in circolari. Lo fa moltiplicando il gradiente per l'inverso della matrice di curvatura, nota anche come Hessian. Tuttavia, l'inversione della matrice Hessiana non è fattibile per grandi reti neurali a causa delle sue dimensioni. Per ovviare a questo, metodi approssimati come Hessian-free e L-BFGS utilizzano matrici di rango inferiore per approssimare la curvatura. Hessian-free approssima la matrice di curvatura e utilizza il gradiente coniugato, un metodo che riduce al minimo l'errore in una direzione alla volta. Evita di interrompere la minimizzazione precedente scegliendo direzioni coniugate che non alterano i gradienti delle direzioni precedenti.

Il gradiente coniugato trova in modo efficiente il minimo globale di una superficie quadratica n-dimensionale in n passaggi o meno. Raggiunge ciò riducendo l'errore vicino al valore minimo in molti meno passaggi rispetto a n. Può essere applicato direttamente a superfici di errore non quadratiche, come quelle nelle reti neurali multistrato, e funziona bene con grandi mini-batch. L'ottimizzatore senza Hessian combina l'approssimazione quadratica e il gradiente coniugato per migliorare in modo iterativo l'approssimazione alla superficie di errore reale e avvicinarsi al minimo.

L'ottimizzatore Hessian-free esegue innanzitutto un'approssimazione quadratica iniziale alla vera superficie di errore. Quindi applica il gradiente coniugato per minimizzare l'errore su questa approssimazione quadratica. In tal modo, si avvicina a un punto minimo su questa approssimazione. Successivamente, l'ottimizzatore effettua una nuova approssimazione alla matrice di curvatura e ripete il processo. Continua in modo iterativo, perfezionando l'approssimazione e minimizzando l'errore utilizzando il gradiente coniugato. Questo processo iterativo aiuta l'ottimizzatore ad avvicinarsi gradualmente al vero minimo della superficie di errore.

Nelle reti neurali ricorrenti, è importante aggiungere una penalità per i grandi cambiamenti nelle attività nascoste. Ciò impedisce effetti eccessivi causati da variazioni di peso nelle prime fasi che si propagano attraverso la sequenza. Penalizzando i cambiamenti nelle attività nascoste, l'ottimizzatore garantisce stabilità e previene risultati indesiderati.

L'ottimizzatore Hessian-free combina l'approssimazione quadratica, la minimizzazione del gradiente coniugato e la penalità per i cambiamenti di attività nascosti per addestrare reti neurali ricorrenti in modo efficace. Raggiunge un'ottimizzazione efficiente e accurata migliorando in modo iterativo l'approssimazione e riducendo al minimo l'errore.

Lecture 8.1 — A brief overview of Hessian-free optimization [Neural Networks for Machine Learning]
Lecture 8.1 — A brief overview of Hessian-free optimization [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
 

Lezione 8.2 — Modellazione di stringhe di caratteri


Lezione 8.2 — Modellazione di stringhe di caratteri [Reti Neurali per Machine Learning]

Applicheremo ora l'ottimizzazione Hessian-free al compito di modellare le stringhe di caratteri da Wikipedia. In genere, quando si modella il linguaggio, si lavora con stringhe di parole. Tuttavia, poiché il Web è composto da stringhe di caratteri, la modellazione delle informazioni a livello di carattere può fornire un approccio più diretto.

La modellazione di stringhe di caratteri presenta sfide uniche, come gestire i morfemi, scomporre le parole in unità significative e gestire linguaggi con proprietà agglutinanti. Concentrandoci sulla modellazione a livello di carattere, evitiamo le complessità associate alla pre-elaborazione del testo in parole e possiamo acquisire direttamente schemi e informazioni a livello di carattere. Per raggiungere questo obiettivo, utilizziamo una rete neurale ricorrente (RNN) con connessioni moltiplicative. L'RNN è costituito da stati nascosti, con 1500 unità nascoste in questo caso. La dinamica dello stato nascosto comporta la considerazione del carattere corrente e dello stato nascosto precedente per calcolare il nuovo stato nascosto. Successivamente, l'RNN tenta di prevedere il carattere successivo utilizzando uno strato softmax, assegnando probabilità a ciascun carattere possibile.

Piuttosto che utilizzare una struttura RNN tradizionale, utilizziamo un approccio diverso che produce risultati migliori. Organizziamo tutte le possibili stringhe di caratteri in una struttura ad albero, con ogni carattere che influenza la transizione dello stato nascosto. Per rappresentare questo albero, utilizziamo vettori di stato nascosti per acquisire le informazioni per ciascun nodo. Questo ci consente di condividere in modo efficiente le informazioni tra nodi simili, migliorando le prestazioni complessive del modello. Per implementare in modo efficiente le transizioni specifiche del personaggio, introduciamo connessioni moltiplicative utilizzando fattori. Ogni fattore calcola una somma ponderata basata su due gruppi di input e utilizza il risultato per ridimensionare i pesi in uscita. Incorporando fattori specifici del carattere, possiamo determinare la matrice di transizione che guida l'evoluzione dello stato nascosto in base al carattere corrente.

Questo approccio ci consente di catturare la complessità della modellazione del linguaggio a livello di carattere utilizzando in modo efficiente i parametri. Invece di mantenere matrici di peso separate per ogni personaggio, sfruttiamo le somiglianze tra i personaggi per condividere i parametri. Questa condivisione dei parametri aiuta a prevenire l'overfitting e riduce il carico computazionale.

Utilizziamo l'ottimizzazione senza Hessian per modellare le stringhe di caratteri da Wikipedia. Utilizzando connessioni moltiplicative e fattori specifici del carattere, possiamo catturare in modo efficiente le transizioni tra stati nascosti in base al carattere corrente, migliorando così le prestazioni di modellazione.

Lecture 8.2 — Modeling character strings [Neural Networks for Machine Learning]
Lecture 8.2 — Modeling character strings [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
Motivazione: