Apprendimento automatico e Reti Neurali - pagina 53

 

Lezione 2.2 — Perceptron: reti neurali di prima generazione



Lezione 2.2 — Perceptron: reti neurali di prima generazione [Neural Networks for Machine Learning]

I percettroni, una classe di algoritmi per l'apprendimento automatico, furono studiati per la prima volta all'inizio degli anni '60. Inizialmente, hanno mostrato grandi promesse come dispositivi di apprendimento, ma i loro limiti sono stati successivamente rivelati da Minsky e Papert, portando a un calo della loro popolarità. Minsky e Papert hanno dimostrato che i percettroni erano piuttosto limitati nella loro capacità di apprendere schemi complessi nei compiti di riconoscimento di schemi statistici.

Nel campo del riconoscimento di modelli statistici, viene seguito un approccio standard per riconoscere i modelli. Innanzitutto, i dati di input grezzi vengono elaborati e convertiti in un set o vettore di attivazioni di funzionalità. Questa conversione viene eseguita utilizzando programmi predefiniti basati sul buon senso, in cui l'esperienza umana determina quali caratteristiche sono rilevanti per l'attività da svolgere. È importante notare che questa fase di pre-elaborazione non comporta l'apprendimento. La selezione delle caratteristiche appropriate è un passaggio cruciale e spesso comporta prove ed errori. Vengono provate diverse caratteristiche e la loro efficacia viene valutata. Attraverso questo processo iterativo, viene infine identificato un insieme di caratteristiche che consentono alla successiva fase di apprendimento di risolvere efficacemente il problema.

La fase di apprendimento nel riconoscimento di modelli statistici comporta la determinazione dei pesi associati a ciascuna attivazione di funzionalità. Questi pesi rappresentano la forza dell'evidenza che ciascuna caratteristica fornisce a favore o contro l'ipotesi che l'input corrente appartenga a un particolare modello o classe. Sommando le attivazioni delle funzionalità ponderate, si ottiene un punteggio di prova totale, che viene confrontato con una soglia. Se l'evidenza supera la soglia, il vettore di input viene classificato come un esempio positivo del modello riconosciuto.

I percettroni sono un tipo specifico di sistema di riconoscimento di modelli statistici. Sebbene esistano vari tipi di percettroni, la forma standard, indicata da Rosenblatt come percettrone alfa, è costituita da unità di input che vengono trasformate in attivazioni di funzioni. Questa trasformazione può assomigliare al comportamento dei neuroni, ma è importante notare che questa fase del sistema non comporta l'apprendimento. Una volta ottenute le attivazioni delle funzionalità, i pesi vengono appresi utilizzando un algoritmo di apprendimento.

I percettroni hanno acquisito importanza negli anni '60 grazie al lavoro di Frank Rosenblatt, che li ha ampiamente studiati e descritti nel suo libro "Principles of Neurodynamics". Il libro presentava diversi tipi di percettroni ed era pieno di idee innovative. Uno dei contributi più notevoli è stato un potente algoritmo di apprendimento associato ai percettroni, che ha generato grandi aspettative per le loro capacità.

Tuttavia, l'entusiasmo iniziale che circondava i percettroni fu accolto con scetticismo quando si scoprì che il loro algoritmo di apprendimento aveva dei limiti. Ad esempio, sono state fatte affermazioni esagerate sulla loro capacità di distinguere tra immagini parzialmente oscurate di carri armati e camion. Queste affermazioni sono state smentite quando è stato rivelato che i perceptron stavano semplicemente misurando l'intensità totale dei pixel, un compito che gli esseri umani eseguono con maggiore sensibilità. Questo tipo di malinteso ha offuscato la reputazione del percettrone e ha portato a dubbi sull'efficacia dei modelli di reti neurali nel loro insieme.

Nel 1969, Minsky e Papert pubblicarono un libro fondamentale intitolato "Perceptrons" che analizzava criticamente le capacità dei perceptron e ne evidenziava i limiti. Tuttavia, il campo più ampio dell'intelligenza artificiale ha erroneamente estrapolato queste limitazioni a tutti i modelli di rete neurale. La convinzione prevalente divenne che Minsky e Papert avessero dimostrato che i modelli di rete neurale erano poco pratici e incapaci di apprendere compiti complessi. In realtà, le scoperte di Minsky e Papert erano specifiche per i percettroni che avevano studiato e non invalidavano il potenziale delle reti neurali nel loro insieme.

Vale la pena notare che la procedura di convergenza del percettrone, che esploreremo tra poco, continua ad essere ampiamente utilizzata oggi per compiti che coinvolgono grandi vettori di caratteristiche. In effetti, le principali aziende come Google utilizzano algoritmi basati su perceptron per prevedere i risultati sulla base di vasti set di funzionalità.

L'unità decisionale in un percettrone è un neurone a soglia binaria, un tipo di neurone che è stato incontrato in precedenza nei modelli di rete neurale. Per rinfrescare la nostra comprensione, questi neuroni calcolano una somma ponderata di input ricevuti da altri neuroni, aggiungono un termine di polarizzazione e generano un output pari a uno se la somma supera lo zero, producendo altrimenti un output pari a zero.

Per semplificare il processo di apprendimento, i pregiudizi possono essere trattati come pesi aumentando ogni vettore di input con un input aggiuntivo di valore costante uno. In tal modo, il bias viene incorporato come peso su questa riga di input aggiuntiva, eliminando la necessità di una regola di apprendimento separata per i bias. In sostanza, il bias diventa equivalente a un peso, il cui valore è il negativo della soglia.

Ora, esploriamo la procedura di apprendimento del percettrone, che è sorprendentemente potente e garantisce la convergenza verso una soluzione. Tuttavia, è importante considerare alcuni avvertimenti relativi alla sua garanzia, che verranno discussi in seguito.

Per iniziare, includiamo un componente extra con valore uno in ogni vettore di input. Possiamo quindi concentrarci sui pesi e ignorare i pregiudizi poiché ora sono trattati come pesi sulla riga di input aggiuntiva. I casi di formazione sono selezionati in base a qualsiasi politica che garantisca che ogni caso sia scelto entro un lasso di tempo ragionevole, sebbene la definizione precisa di "tempo ragionevole" possa variare a seconda del contesto.

Dopo aver selezionato un caso di addestramento, valutiamo l'output generato dal perceptron e lo confrontiamo con l'output atteso. Se l'output è corretto, indicando che la decisione del percettrone è allineata con la classificazione desiderata, lasciamo invariati i pesi. Tuttavia, se l'output non è corretto, regoliamo i pesi in base alle seguenti regole:

  1. Se l'output è zero quando dovrebbe essere uno (cioè, il perceptron rifiuta erroneamente un input), aggiungiamo il vettore input al vettore peso del perceptron.
  2. Se l'output è uno quando dovrebbe essere zero (cioè, il perceptron accetta erroneamente un input), sottraiamo il vettore input dal vettore peso del perceptron.

Sorprendentemente, questa semplice procedura di apprendimento è garantita per trovare una serie di pesi che producono l'output corretto per ogni caso di addestramento. Tuttavia, deve essere soddisfatta una condizione importante: deve esistere un insieme fattibile di pesi in grado di classificare correttamente tutti i casi formativi. Sfortunatamente, per molti problemi interessanti, un tale insieme fattibile di pesi potrebbe non esistere.

L'esistenza di un insieme ammissibile di pesi dipende fortemente dalla scelta delle caratteristiche utilizzate. Per molti problemi, la sfida fondamentale sta nel determinare le caratteristiche più appropriate per catturare i modelli rilevanti. Se vengono selezionate le caratteristiche giuste, il processo di apprendimento diventa fattibile ed efficace. D'altra parte, se vengono scelte caratteristiche inadeguate, l'apprendimento diventa impossibile e l'obiettivo principale si sposta sulla selezione delle caratteristiche.

In conclusione, i percettroni hanno svolto un ruolo significativo nello sviluppo iniziale dei modelli di reti neurali. Mentre i loro limiti sono stati rivelati da Minsky e Papert, è importante notare che le loro scoperte erano specifiche per i perceptron che hanno esaminato e non hanno invalidato il potenziale più ampio delle reti neurali. La procedura di convergenza del percettrone rimane uno strumento prezioso, in particolare per le attività che coinvolgono grandi vettori di caratteristiche. Tuttavia, la chiave per il successo del riconoscimento del modello sta nella selezione delle caratteristiche appropriate, poiché l'utilizzo delle caratteristiche giuste facilita notevolmente il processo di apprendimento, mentre l'utilizzo di funzionalità inadeguate può rendere impossibile l'apprendimento.

Lecture 2.2 — Perceptrons: first-generation neural networks [Neural Networks for Machine Learning]
Lecture 2.2 — Perceptrons: first-generation neural networks [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 2.3 — Una visione geometrica dei percettroni



Lezione 2.3 — Una visione geometrica dei percettroni [Reti neurali per l'apprendimento automatico]

In questo video, approfondiremo la comprensione geometrica di come apprendono i percettroni. Per fare questo, dobbiamo pensare in termini di spazio dei pesi, uno spazio ad alta dimensione in cui ogni punto corrisponde a una specifica configurazione di tutti i pesi. In questo spazio, possiamo rappresentare i casi di addestramento come piani e il processo di apprendimento comporta il posizionamento del vettore dei pesi sul lato corretto di tutti i piani di addestramento.

Per coloro che non sono esperti in matematica, questo potrebbe essere più impegnativo del materiale precedente. Potrebbe essere necessario dedicare molto tempo per comprendere il contenuto in arrivo, in particolare se non si ha familiarità con il pensiero sugli iperpiani negli spazi ad alta dimensione. Dovrai sentirti a tuo agio nel visualizzare uno spazio a 14 dimensioni visualizzando prima uno spazio tridimensionale e poi ricordandoti in modo udibile la dimensionalità. Può sembrare strano, ma è una pratica comune per aiutare la comprensione.

Quando si ha a che fare con gli iperpiani in uno spazio a 14 dimensioni, la complessità aumenta in modo significativo, in modo simile alla transizione da uno spazio 2D a uno spazio 3D. È fondamentale capire che uno spazio a 14 dimensioni è vasto e intricato. Con questo in mente, iniziamo concentrandoci sullo spazio del peso.

Lo spazio peso è uno spazio che ha una dimensione per ogni peso nel percettrone. Un punto nello spazio dei pesi rappresenta una configurazione specifica di tutti i pesi, supponendo di aver eliminato la soglia. Ogni caso di addestramento può essere rappresentato come un iperpiano passante per l'origine nello spazio dei pesi. Di conseguenza, i punti in questo spazio corrispondono ai vettori peso, mentre i casi di addestramento corrispondono ai piani.

Per un particolare caso di addestramento, i pesi devono trovarsi su un lato dell'iperpiano per produrre l'output corretto. Visualizziamo questo concetto attraverso un esempio. Considera un caso di formazione in cui la risposta corretta è una. Il vettore del peso deve trovarsi sullo stesso lato dell'iperpiano della direzione indicata dal vettore di addestramento. Qualsiasi vettore di peso su quel lato avrà un angolo con il vettore di input inferiore a 90 gradi, risultando in un prodotto scalare positivo. Poiché abbiamo eliminato la soglia, il perceptron ne produrrà una, fornendo la risposta corretta.

Al contrario, se un vettore di peso si trova dalla parte sbagliata del piano, il suo angolo con il vettore di input supererà i 90 gradi, producendo un prodotto scalare negativo. Di conseguenza, il perceptron produrrà zero, portando a una risposta errata.

Riassumendo, i vettori peso su un lato del piano danno la risposta corretta, mentre quelli sull'altro lato danno la risposta sbagliata. Esaminiamo ora un diverso caso di addestramento in cui la risposta corretta è zero.

In questo caso, qualsiasi vettore di peso che forma un angolo inferiore a 90 gradi con il vettore di input risulterà in un prodotto scalare positivo, facendo sì che il perceptron ne emetta uno, portando a una risposta errata. Al contrario, i vettori peso sull'altro lato del piano, con un angolo superiore a 90 gradi, produrranno un prodotto scalare minore di zero, e il perceptron produrrà zero, fornendo correttamente la risposta.

Uniamo questi due casi di allenamento in un'unica immagine dello spazio del peso. Lo spazio dei pesi diventa affollato ed emerge un cono di possibili vettori di peso. Qualsiasi vettore di peso all'interno di questo cono produrrà la risposta corretta per entrambi i casi di addestramento. Vale la pena notare che l'esistenza di un tale cono non è garantita. Potrebbero esserci scenari in cui nessun vettore di peso fornisce le risposte corrette per tutti i casi di formazione. Tuttavia, se tali vettori di peso esistono, formeranno un cono.

L'algoritmo di apprendimento considera i casi di addestramento uno per uno, regolando il vettore del peso in modo che alla fine si trovi all'interno di questo cono. È importante osservare che se abbiamo due buoni vettori di peso che funzionano per tutti i casi di allenamento, anche la loro media si troverà all'interno del cono. Ciò implica che il problema è convesso e la media di due soluzioni è essa stessa una soluzione. I problemi di apprendimento convesso semplificano il processo nell'apprendimento automatico.

Comprendere lo spazio del peso e la relazione tra i vettori del peso e i casi di addestramento fornisce una visione geometrica del modo in cui apprendono i percettroni. L'obiettivo è trovare un vettore dei pesi che si trovi all'interno del cono delle possibili soluzioni, che garantisca una corretta classificazione per tutti i casi di addestramento.

Lecture 2.3 — A geometrical view of perceptrons [Neural Networks for Machine Learning]
Lecture 2.3 — A geometrical view of perceptrons [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 2.4 — Perché l'apprendimento funziona



Lezione 2.4 — Perché l'apprendimento funziona [Reti neurali per l'apprendimento automatico]

In questo video, miriamo a presentare una prova che la procedura di apprendimento del percettrone alla fine porterà i pesi a convergere all'interno del cono delle soluzioni ammissibili. Tuttavia, voglio sottolineare che questo corso si concentra principalmente sugli aspetti ingegneristici piuttosto che su prove rigorose. Ci saranno poche prove durante il corso. Tuttavia, capire come i percettroni alla fine trovano la risposta corretta fornisce preziose informazioni.

Per costruire la nostra dimostrazione, sfrutteremo la nostra comprensione geometrica dello spazio dei pesi e il processo di apprendimento del percettrone. Assumiamo l'esistenza di un vettore di peso fattibile che fornisca la risposta corretta per tutti i casi di addestramento. Nel diagramma, questo è rappresentato dal punto verde.

L'idea chiave nella nostra dimostrazione è che ogni volta che il percettrone classifica erroneamente un caso di addestramento, l'attuale vettore di peso verrà aggiornato in modo da avvicinarlo a tutti i possibili vettori di peso. Possiamo misurare la distanza al quadrato tra il vettore dei pesi corrente e un vettore dei pesi ammissibile come la somma di una distanza al quadrato lungo la linea del vettore di input (definizione del caso di addestramento) e un'altra distanza al quadrato ortogonale a quella linea. La distanza al quadrato ortogonale rimane costante, mentre la distanza lungo la linea del vettore di input diminuisce.

Sebbene questa affermazione sembri promettente, incontriamo un problema illustrato dal vettore del peso ammissibile dell'oro nel diagramma. Si trova proprio sul lato destro del piano definito da uno dei casi di addestramento, mentre il vettore del peso corrente è sul lato sbagliato. Inoltre, il vettore di input è relativamente grande, facendo sì che l'aggiunta del vettore di input allontani ulteriormente il vettore del peso corrente dal vettore del peso ammissibile dell'oro. Di conseguenza, la nostra richiesta iniziale fallisce.

Tuttavia, possiamo rimediare introducendo il concetto di un vettore di peso generosamente ammissibile. Questi vettori di peso non solo classificano correttamente tutti i casi di addestramento, ma lo fanno anche con un margine uguale o maggiore della lunghezza del vettore di input per ciascun caso. All'interno del cono delle soluzioni ammissibili, abbiamo un altro cono di soluzioni generosamente ammissibili.

Con questo aggiustamento, la nostra prova diventa valida. Possiamo ora affermare che ogni volta che il percettrone classifica erroneamente un caso, la distanza al quadrato da tutti i vettori di peso generosamente ammissibili diminuisce di almeno la lunghezza al quadrato del vettore di input. Questo aggiornamento assicura che il vettore del peso si avvicini alle soluzioni generosamente fattibili.

Anche se qui non forniremo una prova formale, questo schizzo informale dimostra il processo di convergenza. Se i vettori di input non sono infinitamente piccoli, la distanza al quadrato da tutti i vettori di peso generosamente ammissibili diminuisce di almeno la lunghezza al quadrato del vettore di input dopo un numero finito di errori. Di conseguenza, il vettore dei pesi deve eventualmente risiedere all'interno della regione ammissibile, ammesso che esista. Non deve necessariamente trovarsi nella regione generosamente fattibile, ma almeno all'interno della regione fattibile per evitare di commettere ulteriori errori.

Per riassumere, questa è una panoramica informale della prova che dimostra che la procedura di convergenza del percettrone funziona. Tuttavia, è essenziale notare che l'intera dimostrazione si basa sull'ipotesi che esista un vettore dei pesi generosamente ammissibile. Se tale vettore non esiste, la dimostrazione fallisce.

Lecture 2.4 — Why the learning works [Neural Networks for Machine Learning]
Lecture 2.4 — Why the learning works [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 2.5 — Cosa non possono fare i percettroni



Lezione 2.5 — Cosa non possono fare i percettroni [Reti neurali per l'apprendimento automatico]

In questo video esploreremo i limiti dei percettroni, che derivano dai tipi di funzioni utilizzate. L'efficacia dei percettroni dipende fortemente dalla scelta delle caratteristiche. Con le caratteristiche giuste, i percettroni possono essere incredibilmente versatili, ma con le caratteristiche sbagliate, le loro capacità di apprendimento sono fortemente limitate. Questa limitazione ha portato i perceptron a perdere il favore in passato. Mette in evidenza la sfida di apprendere le caratteristiche appropriate, che è l'aspetto cruciale del processo di apprendimento.

Tuttavia, anche senza funzioni di apprendimento, i percettroni possono ancora ottenere molto. Ad esempio, in compiti come determinare la plausibilità di una frase inglese, si potrebbero definire manualmente numerose caratteristiche e apprenderne il peso per decidere la probabilità che una frase sia grammaticalmente corretta. Tuttavia, a lungo termine, le funzionalità di apprendimento diventano necessarie.

La ricerca sul perceptron ha affrontato battute d'arresto alla fine degli anni '60 e all'inizio degli anni '70, quando si è scoperto che i perceptron avevano limitazioni significative. Scegliendo le funzioni manualmente e incorporando un numero sufficiente di funzioni, i percettroni possono svolgere quasi tutte le attività. Ad esempio, se consideriamo i vettori di input binari e creiamo unità di funzionalità separate che si attivano in base a specifici vettori di input binari, possiamo ottenere qualsiasi discriminazione sui vettori di input binari. Tuttavia, questo approccio non è pratico per la risoluzione dei problemi del mondo reale poiché richiede un numero eccessivo di unità di funzionalità, ostacolando la generalizzazione. Il tentativo di generalizzare da un sottoinsieme di casi ignorandone altri è inutile perché per i casi rimanenti sarebbero necessarie nuove unità di funzionalità e determinare i pesi per queste nuove unità di funzionalità è impegnativo una volta completata la selezione manuale.

Esistono vincoli rigorosi su ciò che i percettroni possono apprendere una volta stabilite le unità delle caratteristiche e i loro pesi. Esaminiamo un esempio classico per comprendere queste limitazioni. Vogliamo determinare se un'unità decisionale di soglia binaria può imparare a identificare se due caratteristiche hanno lo stesso valore. Abbiamo due casi positivi e due casi negativi, ciascuno definito da funzioni a bit singolo con valori di 1 o 0. I casi positivi si verificano quando entrambe le funzioni sono attive (1) o quando entrambe le funzioni sono disattivate (0), mentre i casi negativi i casi si verificano quando una funzione è attiva (1) e l'altra è disattivata (0). Il compito sembra semplice, ma algebricamente si può dimostrare che è impossibile soddisfare tutte e quattro le disuguaglianze formate da queste coppie input-output. Di conseguenza, non è possibile trovare pesi che consentano al percettrone di fornire l'output corretto per tutti e quattro i casi.

Questa limitazione può essere compresa anche geometricamente. Immaginiamo uno spazio dati in cui ogni punto rappresenta un punto dati e i vettori di peso definiscono piani perpendicolari ai punti dati. Per discriminare correttamente, il piano dei pesi dovrebbe separare i casi positivi dai casi negativi. Tuttavia, esistono insiemi di casi di addestramento che non sono separabili linearmente, il che significa che nessun iperpiano può separare correttamente i casi in cui l'output dovrebbe essere 1 da quelli in cui l'output dovrebbe essere 0. Questa incapacità di separare correttamente i casi è nota come "insieme di casi di addestramento che non sono linearmente separabili."

Un altro esempio devastante per i perceptron riguarda il riconoscimento di modelli che mantengono la loro identità anche se tradotti con wraparound. I perceptron non riescono a discriminare tra pattern con lo stesso numero di pixel se la discriminazione deve funzionare con pattern tradotti e avvolti. Questa limitazione diventa evidente quando si considerano i pattern A e B. Il pattern A ha quattro pixel "on" disposti in una forma simile a un codice a barre, e anche il pattern B ha quattro pixel "on" disposti in modo diverso. Quando vengono tradotti con wraparound, i percettroni non possono imparare a discriminare tra questi schemi. Il teorema dell'invarianza di gruppo di Minsky e Papert afferma che i percettroni non possono riconoscere i modelli durante la traduzione se è consentito l'avvolgimento. Questo teorema è stato particolarmente significativo nella storia dei percettroni perché il riconoscimento dei modelli mira a identificare i modelli nonostante le trasformazioni come la traduzione.

Il teorema ha rivelato che i percettroni, così come sono stati originariamente formulati, non sono in grado di gestire attività di riconoscimento di modelli che richiedono invarianza di traduzione con avvolgimento. Questa limitazione ha notevolmente limitato le loro applicazioni pratiche e ha portato a un calo dell'interesse e della ricerca sui perceptron durante la fine degli anni '60 e l'inizio degli anni '70. Tuttavia, è importante notare che queste limitazioni si applicano solo ai percettroni a strato singolo con unità di soglia binarie. Il campo delle reti neurali artificiali ha continuato ad evolversi e superare queste limitazioni con lo sviluppo di modelli più avanzati, come i percettroni multistrato (MLP) e le reti neurali convoluzionali (CNN). Gli MLP introducono livelli nascosti tra i livelli di input e output, consentendo rappresentazioni più complesse e flessibili delle caratteristiche. Incorporando funzioni di attivazione non lineari e utilizzando tecniche come la retropropagazione per la regolazione del peso, le MLP possono superare la limitazione della separabilità lineare dei percettroni a strato singolo.

Le CNN, d'altra parte, sono state specificamente progettate per affrontare il problema del riconoscimento dei modelli e della classificazione delle immagini. Impiegano una struttura gerarchica con livelli convoluzionali che estraggono caratteristiche locali e livelli di raggruppamento che catturano l'invarianza spaziale. Le CNN hanno dimostrato un notevole successo in attività come il riconoscimento di immagini, il rilevamento di oggetti e l'elaborazione del linguaggio naturale.

I limiti dei percettroni hanno evidenziato l'importanza dell'apprendimento delle caratteristiche, della non linearità e delle rappresentazioni gerarchiche nelle reti neurali. I successivi progressi nel campo hanno portato allo sviluppo di modelli più sofisticati con migliori capacità di apprendimento e applicazioni più ampie.

Sebbene i perceptron abbiano limitazioni nella loro capacità di apprendere caratteristiche complesse e gestire determinati compiti di riconoscimento di modelli, queste limitazioni sono state affrontate attraverso lo sviluppo di architetture di reti neurali più avanzate. MLP e CNN, tra gli altri modelli, hanno superato le restrizioni dei percettroni a strato singolo e sono diventati potenti strumenti in vari domini dell'intelligenza artificiale.

Lecture 2.5 — What perceptrons can't do [Neural Networks for Machine Learning]
Lecture 2.5 — What perceptrons can't do [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 3.1 — Imparare i pesi di un neurone lineare



Lezione 3.1 — Imparare i pesi di un neurone lineare [Reti neurali per l'apprendimento automatico]

il suo video introduce l'algoritmo di apprendimento per un neurone lineare, che ottiene qualcosa di diverso dall'algoritmo di apprendimento per un percettrone. In un perceptron, i pesi si avvicinano sempre a un buon insieme di pesi, mentre in un neurone lineare gli output si avvicinano sempre agli output target.

La procedura di convergenza del percettrone garantisce che la modifica dei pesi ci avvicini a un buon insieme di pesi. Tuttavia, questa garanzia non può essere estesa a reti più complesse perché la media di due buoni set di pesi può risultare in un cattivo set di pesi. Pertanto, per le reti neurali multistrato, non utilizziamo la procedura di apprendimento del percettrone e anche la prova del miglioramento durante l'apprendimento è diversa.

Le reti neurali multistrato, spesso chiamate perceptron multistrato (MLP), richiedono un approccio diverso per mostrare i progressi. Invece di mostrare che i pesi si avvicinano a un buon insieme di pesi, dimostriamo che i valori di output effettivi si avvicinano ai valori di output target. Questo vale anche per problemi non convessi, dove la media dei pesi di due buone soluzioni non produce una buona soluzione.

L'algoritmo di apprendimento per un neurone lineare è illustrato attraverso un esempio giocattolo. Si tratta di iniziare con ipotesi casuali per i prezzi delle porzioni e quindi adattare queste ipotesi in modo iterativo per adattarle ai prezzi osservati. L'approccio iterativo utilizza la regola delta per aggiornare i pesi in base al tasso di apprendimento, al numero di porzioni e all'errore residuo.

La regola delta è derivata differenziando la misura dell'errore rispetto a uno dei pesi. La regola di apprendimento afferma che la variazione di un peso è pari al tasso di apprendimento moltiplicato per il valore di input e la differenza tra l'obiettivo e gli output effettivi. Applicando in modo iterativo la regola delta, i pesi possono essere regolati per ridurre al minimo l'errore.

La procedura di apprendimento che utilizza la regola delta non garantisce che i pesi individuali miglioreranno sempre. Tuttavia, la differenza tra l'obiettivo e le realizzazioni stimate tende a migliorare. Il tasso di apprendimento determina la velocità di apprendimento e, con un tasso di apprendimento sufficientemente basso, i pesi possono avvicinarsi alla migliore approssimazione per i casi di addestramento dati.

È importante notare che anche per i sistemi lineari il processo di apprendimento può essere lento, soprattutto quando le dimensioni di input sono altamente correlate. Determinare quanto peso dovrebbe essere attribuito a ciascuna dimensione di input diventa difficile in questi casi. Inoltre, esiste una somiglianza tra la versione online della regola delta e la regola di apprendimento del percettrone, in cui il vettore del peso viene regolato in base al vettore di input e all'errore. Tuttavia, la regola delta incorpora il tasso di apprendimento e l'errore residuo. La scelta di un tasso di apprendimento adeguato è fondamentale per un apprendimento stabile ed efficiente.

Il processo di apprendimento iterativo descritto per il neurone lineare può convergere verso una soluzione che minimizza la misura dell'errore. Tuttavia, è importante notare che potrebbe non esistere una soluzione perfetta che corrisponda esattamente agli output desiderati per tutti i casi di formazione. Invece, l'obiettivo è trovare un insieme di pesi che fornisca la migliore approssimazione e riduca al minimo la misura dell'errore in tutti i casi di addestramento. Rendendo il tasso di apprendimento sufficientemente piccolo e consentendo al processo di apprendimento di continuare per un tempo sufficientemente lungo, possiamo avvicinarci a questa migliore approssimazione.

La velocità di apprendimento può variare, anche per i sistemi lineari. Quando due dimensioni di input sono altamente correlate, diventa difficile determinare il peso da attribuire a ciascuna dimensione di input. Ad esempio, se il numero di porzioni di ketchup e patatine è sempre lo stesso, il processo di apprendimento può richiedere molto tempo per assegnare correttamente il prezzo a ciascun componente.

È interessante notare che esiste una relazione tra la regola delta e la regola di apprendimento per i percettroni. La versione online della regola delta, in cui i pesi vengono aggiornati dopo ogni caso di addestramento, presenta somiglianze con la regola di apprendimento del percettrone. Nell'apprendimento del perceptron, il vettore del peso viene incrementato o decrementato dal vettore di input, ma solo quando si verifica un errore. Nella versione online della regola delta, anche il vettore del peso viene regolato dal vettore di input, ma scalato sia dall'errore residuo che dal tasso di apprendimento.

Una sfida nell'utilizzo della regola delta è selezionare un tasso di apprendimento appropriato. Se il tasso di apprendimento è troppo elevato, il sistema potrebbe diventare instabile, rendendo difficile la convergenza verso una soluzione. D'altra parte, se il tasso di apprendimento è troppo basso, il processo di apprendimento potrebbe impiegare un tempo inutilmente lungo per raggiungere un insieme ragionevole di pesi.

L'algoritmo di apprendimento per un neurone lineare mira a minimizzare l'errore tra gli output target e gli output effettivi. Regola in modo iterativo i pesi utilizzando la regola delta, che incorpora il tasso di apprendimento, i valori di input e la differenza tra l'obiettivo e gli output effettivi. Anche se il processo di apprendimento può essere lento e i pesi potrebbero non migliorare individualmente, l'obiettivo generale è avvicinarsi alla migliore approssimazione per i casi di addestramento dati.

Lecture 3.1 — Learning the weights of a linear neuron [Neural Networks for Machine Learning]
Lecture 3.1 — Learning the weights of a linear neuron [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 3.2 — La superficie di errore per un neurone lineare



Lezione 3.2 — La superficie di errore per un neurone lineare [Neural Networks for Machine Learning]

In questo video esploreremo la superficie di errore di un neurone lineare, che fornisce approfondimenti sul processo di apprendimento. Visualizzando questa superficie, possiamo ottenere una comprensione geometrica di come i pesi vengono appresi in un neurone lineare. Lo spazio che consideriamo è simile allo spazio dei pesi utilizzato nei percettroni ma con una dimensione aggiuntiva.

Immagina uno spazio in cui le dimensioni orizzontali rappresentano i pesi e la dimensione verticale rappresenta l'errore. In questo spazio, le diverse impostazioni del peso sono rappresentate come punti sul piano orizzontale e l'altezza di ciascun punto corrisponde all'errore associato a quell'impostazione del peso, sommato su tutti i casi di allenamento. Per un neurone lineare, gli errori per ciascuna impostazione di peso definiscono una superficie di errore, che assume la forma di una ciotola quadratica. Una sezione trasversale verticale della superficie di errore produce sempre una parabola, mentre una sezione trasversale orizzontale forma un'ellisse. È importante notare che questo comportamento vale solo per i sistemi lineari con errore al quadrato. Passando alle reti neurali non lineari multistrato, la superficie dell'errore diventa più complessa.

Mentre i pesi rimangono entro un intervallo ragionevole, la superficie di errore rimane liscia ma può avere numerosi minimi locali. Per facilitare l'apprendimento, utilizziamo la regola delta, che comporta il calcolo della derivata dell'errore rispetto ai pesi. Regolare i pesi proporzionalmente a questa derivata equivale a eseguire la discesa più ripida sulla superficie dell'errore. La visualizzazione della superficie di errore dall'alto rivela linee di contorno ellittiche. La regola delta ci guida perpendicolarmente a queste curve di livello. Nell'apprendimento batch, dove il gradiente viene calcolato su tutti i casi di addestramento, la regola delta ci porta nella giusta direzione. Tuttavia, possiamo anche utilizzare l'apprendimento online, in cui i pesi vengono aggiornati dopo ogni caso di addestramento, in modo simile ai percettroni. In questo caso la variazione di peso ci sposta verso i piani di vincolo formati dai casi di addestramento.

Alternando i casi di addestramento, possiamo zigzagare verso il punto di soluzione in cui le linee di vincolo si intersecano, indicando i pesi che soddisfano entrambi i casi. Inoltre, l'esame della superficie dell'errore ci consente di comprendere le condizioni che determinano un apprendimento lento. Se l'ellisse che rappresenta le curve di livello è molto allungata, il che si verifica quando le linee corrispondenti a due casi di addestramento sono quasi parallele, il gradiente presenta una proprietà sfavorevole. Il gradiente diventa ampio nella direzione in cui non vogliamo spostarci troppo in basso nella direzione in cui vogliamo fare progressi significativi. Questa discrepanza impedisce un apprendimento efficiente e rende difficile attraversare la struttura simile a un burrone della superficie dell'errore lungo il suo asse allungato.

Visualizzare la superficie di errore di un neurone lineare fornisce preziose informazioni sul processo di apprendimento. Comprendere la geometria della superficie ci aiuta a cogliere il comportamento della regola delta e le sue implicazioni per la velocità di apprendimento.

Lecture 3.2 — The error surface for a linear neuron [Neural Networks for Machine Learning]
Lecture 3.2 — The error surface for a linear neuron [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 3.3 — Apprendimento dei pesi del neurone dell'output logistico


Lezione 3.3 — Apprendimento dei pesi del neurone di output logistico [Neural Networks for Machine Learning]

Per estendere la regola di apprendimento da un neurone lineare a reti multistrato di neuroni non lineari, dobbiamo fare due passi. Innanzitutto, dobbiamo generalizzare la regola di apprendimento per un singolo neurone non lineare, in particolare un neurone logistico. Mentre i neuroni logistici sono usati come esempio, potrebbero essere impiegati anche altri tipi di neuroni non lineari.

Un neurone logistico calcola il suo logit, indicato con z, che è la somma del suo bias e la somma ponderata delle sue linee di input. L'output, indicato come y, è una funzione liscia non lineare del logit. Nel grafico, si può osservare che la funzione si avvicina a zero quando z è grande e negativo, si avvicina a uno quando z è grande e positivo e presenta variazioni intermedie non lineari. La continuità della funzione logistica fornisce derivate convenienti per l'apprendimento. Per ottenere le derivate di un neurone logistico rispetto ai pesi (che è fondamentale per l'apprendimento), calcoliamo prima la derivata del logit stesso rispetto a un peso. Questa derivata si semplifica al valore sulla riga di input, indicato come xi. Analogamente, la derivata del logit rispetto a xi è il peso wi.

La derivata dell'output rispetto al logit può essere espressa in termini dell'output stesso. Nello specifico, se l'output è rappresentato come y, allora dy/dz è dato da y * (1 - y). La derivazione matematica di questo risultato è fornita nella diapositiva successiva e comporta calcoli noiosi ma semplici. Ottenuta la derivata dell'output rispetto al logit e la derivata del logit rispetto al peso, possiamo ora determinare la derivata dell'output rispetto al peso. Applicando la regola della catena, abbiamo dz/dw come xi e dy/dz come y * (1 - y). Di conseguenza, arriviamo a una regola di apprendimento per un neurone logistico che ricorda da vicino la regola delta.

La variazione dell'errore, indicata come de/dwi, quando modifichiamo un peso, si ottiene sommando su tutti i casi di addestramento (n) il prodotto del valore su una riga di input (xin) e il residuo, che è la differenza tra l'output target e l'output effettivo del neurone. Tuttavia, c'è un termine aggiuntivo derivante dalla pendenza della funzione logistica, vale a dire yn * (1 - yn). Con questa leggera modifica della regola delta, arriviamo alla regola di apprendimento della discesa del gradiente per addestrare un neurone logistico.

Applicando la regola di apprendimento della discesa del gradiente a un neurone logistico, possiamo addestrare efficacemente reti multistrato di neuroni non lineari. Questo estende la regola di apprendimento oltre i sistemi lineari e ci consente di affrontare compiti più complessi. Per capire come funziona questa regola di apprendimento nel contesto di reti multistrato, consideriamo come esempio una semplice rete a due strati. Abbiamo uno strato di input con più neuroni e uno strato di output con un singolo neurone logistico. I pesi tra gli strati sono indicati come W e le polarizzazioni come b.

Il processo di apprendimento prevede due fasi. Innanzitutto, calcoliamo l'output della rete per un dato input. Questo viene fatto propagando gli input attraverso la rete, applicando la funzione logistica all'input totale di ciascun neurone (logit) e ottenendo l'output finale. Successivamente, calcoliamo i gradienti dell'errore rispetto ai pesi utilizzando la regola della catena. Partendo dal livello di output, calcoliamo la derivata dell'errore rispetto all'output, che è semplicemente la differenza tra l'output di destinazione e l'output effettivo della rete. Quindi propaghiamo questo gradiente di errore all'indietro attraverso la rete, moltiplicandolo per la derivata della funzione logistica in ciascun neurone per ottenere i gradienti allo strato nascosto. Infine, aggiorniamo i pesi utilizzando i gradienti calcolati e un tasso di apprendimento. La velocità di apprendimento determina la dimensione del passo nell'aggiornamento del peso e può essere regolata per controllare la velocità di apprendimento. L'aggiornamento del peso segue l'equazione: ΔW = learning_rate * error_gradient * input, dove ΔW rappresenta la variazione dei pesi.

Questo processo di propagazione in avanti, propagazione all'indietro dell'errore e aggiornamento del peso viene ripetuto in modo iterativo per un determinato numero di epoche o finché la rete non raggiunge il livello di prestazioni desiderato. Regolando i pesi in modo iterativo, la rete impara gradualmente a fare previsioni migliori o a classificare gli input in modo più accurato. È importante notare che la regola di apprendimento che abbiamo discusso per i neuroni logistici può essere generalizzata anche ad altri tipi di funzioni di attivazione non lineari. La chiave è calcolare accuratamente le derivate delle funzioni di attivazione per propagare efficacemente i gradienti di errore attraverso la rete.

Estendendo la regola di apprendimento dai neuroni lineari ai neuroni logistici e applicandola a reti multistrato, possiamo addestrare modelli non lineari complessi. Questo ci consente di risolvere un'ampia gamma di attività, tra cui il riconoscimento di modelli, la classificazione e la regressione, regolando iterativamente i pesi in base ai gradienti di errore.

Lecture 3.3 — Learning weights of logistic output neuron [Neural Networks for Machine Learning]
Lecture 3.3 — Learning weights of logistic output neuron [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 3.4 — L'algoritmo di backpropagation



Lezione 3.4 — L'algoritmo di backpropagation [Neural Networks for Machine Learning]

Ora che abbiamo coperto i preliminari, approfondiamo la questione centrale dell'apprendimento di più livelli di funzionalità. In questo video, descriveremo finalmente l'algoritmo di backpropagation, emerso negli anni '80 e che ha suscitato un'ondata di interesse per le reti neurali.

Prima di immergerci nella backpropagation, discutiamo prima di un altro algoritmo che non è altrettanto efficace ma che vale la pena menzionare. Una volta che sappiamo come imparare i pesi di un'unità logistica, la prossima sfida è imparare i pesi delle unità nascoste. Le reti neurali senza unità nascoste sono limitate nelle mappature input-output che possono modellare. Mentre uno strato di funzionalità codificate a mano, come in un perceptron, migliora la potenza della rete, la progettazione di tali funzionalità per una nuova attività rimane un processo difficile e manuale.

Idealmente, vorremmo automatizzare il ciclo di progettazione delle funzionalità, consentendo al computer di trovare buone funzionalità senza richiedere intuizioni umane o ripetuti tentativi ed errori. È qui che viene in mente il concetto di apprendimento perturbando i pesi. La perturbazione casuale di un peso è simile a una mutazione e possiamo osservare se migliora le prestazioni della rete. Se le prestazioni migliorano, salviamo quel cambiamento di peso, simile a una forma di apprendimento per rinforzo.

Tuttavia, questo metodo è altamente inefficiente. Per valutare se la modifica di un peso migliora la rete, sono necessari più passaggi in avanti su un insieme rappresentativo di casi di addestramento. Valutare l'impatto di un cambiamento di peso sulla base di un singolo caso di allenamento è inadeguato. Inoltre, con il progredire dell'apprendimento, i grandi cambiamenti nei pesi tendono a peggiorare le cose poiché i valori relativi corretti tra i pesi sono cruciali. Verso la fine dell'apprendimento, non solo è necessario molto tempo per valutare ogni cambiamento di peso, ma i cambiamenti stessi devono essere piccoli.

Esistono modi leggermente migliori per utilizzare le perturbazioni per l'apprendimento. Un approccio consiste nel perturbare tutti i pesi in parallelo e quindi correlare l'aumento delle prestazioni con le variazioni di peso. Tuttavia, questo metodo non fornisce miglioramenti significativi. La sfida sta nella necessità di numerose prove con diverse perturbazioni casuali di tutti i pesi per isolare l'effetto della modifica di un peso in mezzo al rumore causato dalla modifica degli altri.

Un approccio alternativo che mostra qualche miglioramento è quello di perturbare in modo casuale le attività delle unità nascoste invece dei pesi. Una volta stabilito che perturbare l'attività di un'unità nascosta su uno specifico caso di addestramento migliora le prestazioni, è possibile calcolare le variazioni di peso. Poiché ci sono meno attività rispetto ai pesi, l'algoritmo diventa più efficiente. Tuttavia, la backpropagation supera ancora questi metodi in termini di efficienza, con un fattore pari al numero di neuroni nella rete.

L'idea alla base della backpropagation è che mentre potremmo non sapere cosa dovrebbero fare le unità nascoste (da cui il termine "nascosto"), possiamo calcolare quanto velocemente cambia l'errore quando modifichiamo l'attività di un'unità nascosta su un particolare caso di addestramento. Invece di utilizzare le attività delle unità nascoste come stati desiderati, utilizziamo le derivate dell'errore rispetto alle attività. Poiché ogni unità nascosta può influenzare più unità di output, i suoi effetti devono essere combinati, il che può essere fatto in modo efficiente.

Per riassumere l'algoritmo di backpropagation per un singolo caso di addestramento, iniziamo definendo l'errore come la differenza al quadrato tra i valori target delle unità di output ei valori effettivi prodotti dalla rete. Differenziando questo errore, otteniamo l'espressione di come l'errore cambia rispetto all'output di un'unità di output. Possiamo quindi calcolare le derivate dell'errore per le unità nascoste sommando gli effetti di tutte le connessioni in uscita dall'unità nascosta utilizzando le derivate dell'errore precedentemente calcolate del livello superiore.

L'algoritmo di backpropagation ci consente di propagare in modo efficiente le derivate dell'errore da uno strato a quello precedente. Una volta che abbiamo le derivate dell'errore per le unità nascoste, possiamo facilmente calcolare le derivate dell'errore per i pesi che entrano in un'unità nascosta. Questo viene fatto moltiplicando la derivata dell'errore rispetto all'input totale ricevuto dall'unità per l'attività dell'unità nello strato sottostante. Le derivate dell'errore calcolate per i pesi rappresentano il modo in cui l'errore cambia quando modifichiamo un particolare peso.

Ora, delineamo i passaggi coinvolti nell'algoritmo di backpropagation per un singolo caso di addestramento:

  1. Definire l'errore come la differenza al quadrato tra i valori target e i valori di output effettivi della rete.

  2. Calcolare la derivata dell'errore rispetto all'output di ciascuna unità di output applicando la regola della catena, che comporta la moltiplicazione della derivata dell'output rispetto all'input totale per la derivata dell'errore rispetto all'output.

  3. Calcolare la derivata dell'errore rispetto all'uscita di ciascuna unità nascosta sommando gli effetti di tutte le connessioni in uscita dall'unità nascosta. Ciò comporta la moltiplicazione del peso su ciascuna connessione per la derivata dell'errore calcolata nel livello superiore.

  4. Ripetere il passaggio 3 per tutti i livelli nascosti, propagando le derivate dell'errore all'indietro attraverso la rete.

  5. Calcola le derivate dell'errore per i pesi che entrano in ciascuna unità. Questo viene fatto moltiplicando la derivata dell'errore rispetto all'input totale ricevuto dall'unità per l'attività dell'unità nello strato sottostante.

Seguendo questi passaggi, possiamo calcolare in modo efficiente le derivate dell'errore per tutti i pesi nella rete sulla base di un singolo caso di addestramento. L'algoritmo di backpropagation ci permette di capire come la modifica di ogni peso influisca sull'errore complessivo e faciliti il processo di apprendimento. Comprendere e implementare l'algoritmo di backpropagation è fondamentale per l'addestramento di reti neurali profonde con più livelli di funzionalità. Sebbene questa spiegazione possa richiedere uno studio attento, la comprensione dei concetti e dei calcoli sottostanti sarà essenziale per utilizzare efficacemente la retropropagazione nell'addestramento della rete neurale.

Dopo aver calcolato le derivate dell'errore per tutti i pesi nella rete utilizzando l'algoritmo di backpropagation, possiamo utilizzare queste informazioni per aggiornare i pesi e migliorare le prestazioni della rete. Questo processo è noto come aggiustamento del peso o aggiornamento del peso. L'aggiornamento del peso in genere comporta l'uso di un algoritmo di ottimizzazione, come la discesa del gradiente, per regolare in modo iterativo i pesi nella direzione che riduce al minimo l'errore. L'idea di base è aggiornare ciascun peso sottraendo una piccola frazione della derivata dell'errore corrispondente, moltiplicata per un parametro del tasso di apprendimento.

Il tasso di apprendimento determina la dimensione del passo nello spazio del peso e influisce sulla velocità di convergenza del processo di allenamento. La scelta di un tasso di apprendimento appropriato è importante per garantire un apprendimento stabile ed efficiente. Un tasso di apprendimento troppo elevato può far divergere i pesi, mentre un tasso di apprendimento troppo basso può portare a una convergenza lenta. Durante il processo di aggiornamento del peso, è comune aggiornare i pesi in piccoli lotti o anche su un singolo esempio di allenamento alla volta. Questo approccio è noto come discesa del gradiente stocastico o discesa del gradiente mini-batch e aiuta ad accelerare il processo di apprendimento ed evitare di rimanere bloccati negli ottimi locali.

Il processo di aggiornamento del peso viene in genere ripetuto per più epoche, in cui ogni epoca consiste nell'esaminare l'intero set di dati di addestramento. Ciò consente alla rete di regolare gradualmente i pesi in base agli errori accumulati da più esempi di addestramento, migliorando le prestazioni di generalizzazione. È importante notare che la backpropagation e l'aggiornamento del peso vengono eseguiti durante la fase di addestramento di una rete neurale. Una volta che la rete è stata addestrata, può essere utilizzata per fare previsioni su dati nuovi e invisibili semplicemente alimentando l'input attraverso la rete e ottenendo l'output.

La backpropagation e la capacità di apprendere più livelli di funzionalità sono state cruciali per il successo del deep learning. Con l'algoritmo di backpropagation, le reti neurali possono apprendere automaticamente rappresentazioni complesse di dati, consentendo loro di risolvere un'ampia gamma di attività, tra cui il riconoscimento di immagini e parole, l'elaborazione del linguaggio naturale e altro ancora.

L'algoritmo di backpropagation è una tecnica potente per calcolare in modo efficiente le derivate degli errori nelle reti neurali con più livelli. Propagando le informazioni sull'errore all'indietro attraverso la rete, possiamo determinare in che modo i cambiamenti nei pesi influenzano l'errore complessivo. Queste informazioni vengono quindi utilizzate per aggiornare i pesi in modo iterativo, consentendo alla rete di apprendere e migliorare le proprie prestazioni nel tempo.

Lecture 3.4 — The backpropagation algorithm [Neural Networks for Machine Learning]
Lecture 3.4 — The backpropagation algorithm [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 3.5 — Utilizzo delle derivate dalla retropropagazione



Lezione 3.5 — Utilizzo delle derivate dalla backpropagation [Reti Neurali per Machine Learning]

Per apprendere in modo efficiente nelle reti neurali multistrato, è fondamentale ottenere le derivate dell'errore per tutti i pesi. Tuttavia, ci sono molte altre considerazioni che devono essere affrontate per specificare completamente una procedura di apprendimento.

Una di queste considerazioni è determinare la frequenza degli aggiornamenti del peso e prevenire l'overfitting quando si utilizza una rete di grandi dimensioni. L'algoritmo di backpropagation calcola in modo efficiente le derivate per ciascun peso sulla base di un singolo caso di addestramento, ma non è un algoritmo di apprendimento completo. Per sviluppare una corretta procedura di apprendimento, è necessario specificare ulteriori fattori.

I problemi di ottimizzazione entrano in gioco quando si utilizzano le derivate del peso per scoprire un insieme ottimale di pesi. Una domanda è quanto spesso dovrebbero essere aggiornati i pesi. Un approccio consiste nell'aggiornare i pesi dopo ogni caso di addestramento, con conseguente zigzag dovuto a diverse derivate di errore. Tuttavia, in media, piccoli cambiamenti di peso possono portare nella giusta direzione. In alternativa, l'addestramento batch completo implica l'esame di tutti i dati di addestramento, il riepilogo delle derivate di errore dai singoli casi e un piccolo passo in quella direzione. Tuttavia, questo approccio può essere computazionalmente costoso, soprattutto se i pesi iniziali sono scarsi. L'apprendimento in mini-batch offre un compromesso selezionando casualmente un piccolo campione di casi di addestramento per aggiornare i pesi. Ciò riduce lo zigzag pur rimanendo efficiente dal punto di vista computazionale, rendendolo comunemente utilizzato per addestrare reti neurali di grandi dimensioni su set di dati di grandi dimensioni.

Determinare l'entità degli aggiornamenti del peso è un altro problema di ottimizzazione. Invece di scegliere manualmente un tasso di apprendimento fisso, spesso è più sensato adattare il tasso di apprendimento. Ad esempio, se l'errore oscilla, il tasso di apprendimento può essere ridotto, mentre se si fanno progressi costanti, il tasso di apprendimento può essere aumentato. È anche possibile assegnare diversi tassi di apprendimento a diverse connessioni nella rete per consentire ad alcuni pesi di apprendere più rapidamente di altri. Inoltre, piuttosto che seguire rigorosamente la direzione della discesa più ripida, può essere utile esplorare direzioni alternative che portino a una migliore convergenza. Tuttavia, trovare queste direzioni alternative può essere difficile.

La seconda serie di problemi si riferisce a quanto bene i pesi appresi si generalizzano a casi invisibili. I dati di addestramento contengono sia informazioni sulle regolarità che due tipi di rumore. Il primo tipo sono i valori target inaffidabili, che in genere rappresentano un problema minore. Il secondo tipo è l'errore di campionamento, in cui possono sorgere regolarità accidentali a causa degli specifici casi di addestramento scelti. I modelli non possono distinguere tra regolarità accidentali e regolarità vere che si generalizzano bene. Pertanto, i modelli tendono ad adattarsi a entrambi i tipi di regolarità, portando a una scarsa generalizzazione se il modello è troppo complesso.

Per affrontare l'overfitting, sono state sviluppate varie tecniche per reti neurali e altri modelli. Queste tecniche includono il decadimento del peso, in cui i pesi vengono mantenuti piccoli o pari a zero per semplificare il modello, e la condivisione del peso, in cui molti pesi hanno lo stesso valore per ridurre la complessità. L'arresto anticipato implica il monitoraggio di un set di test falso durante l'allenamento e l'arresto quando le prestazioni sul set di test falso iniziano a deteriorarsi. La media del modello comporta l'addestramento di più reti neurali e la media delle loro previsioni per ridurre gli errori. L'adattamento bayesiano delle reti neurali è una forma di calcolo della media del modello che incorpora i principi bayesiani. Il dropout è una tecnica che migliora la robustezza del modello omettendo in modo casuale le unità nascoste durante l'addestramento. La pre-formazione generativa, un approccio più avanzato, sarà discussa più avanti nel corso.

Ottenere derivati di errore per tutti i pesi in una rete multistrato è essenziale per un apprendimento efficiente. Tuttavia, per sviluppare una procedura di apprendimento completa, devono essere considerati e affrontati altri fattori come la frequenza di aggiornamento del peso, la prevenzione dell'overfitting, le tecniche di ottimizzazione e la generalizzazione a casi invisibili.

Lecture 3.5 — Using the derivatives from backpropagation [Neural Networks for Machine Learning]
Lecture 3.5 — Using the derivatives from backpropagation [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 4.1 — Imparare a predire la parola successiva



Lezione 4.1 — Imparare a prevedere la parola successiva [Reti neurali per l'apprendimento automatico]

I prossimi video si concentreranno sull'utilizzo dell'algoritmo di backpropagation per apprendere il significato di una parola attraverso la rappresentazione delle caratteristiche. In questa introduzione, inizieremo con un semplice caso degli anni '80 per illustrare come le informazioni relazionali possono essere trasformate in vettori di caratteristiche utilizzando la retropropagazione.

Il caso riguarda due alberi genealogici, uno inglese e l'altro italiano, con strutture simili. Esprimendo le informazioni in questi alberi genealogici come proposizioni che utilizzano relazioni specifiche (ad esempio, figlio, figlia, padre, madre), possiamo vedere il compito di apprendere queste informazioni relazionali come trovare regolarità all'interno di un insieme di terne.

Invece di cercare regole simboliche, possiamo utilizzare una rete neurale per acquisire queste informazioni prevedendo il terzo termine di una terna dai primi due termini. L'architettura della rete è costituita da più livelli progettati per apprendere rappresentazioni interessanti. Codifichiamo le informazioni utilizzando una rappresentazione neutra, assicurando che tutte le persone siano trattate come entità distinte.

La rete apprende allenandosi su una serie di proposte, regolando gradualmente i pesi utilizzando la retropropagazione. Possiamo esaminare lo strato nascosto responsabile della codifica della persona uno per comprendere le rappresentazioni apprese. Diverse unità in questo livello rivelano caratteristiche come la nazionalità, la generazione e il ramo dell'albero genealogico della persona.

Queste funzionalità sono utili per prevedere la persona di output, poiché catturano le regolarità nel dominio. La rete scopre autonomamente queste funzionalità senza alcuna guida esplicita. Il livello intermedio della rete combina le caratteristiche della persona di input e le caratteristiche della relazione per prevedere le caratteristiche della persona di output.

Le prestazioni della rete possono essere valutate testandola su triple incomplete e osservando quanto bene si generalizza. Con dati di addestramento limitati, raggiunge un buon tasso di precisione per una scelta a 24 vie. Se addestrato su un set di dati più grande, può generalizzare da una frazione più piccola dei dati.

Sebbene l'esempio qui presentato sia un caso giocattolo, in pratica possiamo applicare tecniche simili a database contenenti milioni di fatti relazionali. Addestrando una rete a scoprire rappresentazioni vettoriali di entità e relazioni, possiamo pulire e convalidare efficacemente il database.

Piuttosto che predire il terzo termine dai primi due, possiamo anche stimare la probabilità di correttezza di un fatto utilizzando più termini. Questo approccio richiede esempi di fatti corretti e non corretti per la formazione.

Utilizzando la retropropagazione e le reti neurali, possiamo apprendere rappresentazioni significative dalle informazioni relazionali e fare previsioni o valutare la plausibilità dei fatti in un database.

L'addestramento di una rete neurale per stimare la probabilità della correttezza di un fatto richiede un set di dati contenente una varietà di fatti corretti e una fonte affidabile di fatti errati. Presentando alla rete esempi corretti e incoraggiando un rendimento elevato, esponendola a esempi errati e incoraggiando un rendimento basso, può imparare a distinguere tra fatti plausibili e non plausibili.

Questo approccio fornisce un potente strumento per la pulizia dei database. La rete può segnalare fatti potenzialmente errati o sospetti, consentendo ulteriori indagini e verifiche. Ad esempio, se il database afferma che Bach è nato nel 1902, la rete potrebbe identificarlo come altamente non plausibile in base alle relazioni e ad altri fatti correlati che ha appreso.

Con i progressi nella potenza dei computer e la disponibilità di vasti database contenenti milioni di fatti relazionali, l'applicazione delle reti neurali per scoprire rappresentazioni vettoriali di caratteristiche è diventata più pratica. Sfruttando la capacità delle reti neurali di apprendere modelli e relazioni complessi, possiamo ottenere informazioni preziose e fare previsioni basate sulle rappresentazioni apprese.

Vale la pena notare che l'esempio discusso qui è stato condotto negli anni '80 come dimostrazione delle capacità della retropropagazione e delle reti neurali. Da allora, il campo ha compiuto progressi significativi e i ricercatori hanno applicato tecniche simili a vari domini, tra cui l'elaborazione del linguaggio naturale, la visione artificiale e i sistemi di raccomandazione.

In conclusione, l'utilizzo dell'algoritmo di backpropagation e delle reti neurali per apprendere le rappresentazioni delle caratteristiche dalle informazioni relazionali fornisce un potente approccio per comprendere e fare previsioni basate su set di dati complessi. Addestrando la rete su esempi di fatti corretti e errati, possiamo sfruttare le sue capacità per convalidare e migliorare la qualità dei database, rendendoli più affidabili e utili per varie applicazioni.

Lecture 4.1 — Learning to predict the next word [Neural Networks for Machine Learning]
Lecture 4.1 — Learning to predict the next word [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...